Разложение Холецкого: различия между версиями
[отпатрулированная версия] | [непроверенная версия] |
Нет описания правки |
Спасено источников — 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</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.
Примечания
[править | править код]- ↑ Вержбицкий В. М. Основы численных методов. — М.: Высшая школа, 2009. — 840 с. — ISBN 9785060061239.
- ↑ 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.
- ↑ Martin Haugh. Generating Correlated Random Variables Архивировано 5 января 2012 года..
- ↑ Ceres Solver — A Large Scale Non-linear Optimization Library . Дата обращения: 7 сентября 2017. Архивировано из оригинала 2 сентября 2017 года.
- ↑ CholeskyDecomposition Архивная копия от 7 ноября 2017 на Wayback Machine.
- ↑ torch.potrf Архивная копия от 20 августа 2017 на Wayback Machine.