Eigen  3.3.90 (mercurial changeset b6d3e557dd16)
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
Eigen::IncompleteCholesky< Scalar, _UpLo, _OrderingType > Class Template Reference

Detailed Description

template<typename Scalar, int _UpLo = Lower, typename _OrderingType = AMDOrdering<int>>
class Eigen::IncompleteCholesky< Scalar, _UpLo, _OrderingType >

Modified Incomplete Cholesky with dual threshold.

References : C-J. Lin and J. J. Moré, Incomplete Cholesky Factorizations with Limited memory, SIAM J. Sci. Comput. 21(1), pp. 24-45, 1999

Template Parameters
Scalarthe scalar type of the input matrices
_UpLoThe triangular part that will be used for the computations. It can be Lower or Upper. Default is Lower.
_OrderingTypeThe ordering method to use, either AMDOrdering<> or NaturalOrdering<>. Default is AMDOrdering<int>, unless EIGEN_MPL2_ONLY is defined, in which case the default is NaturalOrdering<int>.

This class follows the sparse solver concept .

It performs the following incomplete factorization: $ S P A P' S \approx L L' $ where L is a lower triangular factor, S is a diagonal scaling matrix, and P is a fill-in reducing permutation as computed by the ordering method.

Shifting strategy: Let $ B = S P A P' S $ be the scaled matrix on which the factorization is carried out, and $ \beta $ be the minimum value of the diagonal. If $ \beta > 0 $ then, the factorization is directly performed on the matrix B. Otherwise, the factorization is performed on the shifted matrix $ B + (\sigma+|\beta| I $ where $ \sigma $ is the initial shift value as returned and set by setInitialShift() method. The default value is $ \sigma = 10^{-3} $. If the factorization fails, then the shift in doubled until it succeed or a maximum of ten attempts. If it still fails, as returned by the info() method, then you can either increase the initial shift, or better use another preconditioning technique.

+ Inheritance diagram for Eigen::IncompleteCholesky< Scalar, _UpLo, _OrderingType >:

Public Member Functions

template<typename MatrixType >
void analyzePattern (const MatrixType &mat)
 Computes the fill reducing permutation vector using the sparsity pattern of mat.
 
Index cols () const
 
template<typename MatrixType >
void compute (const MatrixType &mat)
 
template<typename MatrixType >
void factorize (const MatrixType &mat)
 Performs the numerical factorization of the input matrix mat. More...
 
 IncompleteCholesky ()
 
template<typename MatrixType >
 IncompleteCholesky (const MatrixType &matrix)
 
ComputationInfo info () const
 Reports whether previous computation was successful. More...
 
const FactorTypematrixL () const
 
const PermutationType & permutationP () const
 
Index rows () const
 
const VectorRxscalingS () const
 
void setInitialShift (RealScalar shift)
 Set the initial shift parameter $ \sigma $.
 
- Public Member Functions inherited from Eigen::SparseSolverBase< IncompleteCholesky< Scalar, _UpLo, _OrderingType > >
const Solve
< IncompleteCholesky< Scalar,
_UpLo, _OrderingType >, Rhs > 
solve (const MatrixBase< Rhs > &b) const
 
const Solve
< IncompleteCholesky< Scalar,
_UpLo, _OrderingType >, Rhs > 
solve (const SparseMatrixBase< Rhs > &b) const
 
 SparseSolverBase ()
 

Constructor & Destructor Documentation

template<typename Scalar , int _UpLo = Lower, typename _OrderingType = AMDOrdering<int>>
Eigen::IncompleteCholesky< Scalar, _UpLo, _OrderingType >::IncompleteCholesky ( )
inline

Default constructor leaving the object in a partly non-initialized stage.

You must call compute() or the pair analyzePattern()/factorize() to make it valid.

See Also
IncompleteCholesky(const MatrixType&)
template<typename Scalar , int _UpLo = Lower, typename _OrderingType = AMDOrdering<int>>
template<typename MatrixType >
Eigen::IncompleteCholesky< Scalar, _UpLo, _OrderingType >::IncompleteCholesky ( const MatrixType &  matrix)
inline

Constructor computing the incomplete factorization for the given matrix matrix.

Member Function Documentation

template<typename Scalar , int _UpLo = Lower, typename _OrderingType = AMDOrdering<int>>
Index Eigen::IncompleteCholesky< Scalar, _UpLo, _OrderingType >::cols ( void  ) const
inline
Returns
number of columns of the factored matrix
template<typename Scalar , int _UpLo = Lower, typename _OrderingType = AMDOrdering<int>>
template<typename MatrixType >
void Eigen::IncompleteCholesky< Scalar, _UpLo, _OrderingType >::compute ( const MatrixType &  mat)
inline

Computes or re-computes the incomplete Cholesky factorization of the input matrix mat

It is a shortcut for a sequential call to the analyzePattern() and factorize() methods.

See Also
analyzePattern(), factorize()
template<typename Scalar , int _UpLo = Lower, typename _OrderingType = AMDOrdering<int>>
template<typename MatrixType >
void Eigen::IncompleteCholesky< Scalar, _UpLo, _OrderingType >::factorize ( const MatrixType &  mat)

Performs the numerical factorization of the input matrix mat.

The method analyzePattern() or compute() must have been called beforehand with a matrix having the same pattern.

See Also
compute(), analyzePattern()
template<typename Scalar , int _UpLo = Lower, typename _OrderingType = AMDOrdering<int>>
ComputationInfo Eigen::IncompleteCholesky< Scalar, _UpLo, _OrderingType >::info ( ) const
inline

Reports whether previous computation was successful.

It triggers an assertion if *this has not been initialized through the respective constructor, or a call to compute() or analyzePattern().

Returns
Success if computation was successful, NumericalIssue if the matrix appears to be negative.
template<typename Scalar , int _UpLo = Lower, typename _OrderingType = AMDOrdering<int>>
const FactorType& Eigen::IncompleteCholesky< Scalar, _UpLo, _OrderingType >::matrixL ( ) const
inline
Returns
the sparse lower triangular factor L
template<typename Scalar , int _UpLo = Lower, typename _OrderingType = AMDOrdering<int>>
const PermutationType& Eigen::IncompleteCholesky< Scalar, _UpLo, _OrderingType >::permutationP ( ) const
inline
Returns
the fill-in reducing permutation P (can be empty for a natural ordering)
template<typename Scalar , int _UpLo = Lower, typename _OrderingType = AMDOrdering<int>>
Index Eigen::IncompleteCholesky< Scalar, _UpLo, _OrderingType >::rows ( void  ) const
inline
Returns
number of rows of the factored matrix
template<typename Scalar , int _UpLo = Lower, typename _OrderingType = AMDOrdering<int>>
const VectorRx& Eigen::IncompleteCholesky< Scalar, _UpLo, _OrderingType >::scalingS ( ) const
inline
Returns
a vector representing the scaling factor S

The documentation for this class was generated from the following file: