![]() |
Если симметричная матрица A представлена своим LDLT-разложением A = LDL T (или A = UDU T), то её определитель равен определителю блочно-диагональной матрицы D.
С учетом того, что LDLT-разложение осуществляется в два раза быстрее, чем LU-разложение, которое используется для вычисления определителей матриц общего вида, этот способ является предпочтительным, если требуется вычислить определитель симметричной матрицы. Для вычисления определителей симметричных положительно определенных матриц можно использовать алгоритм на основе разложения Холецкого.
В этом модуле представлено две подпрограммы. Первая подпрограмма, SMatrixLDLTDet, вычисляет определитель матрицы, чье LDLT-разложение уже известно. Вторая подпрограмма, SMatrixDet, работает с симметричными матрицами, чье LDLT-разложение ещё не построено, самостоятельно вызывая подпрограмму SMatrixLDLT.
| C++ | sdet.h | |
| C# | sdet.cs | |
| MPFR | sdet.h | |
| Delphi | sdet.pas | |
| FreePascal | sdet.pas | |
| VBA | sdet.bas |
This article is intended for personal use only.
Исходный код на C#
Исходный код на C++
Исходный код на C++, использующий библиотеки MPFR/GMP.
Исходный код GMP доступен на сайте gmplib.org. Исходный код MPFR доступен на сайте www.mpfr.org.
Исходный код на Free Pascal.
Исходный код на Delphi.
Исходный код на VBA.
|
ALGLIB project, 1999-2010 |