TooN::Cholesky< Size, Precision > Class Template Reference
[Matrix decompositions]

Decomposes a positive-semidefinite symmetric matrix A (such as a covariance) into L*D*L^T, where L is lower-triangular and D is diagonal. More...

#include <Cholesky.h>

List of all members.

Public Member Functions

template<class P2, class B2>
 Cholesky (const Matrix< Size, Size, P2, B2 > &m)
 Cholesky (int size)
template<class P2, class B2>
void compute (const Matrix< Size, Size, P2, B2 > &m)
void do_compute ()
template<int Size2, class P2, class B2>
Vector< Size, Precision > backsub (const Vector< Size2, P2, B2 > &v)
template<int Size2, int C2, class P2, class B2>
Matrix< Size, C2,
Precision > 
backsub (const Matrix< Size2, C2, P2, B2 > &m)
Matrix< Size, Size,
Precision > 
get_inverse ()
Precision determinant ()


Detailed Description

template<int Size = Dynamic, class Precision = DefaultPrecision>
class TooN::Cholesky< Size, Precision >

Decomposes a positive-semidefinite symmetric matrix A (such as a covariance) into L*D*L^T, where L is lower-triangular and D is diagonal.

Also can compute A = S*S^T, with S lower triangular. The LDL^T form is faster to compute than the class Cholesky decomposition. The decomposition can be used to compute A^-1*x, A^-1*M, M*A^-1*M^T, and A^-1 itself, though the latter rarely needs to be explicitly represented. Also efficiently computes det(A) and rank(A). It can be used as follows:

// Declare some matrices.
Matrix<3> A = ...; // we'll pretend it is pos-def
Matrix<2,3> M;
Matrix<2> B;
Vector<3> y = make_Vector(2,3,4);
// create the Cholesky decomposition of A
Cholesky<3> chol(A);
// compute x = A^-1 * y
x = cholA.backsub(y);
//compute A^-1
Matrix<3> Ainv = cholA.get_inverse();

Cholesky decomposition of a symmetric matrix. Only the lower half of the matrix is considered This uses the non-sqrt version of the decomposition giving symmetric M = L*D*L.T() where the diagonal of L contains ones

Parameters:
Size the size of the matrix
Precision the precision of the entries in the matrix and its decomposition

Constructor & Destructor Documentation

template<int Size = Dynamic, class Precision = DefaultPrecision>
template<class P2, class B2>
TooN::Cholesky< Size, Precision >::Cholesky ( const Matrix< Size, Size, P2, B2 > &  m  ) 

Construct the Cholesky decomposition of a matrix.

This initialises the class, and performs the decomposition immediately. Run time is O(N^3)

template<int Size = Dynamic, class Precision = DefaultPrecision>
TooN::Cholesky< Size, Precision >::Cholesky ( int  size  ) 

Constructor for Size=Dynamic.


Member Function Documentation

template<int Size = Dynamic, class Precision = DefaultPrecision>
template<class P2, class B2>
void TooN::Cholesky< Size, Precision >::compute ( const Matrix< Size, Size, P2, B2 > &  m  ) 

Compute the LDL^T decomposition of another matrix.

Run time is O(N^3)

template<int Size = Dynamic, class Precision = DefaultPrecision>
template<int Size2, class P2, class B2>
Vector<Size, Precision> TooN::Cholesky< Size, Precision >::backsub ( const Vector< Size2, P2, B2 > &  v  ) 

Compute x = A^-1*v Run time is O(N^2).

template<int Size = Dynamic, class Precision = DefaultPrecision>
Matrix<Size,Size,Precision> TooN::Cholesky< Size, Precision >::get_inverse (  ) 

Compute A^-1 and store in M Run time is O(N^3).


Generated on Thu May 7 20:28:41 2009 for TooN by  doxygen 1.5.3