A direct sparse Cholesky factorizations. More...
#include <SimplicialCholesky.h>
Inherits noncopyable.
Classes | |
struct | keep_diag |
Public Types | |
enum | { UpLo } |
typedef SparseMatrix< Scalar, ColMajor, Index > | CholMatrixType |
typedef MatrixType::Index | Index |
typedef internal::traits < Derived >::MatrixType | MatrixType |
typedef MatrixType::RealScalar | RealScalar |
typedef MatrixType::Scalar | Scalar |
typedef Matrix< Scalar, Dynamic, 1 > | VectorType |
Public Member Functions | |
Index | cols () const |
Derived & | derived () |
const Derived & | derived () const |
ComputationInfo | info () const |
Reports whether previous computation was successful. | |
const PermutationMatrix < Dynamic, Dynamic, Index > & | permutationP () const |
const PermutationMatrix < Dynamic, Dynamic, Index > & | permutationPinv () const |
Index | rows () const |
Derived & | setShift (const RealScalar &offset, const RealScalar &scale=1) |
SimplicialCholeskyBase () | |
SimplicialCholeskyBase (const MatrixType &matrix) | |
template<typename Rhs > | |
const internal::solve_retval < SimplicialCholeskyBase, Rhs > | solve (const MatrixBase< Rhs > &b) const |
template<typename Rhs > | |
const internal::sparse_solve_retval < SimplicialCholeskyBase, Rhs > | solve (const SparseMatrixBase< Rhs > &b) const |
~SimplicialCholeskyBase () | |
Protected Member Functions | |
void | analyzePattern (const MatrixType &a, bool doLDLT) |
void | analyzePattern_preordered (const CholMatrixType &a, bool doLDLT) |
template<bool DoLDLT> | |
void | compute (const MatrixType &matrix) |
template<bool DoLDLT> | |
void | factorize (const MatrixType &a) |
template<bool DoLDLT> | |
void | factorize_preordered (const CholMatrixType &a) |
void | ordering (const MatrixType &a, CholMatrixType &ap) |
Protected Attributes | |
bool | m_analysisIsOk |
VectorType | m_diag |
bool | m_factorizationIsOk |
ComputationInfo | m_info |
bool | m_isInitialized |
CholMatrixType | m_matrix |
VectorXi | m_nonZerosPerCol |
PermutationMatrix< Dynamic, Dynamic, Index > | m_P |
VectorXi | m_parent |
PermutationMatrix< Dynamic, Dynamic, Index > | m_Pinv |
RealScalar | m_shiftOffset |
RealScalar | m_shiftScale |
A direct sparse Cholesky factorizations.
These classes provide LL^T and LDL^T Cholesky factorizations of sparse matrices that are selfadjoint and positive definite. The factorization allows for solving A.X = B where X and B can be either dense or sparse.
_MatrixType | the type of the sparse matrix A, it must be a SparseMatrix<> |
_UpLo | the triangular part that will be used for the computations. It can be Lower or Upper. Default is Lower. |
typedef SparseMatrix<Scalar,ColMajor,Index> CholMatrixType |
typedef MatrixType::Index Index |
typedef internal::traits<Derived>::MatrixType MatrixType |
typedef MatrixType::RealScalar RealScalar |
typedef MatrixType::Scalar Scalar |
typedef Matrix<Scalar,Dynamic,1> VectorType |
SimplicialCholeskyBase | ( | ) | [inline] |
Default constructor
SimplicialCholeskyBase | ( | const MatrixType & | matrix | ) | [inline] |
~SimplicialCholeskyBase | ( | ) | [inline] |
void analyzePattern | ( | const MatrixType & | a, |
bool | doLDLT | ||
) | [inline, protected] |
void analyzePattern_preordered | ( | const CholMatrixType & | a, |
bool | doLDLT | ||
) | [protected] |
References ei_declare_aligned_stack_constructed_variable, SparseMatrix< _Scalar, _Options, _Index >::rows(), and Eigen::Success.
Referenced by SimplicialCholeskyBase< SimplicialLDLT< _MatrixType, _UpLo > >::analyzePattern(), and SimplicialCholeskyBase< SimplicialLDLT< _MatrixType, _UpLo > >::compute().
void compute | ( | const MatrixType & | matrix | ) | [inline, protected] |
Computes the sparse Cholesky decomposition of matrix
Reimplemented in SimplicialCholesky< _MatrixType, _UpLo >, SimplicialLDLT< _MatrixType, _UpLo >, and SimplicialLLT< _MatrixType, _UpLo >.
Derived& derived | ( | ) | [inline] |
const Derived& derived | ( | ) | const [inline] |
void factorize | ( | const MatrixType & | a | ) | [inline, protected] |
void factorize_preordered | ( | const CholMatrixType & | a | ) | [protected] |
ComputationInfo info | ( | ) | const [inline] |
Reports whether previous computation was successful.
Success
if computation was succesful, NumericalIssue
if the matrix.appears to be negative. void ordering | ( | const MatrixType & | a, |
CholMatrixType & | ap | ||
) | [protected] |
References Eigen::internal::minimum_degree_ordering(), SparseMatrix< _Scalar, _Options, _Index >::resize(), and SparseMatrixBase< Derived >::twistedBy().
Referenced by SimplicialCholeskyBase< SimplicialLDLT< _MatrixType, _UpLo > >::analyzePattern(), and SimplicialCholeskyBase< SimplicialLDLT< _MatrixType, _UpLo > >::compute().
const PermutationMatrix<Dynamic,Dynamic,Index>& permutationP | ( | ) | const [inline] |
const PermutationMatrix<Dynamic,Dynamic,Index>& permutationPinv | ( | ) | const [inline] |
Derived& setShift | ( | const RealScalar & | offset, |
const RealScalar & | scale = 1 |
||
) | [inline] |
Sets the shift parameters that will be used to adjust the diagonal coefficients during the numerical factorization.
During the numerical factorization, the diagonal coefficients are transformed by the following linear model:
d_ii
= offset + scale * d_ii
The default is the identity transformation with offset=0, and scale=1.
*this
. const internal::solve_retval<SimplicialCholeskyBase, Rhs> solve | ( | const MatrixBase< Rhs > & | b | ) | const [inline] |
const internal::sparse_solve_retval<SimplicialCholeskyBase, Rhs> solve | ( | const SparseMatrixBase< Rhs > & | b | ) | const [inline] |
bool m_analysisIsOk [protected] |
VectorType m_diag [protected] |
bool m_factorizationIsOk [protected] |
Referenced by SimplicialCholesky< _MatrixType, _UpLo >::_solve(), SimplicialLLT< _MatrixType, _UpLo >::matrixL(), SimplicialLDLT< _MatrixType, _UpLo >::matrixL(), SimplicialLLT< _MatrixType, _UpLo >::matrixU(), SimplicialLDLT< _MatrixType, _UpLo >::matrixU(), SimplicialCholesky< _MatrixType, _UpLo >::rawMatrix(), SimplicialLDLT< _MatrixType, _UpLo >::vectorD(), and SimplicialCholesky< _MatrixType, _UpLo >::vectorD().
ComputationInfo m_info [mutable, protected] |
bool m_isInitialized [protected] |
CholMatrixType m_matrix [protected] |
Referenced by SimplicialCholesky< _MatrixType, _UpLo >::_solve(), SimplicialCholeskyBase< SimplicialLDLT< _MatrixType, _UpLo > >::cols(), SimplicialLLT< _MatrixType, _UpLo >::determinant(), SimplicialCholesky< _MatrixType, _UpLo >::determinant(), SimplicialLLT< _MatrixType, _UpLo >::matrixL(), SimplicialLDLT< _MatrixType, _UpLo >::matrixL(), SimplicialLLT< _MatrixType, _UpLo >::matrixU(), SimplicialLDLT< _MatrixType, _UpLo >::matrixU(), SimplicialCholesky< _MatrixType, _UpLo >::rawMatrix(), and SimplicialCholeskyBase< SimplicialLDLT< _MatrixType, _UpLo > >::rows().
VectorXi m_nonZerosPerCol [protected] |
PermutationMatrix<Dynamic,Dynamic,Index> m_P [protected] |
PermutationMatrix<Dynamic,Dynamic,Index> m_Pinv [protected] |
RealScalar m_shiftOffset [protected] |
RealScalar m_shiftScale [protected] |