nk
1.0.0
C++ Numerical Computing Runtime
Toggle main menu visibility
Loading...
Searching...
No Matches
linalg/include/nk/linalg/solvers.hpp
Go to the documentation of this file.
1
3
// toolboxes/linalg/include/nk/linalg/solvers.hpp
4
//
5
// Linear-system solvers: linsolve, lsqminnorm, lsqnonneg.
6
// Migrated from toolboxes/builtin/src/language/arrays/{matrix,lsq}.cpp.
7
8
#pragma once
9
10
#include <memory_resource>
11
#include <string>
12
#include <nk/value/value.hpp>
13
14
namespace
nk::linalg {
15
18
19
25
Value
linsolve
(
const
Value
&A,
const
Value
&B, std::pmr::memory_resource *mr =
nullptr
);
26
31
Value
lsqminnorm
(
const
Value
&A,
const
Value
&B,
bool
have_tol,
double
tol_user,
32
std::pmr::memory_resource *mr =
nullptr
);
33
35
struct
NnlsResult
{
36
Value
x
;
37
double
resnorm
;
38
Value
residual
;
39
int
exitflag
;
40
int
iterations
;
41
std::string
algorithm
;
42
std::string
message
;
43
};
44
49
NnlsResult
lsqnonneg_impl
(
const
Value
&C,
const
Value
&d,
50
std::pmr::memory_resource *mr =
nullptr
);
51
52
54
}
// namespace nk::linalg
nk::Value
Core MATLAB-compatible multidimensional array and scalar value type.
Definition
value.hpp:61
nk::linalg::linsolve
Value linsolve(const Value &A, const Value &B, std::pmr::memory_resource *mr=nullptr)
Solve A·X = B (X = linsolve(A, B)).
nk::linalg::lsqnonneg_impl
NnlsResult lsqnonneg_impl(const Value &C, const Value &d, std::pmr::memory_resource *mr=nullptr)
Non-negative least-squares (x = lsqnonneg(C, d)).
nk::linalg::lsqminnorm
Value lsqminnorm(const Value &A, const Value &B, bool have_tol, double tol_user, std::pmr::memory_resource *mr=nullptr)
Minimum-norm least-squares solution (X = lsqminnorm(A, B)).
nk::linalg::NnlsResult
Result of lsqnonneg_impl.
Definition
linalg/include/nk/linalg/solvers.hpp:35
nk::linalg::NnlsResult::residual
Value residual
Residual column d − C·x.
Definition
linalg/include/nk/linalg/solvers.hpp:38
nk::linalg::NnlsResult::x
Value x
Non-negative solution column.
Definition
linalg/include/nk/linalg/solvers.hpp:36
nk::linalg::NnlsResult::iterations
int iterations
Outer-loop iteration count.
Definition
linalg/include/nk/linalg/solvers.hpp:40
nk::linalg::NnlsResult::resnorm
double resnorm
Squared 2-norm of the residual ‖C·x − d‖².
Definition
linalg/include/nk/linalg/solvers.hpp:37
nk::linalg::NnlsResult::algorithm
std::string algorithm
Always "active-set".
Definition
linalg/include/nk/linalg/solvers.hpp:41
nk::linalg::NnlsResult::message
std::string message
Termination message.
Definition
linalg/include/nk/linalg/solvers.hpp:42
nk::linalg::NnlsResult::exitflag
int exitflag
1 on convergence.
Definition
linalg/include/nk/linalg/solvers.hpp:39
src
toolboxes
linalg
include
nk
linalg
solvers.hpp
Generated by
1.17.0