Eigen::IncompleteCholesky
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
-
Scalar |
the scalar type of the input matrices |
_UpLo |
The triangular part that will be used for the computations. It can be Lower or Upper. Default is Lower. |
_OrderingType |
The 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.
IncompleteCholesky() [1/2]
template<typename Scalar , int _UpLo = Lower, typename _OrderingType = AMDOrdering<int>>
IncompleteCholesky() [2/2]
template<typename Scalar , int _UpLo = Lower, typename _OrderingType = AMDOrdering<int>>
template<typename MatrixType >
Constructor computing the incomplete factorization for the given matrix matrix.
cols()
template<typename Scalar , int _UpLo = Lower, typename _OrderingType = AMDOrdering<int>>
-
Returns
-
number of columns of the factored matrix
compute()
template<typename Scalar , int _UpLo = Lower, typename _OrderingType = AMDOrdering<int>>
template<typename MatrixType >
factorize()
template<typename Scalar , int _UpLo = Lower, typename _OrderingType = AMDOrdering<int>>
template<typename MatrixType >
info()
template<typename Scalar , int _UpLo = Lower, typename _OrderingType = AMDOrdering<int>>
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.
matrixL()
template<typename Scalar , int _UpLo = Lower, typename _OrderingType = AMDOrdering<int>>
-
Returns
-
the sparse lower triangular factor L
permutationP()
template<typename Scalar , int _UpLo = Lower, typename _OrderingType = AMDOrdering<int>>
-
Returns
-
the fill-in reducing permutation P (can be empty for a natural ordering)
rows()
template<typename Scalar , int _UpLo = Lower, typename _OrderingType = AMDOrdering<int>>
-
Returns
-
number of rows of the factored matrix
scalingS()
template<typename Scalar , int _UpLo = Lower, typename _OrderingType = AMDOrdering<int>>
-
Returns
-
a vector representing the scaling factor S
The documentation for this class was generated from the following file: