Essentia
2.1-beta6-dev
|
#include <jama_cholesky.h>
Public Member Functions | |
Cholesky () | |
Cholesky (const Array2D< Real > &A) | |
Array2D< Real > | getL () const |
Array1D< Real > | solve (const Array1D< Real > &B) |
Array2D< Real > | solve (const Array2D< Real > &B) |
int | is_spd () const |
Private Attributes | |
Array2D< Real > | L_ |
int | isspd |
For a symmetric, positive definite matrix A, this function computes the Cholesky factorization, i.e. it computes a lower triangular matrix L such that A = L*L'. If the matrix is not symmetric or positive definite, the function computes only a partial decomposition. This can be tested with the is_spd() flag.
Typical usage looks like:
Array2D<double> A(n,n); Array2D<double> L; ... Cholesky<double> chol(A); if (chol.is_spd()) L = chol.getL(); else cout << "factorization was not complete.\n";
(Adapted from JAMA, a Java Matrix Library, developed by jointly by the Mathworks and NIST; see http://math.nist.gov/javanumerics/jama).
Constructs a lower triangular matrix L, such that L*L'= A. If A is not symmetric positive-definite (SPD), only a partial factorization is performed. If is_spd() evalutate true (1) then the factorizaiton was successful.
References Array2D< T >::dim1(), and Array2D< T >::dim2().
Array2D< Real > getL |
int is_spd |
Solve a linear system A*x = b, using the previously computed cholesky factorization of A: L*L'.
B | A Matrix with as many rows as A and any number of columns. |
References Array1D< T >::copy(), and Array1D< T >::dim1().
Solve a linear system A*X = B, using the previously computed cholesky factorization of A: L*L'.
B | A Matrix with as many rows as A and any number of columns. |
References Array2D< T >::copy(), Array1D< T >::dim1(), Array2D< T >::dim1(), and Array2D< T >::dim2().
|
private |
|
private |