|
template<typename RhsType , typename DstType > |
void | _solve_impl (const RhsType &rhs, DstType &dst) const |
|
template<bool Conjugate, typename RhsType , typename DstType > |
void | _solve_impl_transposed (const RhsType &rhs, DstType &dst) const |
|
const LLT & | adjoint () const EIGEN_NOEXCEPT |
|
EIGEN_CONSTEXPR Index | cols () const EIGEN_NOEXCEPT |
|
template<typename InputType > |
LLT & | compute (const EigenBase< InputType > &matrix) |
|
template<typename InputType > |
LLT< MatrixType, _UpLo > & | compute (const EigenBase< InputType > &a) |
|
ComputationInfo | info () const |
| Reports whether previous computation was successful. More...
|
|
| LLT () |
| Default Constructor. More...
|
|
| LLT (Index size) |
| Default Constructor with memory preallocation. More...
|
|
template<typename InputType > |
| LLT (const EigenBase< InputType > &matrix) |
|
template<typename InputType > |
| LLT (EigenBase< InputType > &matrix) |
| Constructs a LLT factorization from a given matrix. More...
|
|
Traits::MatrixL | matrixL () const |
|
const MatrixType & | matrixLLT () const |
|
Traits::MatrixU | matrixU () const |
|
template<typename VectorType > |
LLT & | rankUpdate (const VectorType &vec, const RealScalar &sigma=1) |
|
template<typename VectorType > |
LLT< _MatrixType, _UpLo > & | rankUpdate (const VectorType &v, const RealScalar &sigma) |
|
RealScalar | rcond () const |
|
MatrixType | reconstructedMatrix () const |
|
EIGEN_CONSTEXPR Index | rows () const EIGEN_NOEXCEPT |
|
template<typename Derived > |
void | solveInPlace (const MatrixBase< Derived > &bAndX) const |
|
AdjointReturnType | adjoint () const |
|
const Solve< LLT< _MatrixType, _UpLo >, Rhs > | solve (const MatrixBase< Rhs > &b) const |
|
| SolverBase () |
|
ConstTransposeReturnType | transpose () const |
|
| ~SolverBase () |
|
template<typename Dest > |
EIGEN_DEVICE_FUNC void | addTo (Dest &dst) const |
|
template<typename Dest > |
EIGEN_DEVICE_FUNC void | applyThisOnTheLeft (Dest &dst) const |
|
template<typename Dest > |
EIGEN_DEVICE_FUNC void | applyThisOnTheRight (Dest &dst) const |
|
EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR Index | cols () const EIGEN_NOEXCEPT |
|
EIGEN_DEVICE_FUNC Derived & | const_cast_derived () const |
|
EIGEN_DEVICE_FUNC const Derived & | const_derived () const |
|
EIGEN_DEVICE_FUNC Derived & | derived () |
|
EIGEN_DEVICE_FUNC const Derived & | derived () const |
|
template<typename Dest > |
EIGEN_DEVICE_FUNC void | evalTo (Dest &dst) const |
|
EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR Index | rows () const EIGEN_NOEXCEPT |
|
EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR Index | size () const EIGEN_NOEXCEPT |
|
template<typename Dest > |
EIGEN_DEVICE_FUNC void | subTo (Dest &dst) const |
|
template<typename _MatrixType, int _UpLo>
class Eigen::LLT< _MatrixType, _UpLo >
Standard Cholesky decomposition (LL^T) of a matrix and associated features.
- Template Parameters
-
_MatrixType | the type of the matrix of which we are computing the LL^T Cholesky decomposition |
_UpLo | the triangular part that will be used for the decompositon: Lower (default) or Upper. The other triangular part won't be read. |
This class performs a LL^T Cholesky decomposition of a symmetric, positive definite matrix A such that A = LL^* = U^*U, where L is lower triangular.
While the Cholesky decomposition is particularly useful to solve selfadjoint problems like D^*D x = b, for that purpose, we recommend the Cholesky decomposition without square root which is more stable and even faster. Nevertheless, this standard Cholesky decomposition remains useful in many other situations like generalised eigen problems with hermitian matrices.
Remember that Cholesky decompositions are not rank-revealing. This LLT decomposition is only stable on positive definite matrices, use LDLT instead for the semidefinite case. Also, do not use a Cholesky decomposition to determine whether a system of equations has a solution.
Example:
MatrixXd A(3,3);
A << 4,-1,2, -1,6,0, 2,0,5;
cout << "The matrix A is" << endl << A << endl;
cout << "The Cholesky factor L is" << endl << L << endl;
cout << "To check this, let us compute L * L.transpose()" << endl;
cout << L * L.transpose() << endl;
cout << "This should equal the matrix A" << endl;
Output:
Performance: for best performance, it is recommended to use a column-major storage format with the Lower triangular part (the default), or, equivalently, a row-major storage format with the Upper triangular part. Otherwise, you might get a 20% slowdown for the full factorization step, and rank-updates can be up to 3 times slower.
This class supports the inplace decomposition mechanism.
Note that during the decomposition, only the lower (or upper, as defined by _UpLo) triangular part of A is considered. Therefore, the strict lower part does not have to store correct values.
- See also
- MatrixBase::llt(), SelfAdjointView::llt(), class LDLT
Definition at line 66 of file LLT.h.