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>. |
This class follows the sparse solver concept .
It performs the following incomplete factorization: \( S P A P' S + \sigma I \approx L L' \) where L is a lower triangular factor, S is a diagonal scaling matrix, P is a fill-in reducing permutation as computed by the ordering method, and \( \sigma \) is a shift for ensuring the decomposed matrix is positive definite.
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, and \sigma = 0. Otherwise, the factorization is performed on the shifted matrix \( B +
\sigma I \) for a shifting factor \( \sigma \). We start with \( \sigma = \sigma_0 - \beta \), where \(
\sigma_0 \) is the initial shift value as returned and set by setInitialShift() method. The default value is \(
\sigma_0 = 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.
|
template<typename MatrixType > |
void | analyzePattern (const MatrixType &mat) |
| Computes the fill reducing permutation vector using the sparsity pattern of mat.
|
|
EIGEN_CONSTEXPR Index | cols () const EIGEN_NOEXCEPT |
|
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.
|
|
| IncompleteCholesky () |
|
template<typename MatrixType > |
| IncompleteCholesky (const MatrixType &matrix) |
|
ComputationInfo | info () const |
| Reports whether previous computation was successful.
|
|
const FactorType & | matrixL () const |
|
const PermutationType & | permutationP () const |
|
EIGEN_CONSTEXPR Index | rows () const EIGEN_NOEXCEPT |
|
const VectorRx & | scalingS () const |
|
void | setInitialShift (RealScalar shift) |
| Set the initial shift parameter \( \sigma \).
|
|
RealScalar | shift () const |
|
template<typename Rhs > |
const Solve< Derived, Rhs > | solve (const MatrixBase< Rhs > &b) const |
|
template<typename Rhs > |
const Solve< Derived, Rhs > | solve (const SparseMatrixBase< Rhs > &b) const |
|
| SparseSolverBase () |
|