Факторизованные расчеты

Этот раздел справки описывает набор функций для численного решения задач линейной алгебры, основанных на факторизациях матриц и методах библиотеки LAPACK, обёрнутых в классы matrix, matrixf, matrixc и matrixcf.

Функции ориентированы на высокоэффективные и надёжные вычисления, применимые к различным типам матриц: вещественным и комплексным, одинарной и двойной точности. Они охватывают ключевые задачи прикладной линейной алгебры, включая:

  • Решение систем линейных уравнений (СЛАУ);
  • Оценку числа обусловленности матрицы;
  • Обратные преобразования и вычисление обратных матриц;
  • Специальные приёмы на основе SVD для получения псевдообратных и полярных разложений.

Функции работают в связке с предварительными матричными факторизациями, такими как Cholesky, LDL, PLU и другими, реализованными в соответствующих модулях. Используемые алгоритмы повторяют поведение LAPACK и позволяют эффективно обрабатывать как плотные, так и специализированные структуры матриц (например, тридиагональные).

Ниже представлены все доступные функции, сгруппированные по используемому методу факторизации.

Функция

Выполняемое действие

PLULinearEquationsSolution

Решает систему линейных уравнений A * X = B,  A**T * X = B или A**H * X = B с использованием LU-разложения квадратной матрицы коэффициентов AF, вычисленного методом FactorizationPLURaw, для нескольких правых частей. LAPACK-функция GETRS.

PLUInverse

Вычисляет обратную матрицу для LU-разложения общей матрицы AF, полученного методом FactorizationPLURaw. LAPACK-функция GETRI.

PLUCondNumReciprocal

Оценивает обратное число обусловленности общей матрицы A в норме 1 или в бесконечной норме, используя LU-разложение, полученное методом FactorizationPLURaw. LAPACK-функция GECON.

PLUQLinearEquationsSolution

Решает систему линейных уравнений A * X = scale * RHS для общей матрицы A размером n на n, используя LU-разложение с полной перестановкой, вычисленное методом FactorizationPLUQRaw. LAPACK-функция GESC2.

PLUGeTridLinearEquationsSolution

Решает систему линейных уравнений A * X = B,  A**T * X = B или A**H * X = B с трехдиагональной матрицей A, используя LU-разложение, вычисленное методом FactorizationPLUGeTridRaw, для нескольких правых частей. LAPACK-функция GTTRS.

PLUGeTridCondNumReciprocal

Оценивает величину, обратную числу обусловленности общей трехдиагональной матрицы A в норме 1 или в бесконечной норме, используя LU-разложение, полученное методом FactorizationPLUGeTridRaw. LAPACK-функция GTCON.

LDLLinearEquationsSolution

Решет систему линейных уравнений  A * X = B  с вещественной симметричной или комплексной эрмитовой неопределенной матрицей, используя разложение A = U**T * D * U или A = L * D * L**T, вычисленное методом FactorizationLDLRaw с несколькими правыми частями. LAPACK-функции SYTRS, HETRS.

LDLInverse

Вычисляет обратную матрицу для вещественной симметричной или комплексной эрмитовой неопределенной матрицы, используя разложение A = U**T * D * U or A = L * D * L**T, вычисленное методом FactorizationLDLRaw. LAPACK-функции SYTRI, HETRI.

LDLCondNumReciprocal

Оценивает величину, обратную числу обусловленности вещественной симметричной или комплексной эрмитовой неопределенной матрицы A, используя разложение LDLT, вычисленное методом FactorizationLDLRaw. LAPACK-функции SYCON, HECON.

LDLSyTridPDLinearEquationsSolution

Решает систему линейных уравнений  A * X = B  с вещественной симметричной или комплексной эрмитовой положительно определенной трехдиагональной матрицей, используя разложение A = L * D * L**T, вычисленное методом FactorizationLDLSyTridPD, для нескольких правых частей. LAPACK-функция PTTRS.

LDLSyTridPDCondNumReciprocal

Оценивает величину, обратную числу обусловленности вещественной симметричной или комплексной эрмитовой положительно определенной трехдиагональной матрицы A, используя разложение LDLT, вычисленное методом FactorizationLDLSyTridPD. LAPACK-функция PTCON.

CholeskyLinearEquationsSolution

Решает систему линейных уравнений A * X = B , где A — вещественная симметричная или комплексная эрмитова положительно определенная матрица, с использованием разложения A = L * L**T, вычисленного методом FactorizationCholesky с несколькими правыми частями. Соответствует функции POTRS из библиотеки LAPACK.

CholeskyInverse

Вычисляет обратную матрицу для вещественной симметричной или комплексной эрмитовой положительно определенной матрицы A с использованием LLT-разложения, вычисленного методом FactorizationCholesky. LAPACK-функция POTRI.

CholeskyCondNumReciprocal

Оценивает обратное число обусловленности (reciprocal condition number) вещественной симметричной или комплексной эрмитовой положительно определенной матрицы A с использованием LDL-разложения, вычисленного методом FactorizationCholesky. Соответствует LAPACK-функции POCON.

SylvesterEquationSchur

Решает уравнение Сильвестра для вещественных квазитреугольных или комплексных треугольных матриц: A*X + X*B = C, где A и B — верхнетреугольные матрицы. A имеет размер m на m, а B — n на n. Правая часть C и решение X имеют размер m на n. LAPACK-функция TRSYL.

SylvesterEquationSchurBlocked

Решает уравнение Сильвестра для вещественных квазитреугольных или комплексных треугольных матриц: A*X + X*B = C, где A и B — верхнетреугольные матрицы. A имеет размер m на m, а B — n на n. Правая часть C и решение X имеют размер m на n. LAPACK-функция TRSYL3. Это блочная (BLAS уровня 3) версия TRSYL. Быстрее до 5 раз, но менее точная.

Pseudo Inverse

В библиотеке OpenBLAS нет специальной функции для вычисления псевдообратной матрицы. Однако для этой цели может использоваться сингулярное разложение (SVD)

Polar Decomposition

В библиотеке OpenBLAS нет специальной функции для вычисления полярного разложения матрицы. Однако для этой цели может использоваться сингулярное разложение (SVD)

Функции обеспечивают поддержку различных типов матриц (вещественных, комплексных, одинарной и двойной точности) и охватывают следующие ключевые задачи.

Оценка числа обусловленности (Condition Number Estimation)

В отличие от истинного числа обусловленности, оценка производится приблизительно, но гораздо быстрее.  Здесь CondNumReciprocal обозначает обратное инвертированное число обусловенности (то есть 1/cond_number).

Функции типа *CondNumReciprocal предназначены для оценки обратной величины числа обусловленности матрицы:

  • CholeskyCondNumReciprocal — для положительно определённых матриц с факторизацией LLT;
  • LDLCondNumReciprocal — для неопределённых симметричных или эрмитовых матриц с факторизацией LDL;
  • LDLSyTridPDCondNumReciprocal — для положительно определённых симметричных тридиагональных матриц;
  • PLUCondNumReciprocal, PLUGeTridCondNumReciprocal — для обобщённых и тридиагональных матриц с LU-факторизацией.

Обратные матрицы (Matrix Inverse)

Функции типа *Inverse вычисляют обратную матрицу на основе соответствующей факторизации:

  • CholeskyInverse, LDLInverse, PLUInverse — для различных форм факторизаций;
  • используют массив индексов ipiv, если требуется информация о перестановках.

Решение СЛАУ (Linear System Solvers)

Функции *LinearEquationsSolution решают СЛАУ вида A * X = B:

  • Поддерживаются как матричные, так и векторные правые части;
  • Учитывается возможность транспонирования (или эрмитового сопряжения) матрицы коэффициентов через ENUM_EQUATIONS_FORM;
  • Отдельные функции предусмотрены для тридиагональных и обобщённых матриц.

Поддержка расширенных LU-факторизаций

Функция PLUQLinearEquationsSolution решает систему с масштабированием:

A * X = scale * B

на основе полной LU-факторизации с перестановками по строкам и столбцам.

Специальные методы (на основе SVD)

Хотя функции библиотеки напрямую не реализуют полярное разложение или псевдообратную матрицу, раздел содержит примеры реализации на базе сингулярного разложения:

  • PolarDecomposition — разложение A = Q * P, где Q — ортогональная, P — симметричная положительно определённая матрица;
  • PseudoInverse — вычисление псевдообратной матрицы A+ = V * Σ⁺ * Uᵀ.

 

Примечания

  • Все функции возвращают true при успехе, false при ошибке.
  • Необходимыми предпосылками являются факторизации, выполненные заранее (FactorizationCholesky, FactorizationLDLRaw, GETRF и т.д.).
  • Результаты вычислений могут быть чувствительны к численной стабильности, особенно при малых значениях rcond.