template<typename Scalar, int _UpLo = Lower, typename _OrderingType = AMDOrdering<int>> class Eigen::IncompleteCholesky< Scalar, _UpLo, _OrderingType >
Изменённый неполный факторизацию Холески с двойным порогом.
Ссылки : C-J. Lin и J. J. Moré, Неполные факторизации Холески с ограниченной памятью, SIAM J. Sci. Comput. 21(1), стр. 24-45, 1999
Шаблонные параметры
Scalar
тип скаляров входных матриц
_UpLo
Треугольная часть, которая будет использована для вычислений. Может быть Lower или Upper. По умолчанию Lower.
_OrderingType
Метод упорядочения для использования, либо AMDOrdering<>, либо NaturalOrdering<>. По умолчанию AMDOrdering<int>, если не определён EIGEN_MPL2_ONLY, в этом случае по умолчанию NaturalOrdering<int>.
Он выполняет следующую неполную факторизацию: \( S P A P' S \approx L L' \), где L - нижняя треугольная факторизация, S - диагональная матрица масштабирования, а P - пермутация, уменьшающая заполнение, как вычислено методом упорядочения.
Стратегия сдвига: Пусть \( B = S P A P' S \) - масштабированная матрица, над которой выполняется факторизация, а \( \beta \) - минимальное значение диагонали. Если \( \beta > 0 \), то факторизация выполняется непосредственно над матрицей B. В противном случае, факторизация выполняется над сдвинутой матрицей \( B + (\sigma+|\beta| I \), где \( \sigma \) - начальное значение сдвига, возвращаемое и устанавливаемое методом setInitialShift(). Значение по умолчанию \( \sigma = 10^{-3} \). Если факторизация терпит неудачу, то сдвиг удваивается до тех пор, пока не произойдёт успех или не будет достигнуто максимальное количество попыток (десять). Если факторизация по-прежнему терпит неудачу, как возвращается методом info(), то можно либо увеличить начальный сдвиг, либо использовать другой метод предварительного кондиционирования.