![]() |
QR-разложение является наиболее известным представителем семейства ортогональных факторизаций, включающего в себя QR, LQ, RQ и QL разложения. Здесь Q обозначает ортогональную матрицу, а R и L - верхне и нижнетреугольные матрицы соответственно. В пакете ALGLIB реализованы наиболее часто использующиеся разложения: QR и LQ. Эти разложения могут использоваться для решения полной по рангу переопределенной системы линейных уравнений, как промежуточный этап в SVD-разложении матрицы, либо для других задач. QL и RQ разложения имеют меньше применений и в пакете ALGLIB не реализованы.
Содержание |
Для вычисления QR(LQ)-разложения в пакете ALGLIB используется алгоритм, схожий с реализованным в LAPACK:
В отличие от алгоритмов треугольной факторизации, входящих в состав ALGLIB, реализация QR(LQ) разложения не является cache oblivious. Тем не менее, даже такой алгоритм может эффективно использовать кэш процессора без специальной настройки (хотя и несколько менее эффективно, чем алгоритмы треугольной факторизации). Алгоритм активно использует ALGLIB BLAS, главным образом - rank-k updates.
С точки зрения быстродействия, решаемые задачи относятся к одному из двух классов:
Пакет ALGLIB содержит подпрограммы для QR(LQ)-разложения как вещественных, так и комплексных матриц. Ниже приведен список вещественных версий подпрограмм:
Комплексные версии подпрограмм имеют аналогичные имена:
| C++ | ortfac subpackage | |
| C# | ortfac 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. |