Главная       Скачать       Коммерческая поддержка       FAQ       Forum       О нас       Английская версия

Обратная матрица

Алгоритм

В пакете ALGLIB реализован рекурсивный алгоритм обращения матриц. Исходная матрица A, заданная одной из своих треугольных факторизаций (LU-разложением или разложением Холецкого) разбивается на четыре части, после чего для матрицы, заданной LU-разложением, используется следующая формула:

Для вычисления матричных произведений общего вида и для умножения на U -1/L -1 используются кэш-эффективные подпрограммы из ALGLIB BLAS. Выражения вида (LU) -1 вычисляются рекурсивно. Базовые случае (размер матрицы достаточно мал, чтобы она поместилась в кэш процессора) решаются с использованием другого алгоритма, основанного на явном обращении треугольных матриц, входящих в треугольную факторизацию A. Использование рекурсии имеет следующие преимущества:

Изложенные выше преимущества позволяют использовать процессор с той эффективностью, с которой это допускают язык/компилятор. Однако следует отметить, что различные языки позволяют достигать различного быстродействия. Что касается алгоритмов линейной алгебры, максимальным быстродействием обладает версия на C++ (и интерфейсы к ней). Версии ALGLIB на других языках в разы уступают ей в быстродействии.

Подпрограммы

Ниже приведен список подпрограмм для обращения матриц, доступных в ALGLIB:

Первые четыре подпрограммы служат для обращения вещественных (префикс R), симметричных положительно определенных (префикс SPD), комплексных (префикс C) и Эрмитовых положительно определенных (префикс HPD) матриц, заданных в явной форме. Следующие четыре подпрограммы решают ту же задачу, но для матриц, заданных соответствующей треугольной факторизацией.

Перед началом работы все подпрограммы проверяют число обусловленности матрицы. Если матрица вырождена (на диагонали одного из треугольных факторов присутствует ноль), либо настолько плохо обусловлена, что в процессе решения может возникнуть переполнение, то подпрограммы присваивают параметру Info соответствующий код ошибки.

Manual entries

C++ matinv subpackage   
C# matinv subpackage   

This article is intended for personal use only.

Скачать ALGLIB

C#

Исходный код на C#

Downloads page

 

C++

Исходный код на C++

Downloads page

 

C++, арифметика высокой точности

Исходный код на C++, использующий библиотеки MPFR/GMP.

Исходный код GMP доступен на сайте gmplib.org. Исходный код MPFR доступен на сайте www.mpfr.org.

Downloads page

 

FreePascal

Исходный код на Free Pascal.

Downloads page

 

Delphi

Исходный код на Delphi.

Downloads page

 

VB.NET

Исходный код на VB.NET.

Downloads page

 

VBA

Исходный код на VBA.

Downloads page

 

Python

Исходный код на Python (CPython и IronPython).

Downloads page

 

 

ALGLIB® - numerical analysis library, 1999-2017.
ALGLIB is registered trademark of the ALGLIB Project.