![]() |
Если симметричная положительно определенная матрица A представлена своим разложением Холецкого A = LL T или A = U TU, то её определитель может быть вычислен, как произведение квадратов диагональных элементов матрицы L или U.
С учетом того, что разложение Холецкого осуществляется в два раза быстрее, чем LU-разложение, которое используется для вычисления определителей матриц общего вида, этот способ является предпочтительным, если требуется вычислить определитель симметричной положительно определенной матрицы. Для вычисления определителей симметричных матриц, не являющихся положительно определенными, можно использовать алгоритм на основе LDLT-разложения.
В этом модуле представлено две подпрограммы. Первая подпрограмма, SPDMatrixCholeskyDet, вычисляет определитель матрицы, чье разложение Холецкого уже известно. Вторая подпрограмма, SPDMatrixDet (от англ. symmetric positive definite), работает с симметричными матрицами, чье разложение Холецкого ещё не построено.
В случае, если переданная в подпрограмму SPDMatrixDet матрица не является положительно определенной, определитель матрицы нельзя вычислить этим алгоритмом, и подпрограмма возвращает вместо определителя отрицательное число. Ошибку легко обнаружить, поскольку определитель положительно определенной матрицы является строго положительным числом.
| C++ | matdet subpackage | |
| C# | matdet 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. |