|
| nmrLSISolver (void) |
|
| nmrLSISolver (CISSTNETLIB_INTEGER ma, CISSTNETLIB_INTEGER na, CISSTNETLIB_INTEGER mg) |
|
| nmrLSISolver (vctDynamicMatrix< CISSTNETLIB_DOUBLE > &C, vctDynamicMatrix< CISSTNETLIB_DOUBLE > &d, vctDynamicMatrix< CISSTNETLIB_DOUBLE > &A, vctDynamicMatrix< CISSTNETLIB_DOUBLE > &b) |
|
void | Allocate (CISSTNETLIB_INTEGER ma, CISSTNETLIB_INTEGER na, CISSTNETLIB_INTEGER mg) |
|
void | Allocate (vctDynamicMatrix< CISSTNETLIB_DOUBLE > &C, vctDynamicMatrix< CISSTNETLIB_DOUBLE > &d, vctDynamicMatrix< CISSTNETLIB_DOUBLE > &A, vctDynamicMatrix< CISSTNETLIB_DOUBLE > &b) |
|
CISST_EXPORT void | Solve (vctDynamicMatrix< CISSTNETLIB_DOUBLE > &C, vctDynamicMatrix< CISSTNETLIB_DOUBLE > &d, vctDynamicMatrix< CISSTNETLIB_DOUBLE > &A, vctDynamicMatrix< CISSTNETLIB_DOUBLE > &b) throw (std::runtime_error) |
|
const vctDynamicMatrix
< CISSTNETLIB_DOUBLE > & | GetX (void) const |
|
Algorithm LSI: Least Squares with Inequality Constraints.
This code is a re-written version of algorithm from Charles L. Lawson and Richard J. Hanson, "Solving Least Squares Problems", Prentice-Hall, 1974. Section 5: Chapter 23.
Given a
matrix C, a
vector d, a
A and a
vector b, compute a
vector X, that solves the least squares problem:

The data members of this class are:
- Ma, Na: Dimension of input matrix C
- Mg, Na: Dimension of input matrix A
- VSiUtb:
contains 
- GTilde:
contains
. See L&H book for definition of
.
- HTilde:
contains
. See L&H book for definition of
.
- Z:
contains solution of the internal LDP problem
- X:
, on exit contains the solution.
- Si:
contains the pseudo inverse of singular values.
- VSi:
contains 
- Note
- The input matrices of this class must use a column major storage order. To do so, use VCT_COL_MAJOR whenever you declare a matrix. They must also be compact (see vctDynamicMatrix::IsFortran()).
-
This code relies on the ERC CISST cnetlib library. Since cnetlib is optional, make sure that CISST_HAS_CNETLIB has been turned ON during the configuration with CMake.