Разложение Холецкого: различия между версиями

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
[отпатрулированная версия][непроверенная версия]
Содержимое удалено Содержимое добавлено
Нет описания правки
Спасено источников — 2, отмечено мёртвыми — 0. Сообщить об ошибке. См. FAQ.) #IABot (v2.0.8.7
 
(не показаны 4 промежуточные версии 1 участника)
Строка 1: Строка 1:
'''Разложе́ние Холе́цкого''' (метод квадратного корня) — представление [[Симметричная матрица|симметричной]] [[Положительно определённая матрица|положительно-определённой]] [[Матрица (математика)|матрицы]] <math>A</math> в виде <math>A = LL^T</math>, где <math>L</math> — нижняя [[треугольная матрица]] со строго положительными элементами на диагонали. Иногда разложение записывается в эквивалентной форме: <math>A = U^TU</math>, где <math>U = L^T</math> — верхняя треугольная матрица. Разложение Холецкого всегда существует и единственно для любой симметричной положительно-определённой матрицы.
'''Разложе́ние Холе́цкого''' (метод квадратного корня) — представление [[Симметричная матрица|симметричной]] [[Положительно определённая матрица|положительно определённой]] [[Матрица (математика)|матрицы]] <math>A</math> в виде <math>A = LL^T</math>, где <math>L</math> — нижняя [[треугольная матрица]] со строго положительными элементами на диагонали. Иногда разложение записывается в эквивалентной форме: <math>A = U^TU</math>, где <math>U = L^T</math> — верхняя треугольная матрица. Разложение Холецкого всегда существует и единственно для любой симметричной положительно определённой матрицы.


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


Разложение названо в честь французского математика польского происхождения {{iw|Шолески, Андре-Луи|Андре-Луи Шолески|en|André-Louis Cholesky}} (1875—1918).
Разложение названо в честь французского математика польского происхождения {{iw|Шолески, Андре-Луи|Андре-Луи Шолески|en|André-Louis Cholesky}} (1875—1918).
Строка 13: Строка 13:
l_{ji} & = \frac{1}{l_{ii}} \left (a_{ji} - \sum_{p = 1}^{i - 1} l_{ip} l_{jp} \right ), \quad i \in [2, n - 1], j \in [i + 1, n].
l_{ji} & = \frac{1}{l_{ii}} \left (a_{ji} - \sum_{p = 1}^{i - 1} l_{ip} l_{jp} \right ), \quad i \in [2, n - 1], j \in [i + 1, n].
\end{align}</math>
\end{align}</math>
:Выражение под корнем всегда положительно, если <math>A</math> — действительная положительно-определённая матрица.
:Выражение под корнем всегда положительно, если <math>A</math> — действительная положительно определённая матрица.


Вычисление происходит сверху вниз, слева направо, т. е. сперва <math>L_{ij}</math>, а затем <math>L_{ii}</math>.
Вычисление происходит сверху вниз, слева направо, т. е. сперва <math>L_{ij}</math>, а затем <math>L_{ii}</math>.
Строка 24: Строка 24:


== Приложения ==
== Приложения ==
Это разложение может применяться для решения [[Система линейных алгебраических уравнений|системы линейных уравнений]] <math>Ax = b</math>, если матрица <math>A</math> симметрична и положительно-определена. Такие матрицы часто возникают, например, при использовании [[Метод наименьших квадратов|метода наименьших квадратов]] и численном решении дифференциальных уравнений.
Это разложение может применяться для решения [[Система линейных алгебраических уравнений|системы линейных уравнений]] <math>Ax = b</math>, если матрица <math>A</math> симметрична и положительно определена. Такие матрицы часто возникают, например, при использовании [[Метод наименьших квадратов|метода наименьших квадратов]] и численном решении дифференциальных уравнений.


Выполнив разложение <math>A = LL^T</math>, решение <math>x</math> можно получить последовательным решением двух треугольных систем уравнений: <math>Ly = b</math> и <math>L^T x = y</math>. Такой способ решения иногда называется ''методом квадратных корней''.<ref>{{книга|автор=Вержбицкий В. М.|заглавие=Основы численных методов |ответственный= |ссылка= |место=М. |издательство=[[Высшая школа (издательство)|Высшая школа]] |год=2009 |том= |страниц=840 |страницы=|isbn=9785060061239}}</ref> По сравнению с более общими методами, такими как [[метод Гаусса]] или [[LU-разложение]], он [[вычислительная устойчивость|устойчивее численно]] и требует примерно вдвое меньше арифметических операций.<ref>{{книга
Выполнив разложение <math>A = LL^T</math>, решение <math>x</math> можно получить последовательным решением двух треугольных систем уравнений: <math>Ly = b</math> и <math>L^T x = y</math>. Такой способ решения иногда называется ''методом квадратных корней''.<ref>{{книга|автор=Вержбицкий В. М.|заглавие=Основы численных методов |ответственный= |ссылка= |место=М. |издательство=[[Высшая школа (издательство)|Высшая школа]] |год=2009 |том= |страниц=840 |страницы=|isbn=9785060061239}}</ref> По сравнению с более общими методами, такими как [[метод Гаусса]] или [[LU-разложение]], он [[вычислительная устойчивость|устойчивее численно]] и требует примерно вдвое меньше арифметических операций.<ref>{{книга
Строка 47: Строка 47:
* В [[GSL]] используется функция <tt>gsl_linalg_cholesky_decomp</tt>.
* В [[GSL]] используется функция <tt>gsl_linalg_cholesky_decomp</tt>.
* В библиотеке от Google <tt>ceres-solver</tt><ref>{{Cite web |url=http://ceres-solver.org/. |title=Ceres Solver — A Large Scale Non-linear Optimization Library<!-- Заголовок добавлен ботом --> |accessdate=2017-09-07 |archiveurl=https://web.archive.org/web/20170902103408/http://www.ceres-solver.org/ |archivedate=2017-09-02 |deadlink=yes }}</ref>.
* В библиотеке от Google <tt>ceres-solver</tt><ref>{{Cite web |url=http://ceres-solver.org/. |title=Ceres Solver — A Large Scale Non-linear Optimization Library<!-- Заголовок добавлен ботом --> |accessdate=2017-09-07 |archiveurl=https://web.archive.org/web/20170902103408/http://www.ceres-solver.org/ |archivedate=2017-09-02 |deadlink=yes }}</ref>.
* В библиотеке Apache Commons Math (начиная с версии 2.0) используется класс CholeskyDecomposition<ref>[http://commons.apache.org/proper/commons-math/javadocs/api-3.5/org/apache/commons/math3/linear/CholeskyDecomposition.html CholeskyDecomposition].</ref>.
* В библиотеке Apache Commons Math (начиная с версии 2.0) используется класс CholeskyDecomposition<ref>[http://commons.apache.org/proper/commons-math/javadocs/api-3.5/org/apache/commons/math3/linear/CholeskyDecomposition.html CholeskyDecomposition] {{Wayback|url=http://commons.apache.org/proper/commons-math/javadocs/api-3.5/org/apache/commons/math3/linear/CholeskyDecomposition.html |date=20171107053358 }}.</ref>.
* В библиотеке [[Torch]] присутствует функция torch.potrf<ref>[https://github.com/torch/torch7/blob/master/doc/maths.md#torchpotrfres-a--u-or-l- torch.potrf].</ref>.
* В библиотеке [[Torch]] присутствует функция torch.potrf<ref>[https://github.com/torch/torch7/blob/master/doc/maths.md#torchpotrfres-a--u-or-l- torch.potrf] {{Wayback|url=https://github.com/torch/torch7/blob/master/doc/maths.md#torchpotrfres-a--u-or-l- |date=20170820131624 }}.</ref>.
* В библиотеке [[JAMA (библиотека)|JAMA]] языка программирования java.
* В библиотеке [[JAMA (библиотека)|JAMA]] языка программирования java.
*В библиотеке [https://software.intel.com/en-us/intel-daal Intel Data Analytics Acceleration Library] присутствует алгоритм<code>cholesky::Batch.</code>
*В библиотеке [https://software.intel.com/en-us/intel-daal Intel Data Analytics Acceleration Library] присутствует алгоритм<code>cholesky::Batch.</code>

Текущая версия от 06:27, 17 апреля 2022

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

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

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

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

Выражение под корнем всегда положительно, если — действительная положительно определённая матрица.

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

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

Приложения

[править | править код]

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

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

Разложение Холецкого также применяется в методах Монте-Карло для генерации коррелированных случайных величин. Пусть  — вектор из независимых стандартных нормальных случайных величин, а  — желаемая ковариационная матрица. Тогда вектор будет иметь многомерное нормальное распределение с нулевым математическим ожиданием и ковариационной матрицей .[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.

Примечания

[править | править код]
  1. Вержбицкий В. М. Основы численных методов. — М.: Высшая школа, 2009. — 840 с. — ISBN 9785060061239.
  2. William H. Press, Saul A. Teukolsky, William T. Vetterling, Brian P. Flannery. 2.9 Cholesky Decomposition // Numerical Recipes in C. — 2nd edition. — Cambridge: Cambridge University Press. — ISBN 0-521-43108-5.
  3. Martin Haugh. Generating Correlated Random Variables Архивировано 5 января 2012 года..
  4. Ceres Solver — A Large Scale Non-linear Optimization Library. Дата обращения: 7 сентября 2017. Архивировано из оригинала 2 сентября 2017 года.
  5. CholeskyDecomposition Архивная копия от 7 ноября 2017 на Wayback Machine.
  6. torch.potrf Архивная копия от 20 августа 2017 на Wayback Machine.