CEDRIC  Revision_backup-2009-02
Public Member Functions | List of all members
Cholesky< ValueType > Class Template Reference

#include <Cholesky.h>

Public Member Functions

 Cholesky (const Matrix &A)
 
Matrix getL () const
 
Vector solve (const Vector &b)
 
Matrix solve (const Matrix &B)
 
int is_spd () const
 

Detailed Description

template<class ValueType>
class Cholesky< ValueType >

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).

Constructor & Destructor Documentation

template<class ValueType >
Cholesky< ValueType >::Cholesky ( const Matrix &  A)

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.

Member Function Documentation

template<class ValueType>
Matrix Cholesky< ValueType >::getL ( ) const
inline
Returns
the lower triangular factor, L, such that L*L'=A.

Referenced by CMDS< ValueType >::CMDS().

template<class ValueType>
int Cholesky< ValueType >::is_spd ( ) const
inline
Returns
1, if original matrix to be factored was symmetric positive-definite (SPD).
template<class ValueType>
Vector Cholesky< ValueType >::solve ( const Vector &  b)
inline

Solve a linear system A*x = b, using the previously computed cholesky factorization of A: L*L'.

Parameters
BA Matrix with as many rows as A and any number of columns.
Returns
x so that L*L'*x = b. If b is nonconformat, or if A was not symmetric posidtive definite, a null (0x0) array is returned.
template<class ValueType>
Matrix Cholesky< ValueType >::solve ( const Matrix &  B)
inline

Solve a linear system A*X = B, using the previously computed cholesky factorization of A: L*L'.

Parameters
BA Matrix with as many rows as A and any number of columns.
Returns
X so that L*L'*X = B. If B is nonconformat, or if A was not symmetric posidtive definite, a null (0x0) array is returned.