![]() |
Одним из применений LDLT-разложения является обращение симметричных матриц. По своей функциональности алгоритм во многом похож на аналогичные алгоритмы для матриц, заданных разложением Холецкого или LU-разложением.
Подпрограмма SMatrixLDLTInverse принимает на входе LDLT-разложение матрицы A (результат работы подпрограммы SMatrixLDLT) и возвращает на выходе матрицу A -1, заданную верхним или нижним треугольником в зависимости от того, какой из вариантов LDLT-разложения был выбран (A = L·D·L T или A = U·D·U T). Эту подпрограмму имеет смысл вызывать, если у нас уже есть LDLT-разложение матрицы A, иначе будет удобнее воспользоваться второй подпрограммой.
Подпрограмма SMatrixInverse принимает на входе верхний или нижний треугольник матрицы A, самостоятельно вызывает подпрограммы LDLT-разложения и обращения, и возвращает верхний или нижний треугольник матрицы A -1.
Обе подпрограммы возвращают False, если матрица является вырожденной (в этом случае один из единичных блоков матрицы D строго равен нолю), при этом обращение матрицы не осуществляется. Если матрица не является вырожденной и обращение может быть осуществлено, подпрограммы возвращают True. При этом матрица может быть плохо обусловлена, но подпрограммы не проводят оценку числа обусловленности матрицы.
Этот алгоритм перенесен из библиотеки LAPACK.
| C++ | sinverse subpackage | |
| C# | sinverse subpackage |
This article is intended for personal use only.
Исходный код на C#
Исходный код на C++
Исходный код на C++, использующий библиотеки MPFR/GMP.
Исходный код GMP доступен на сайте gmplib.org. Исходный код MPFR доступен на сайте www.mpfr.org.
Исходный код на Free Pascal.
Исходный код на Delphi.
Исходный код на VB.NET.
Исходный код на VBA.
Исходный код на Python (CPython и IronPython).
|
ALGLIB® - numerical analysis library, 1999-2012. |