Разложение Холецкого

Материал из testwiki
Перейти к навигации Перейти к поиску

Разложе́ние Холе́цкого (метод квадратного корня) — представление симметричной положительно определённой матрицы A в виде A=LLT, где L — нижняя треугольная матрица со строго положительными элементами на диагонали. Иногда разложение записывается в эквивалентной форме: A=UTU, где U=LT — верхняя треугольная матрица. Разложение Холецкого всегда существует и единственно для любой симметричной положительно определённой матрицы.

Существует также обобщение этого разложения на случай комплекснозначных матриц. Если A — положительно определённая эрмитова матрица, то существует разложение A=LL*, где L — нижняя треугольная матрица с положительными действительными элементами на диагонали, а L*эрмитово-сопряжённая к ней матрица.

Разложение названо в честь французского математика польского происхождения Шаблон:Iw (1875—1918).

Алгоритм

Элементы матрицы L можно вычислить, начиная с верхнего левого угла матрицы, по формулам

l11=a11,lj1=aj1l11,j[2,n],lii=aiip=1i1lip2,i[2,n],lji=1lii(ajip=1i1lipljp),i[2,n1],j[i+1,n].
Выражение под корнем всегда положительно, если A — действительная положительно определённая матрица.

Вычисление происходит сверху вниз, слева направо, т. е. сперва Lij, а затем Lii.

Для комплекснозначных эрмитовых матриц используются формулы

lii=aiip=1i1liplip*,i[2,n],lji=1lii(ajip=1i1lipljp*),i[2,n1],j[i+1,n].

Приложения

Это разложение может применяться для решения системы линейных уравнений Ax=b, если матрица A симметрична и положительно определена. Такие матрицы часто возникают, например, при использовании метода наименьших квадратов и численном решении дифференциальных уравнений.

Выполнив разложение A=LLT, решение x можно получить последовательным решением двух треугольных систем уравнений: Ly=b и LTx=y. Такой способ решения иногда называется методом квадратных корней.[1] По сравнению с более общими методами, такими как метод Гаусса или LU-разложение, он устойчивее численно и требует примерно вдвое меньше арифметических операций.[2]

Разложение Холецкого также применяется в методах Монте-Карло для генерации коррелированных случайных величин. Пусть X — вектор из независимых стандартных нормальных случайных величин, а Σ=LLT — желаемая ковариационная матрица. Тогда вектор Y=LX будет иметь многомерное нормальное распределение с нулевым математическим ожиданием и ковариационной матрицей Σ.[3]

Реализация в математических пакетах программ

  • В SAS используется функция ROOT(matrix), входящая в пакет SAS IML.
  • В системах MATLAB, Octave, R разложение выполняется командой U = chol(A).
  • В Maple и NumPy существует процедура cholesky в модуле linalg.
  • В Mathematica используется процедура CholeskyDecomposition[A].
  • В MathCAD для разложения используется функция cholesky(A)
  • В GSL используется функция gsl_linalg_cholesky_decomp.
  • В библиотеке от Google ceres-solver[4].
  • В библиотеке Apache Commons Math (начиная с версии 2.0) используется класс CholeskyDecomposition[5].
  • В библиотеке Torch присутствует функция torch.potrf[6].
  • В библиотеке JAMA языка программирования java.
  • В библиотеке Intel Data Analytics Acceleration Library присутствует алгоритмcholesky::Batch.

Примечания

Шаблон:Примечания

Шаблон:Wikibooks

Шаблон:Вектора и матрицы Шаблон:Методы решения СЛАУ