шаблон<typename _MatrixType, int _UpLo> класс Eigen::LDLT< _MatrixType, _UpLo >
Устойчивое разложение Холецкого матрицы с выбором опор.
Параметры шаблона
_MatrixType
тип матрицы, для которой вычисляется разложение Холецкого LDLT
_UpLo
треугольная часть, используемая для разложения: нижняя (по умолчанию) или верхняя. Другая треугольная часть не будет читаться.
Выполняет устойчивое разложение Холецкого положительно определенной или отрицательно определенной матрицы \( A \) такого, что \( A = P^TLDL^*P \), где P — матрица перестановок, L — нижняя треугольная матрица с единичной диагональю, а D — диагональная матрица.
Разложение использует выбор опор для обеспечения устойчивости, поэтому D будет иметь нули в правой нижней подматрице ранга(A) - n. Избегание квадратного корня из D также стабилизирует вычисления.
Запомните, что разложения Холецкого не являются разложениями, определяющими ранг. Также не используйте разложение Холецкого для определения того, имеет ли система уравнений решение.
Обновить разложение LDLT: при заданном A = L D L^T, эффективно вычислить разложение A + sigma w w^T.
Параметры
w
вектор, который необходимо включить в разложение.
sigma
скаляр, +1 для обновлений и -1 для "обновлений назад", которые соответствуют удалению ранее добавленных векторов-столбцов. Необязательно; значение по умолчанию равно +1.
решение x уравнения \( A x = b \) с использованием текущего разложения A.
Эта функция также поддерживает решение на месте, используя синтаксис x = decompositionObject.solve(x).
Этот метод просто пытается найти наилучшее возможное решение. Если вы хотите проверить, существует ли решение или оно точное, просто вызовите эту функцию, чтобы получить результат, а затем вычислите ошибку этого результата, или используйте MatrixBase::isApprox() непосредственно, например так:
Этот метод избегает деления на ноль, так что отсутствие решения само по себе не означает, что вы получите inf или nan значения.
Более точно, этот метод решает \( A x = b \) с помощью разложения \( A = P^T L D L^* P \) путём последовательного решения систем \( P^T y_1 = b \), \( L y_2 = y_1 \), \( D y_3 = y_2 \), \( L^* y_4 = y_3 \) и \( P x = y_4 \). Если матрица \( A \) является вырожденной, то \( D \) также будет вырожденной (все остальные матрицы обратимы). В этом случае вычисляется решение методом наименьших квадратов для \( D y_3 = y_2 \). Это не означает, что эта функция вычисляет решение методом наименьших квадратов для \( A x = b \), если \( A \) вырожденная.