Factored Calculations

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

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

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

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

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

Функция

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

PLULinearEquationsSolution

Solves a system of linear equations  A * X = B,  A**T * X = B, or  A**H * X = B with an LU-factored square coefficient matrix AF computed by FactorizationPLURaw, with multiple right-hand sides. LAPACK function GETRS.

PLUInverse

Computes the inverse of an LU-factored general matrix AF computed by FactorizationPLURaw. LAPACK function GETRI.

PLUCondNumReciprocal

Estimates the reciprocal of the condition number of a general matrix A in either the one-norm or infinity-norm, using the LU factorization computed by FactorizationPLURaw. LAPACK function GECON.

PLUQLinearEquationsSolution

Solves a system of linear equations A * X = scale * RHS with a general N-by-N matrix A using the LU-factoization with complete pivoting computed by FactorizationPLUQRaw. LAPACK function GESC2.

PLUGeTridLinearEquationsSolution

Solves a system of linear equations A * X = B,  A**T * X = B, or  A**H * X = B with a tridiagonal matrix A using the LU-factorization computed by FactorizationPLUGeTridRaw, with multiple right-hand sides. LAPACK function GTTRS.

PLUGeTridCondNumReciprocal

Estimates the reciprocal of the condition number of a general tridiagonal matrix A in either the one-norm or infinity-norm, using the LU factorization computed by FactorizationPLUGeTridRaw. LAPACK function GTCON.

LDLLinearEquationsSolution

Solves a system of linear equations  A * X = B  with a real symmetric or complex Hermitian indefinite matrix using the factorization A = U**T * D * U or A = L * D * L**T computed by FactorizationLDLRaw, with multiple right-hand sides. LAPACK functions SYTRS, HETRS.

LDLInverse

Computes the inverse of a real symmetric or complex Hermitian indefinite matrix using the factorization A = U**T * D * U or A = L * D * L**T computed by FactorizationLDLRaw. LAPACK functions SYTRI, HETRI.

LDLCondNumReciprocal

Estimates the reciprocal of the condition number of a real symmetric or complex Hermitian indefinite matrix A, using the LDLT factorization computed by FactorizationLDLRaw. LAPACK functions SYCON, HECON.

LDLSyTridPDLinearEquationsSolution

Solves a system of linear equations  A * X = B  with a real symmetric or complex Hermitian positive-definite tridiagonal matrix using the factorization A = L * D * L**T computed by FactorizationLDLSyTridPD, with multiple right-hand sides. LAPACK function PTTRS.

LDLSyTridPDCondNumReciprocal

Estimates the reciprocal of the condition number of a real symmetric or complex Hermitian positive-definite tridiagonal matrix A using the LDLT factorization computed by FactorizationLDLSyTridPD. LAPACK function PTCON.

CholeskyLinearEquationsSolution

Solves a system of linear equations  A * X = B  with a real symmetric or complex Hermitian positive-definite matrix using the factorization A = L * L**T computed by FactorizationCholesky, with multiple right-hand sides. LAPACK function POTRS.

CholeskyInverse

Computes the inverse of a real symmetric or complex Hermitian positive-definite matrix using the LLT factorization computed by FactorizationCholesky. LAPACK function POTRI.

CholeskyCondNumReciprocal

Estimates the reciprocal of the condition number of a real symmetric or complex Hermitian positive-definite matrix A using the LDL factorization computed by FactorizationCholesky. LAPACK function POCON.

SylvesterEquationSchur

Solves Sylvester equation for real quasi-triangular or complex triangular matrices: A*X + X*B = C where  A and B are both upper triangular. A is m-by-m and B is n-by-n; the right hand side C and the solution X are m-by-n. LAPACK function TRSYL.

SylvesterEquationSchurBlocked

Solves Sylvester equation for real quasi-triangular or complex triangular matrices: A*X + X*B = C where  A and B are both upper triangular. A is m-by-m and B is n-by-n; the right hand side C and the solution X are m-by-n. LAPACK function TRSYL3. This is the block (BLAS level 3) version of TRSYL. Faster up to 5 times but not so accurate.

Pseudo Inverse

There is no special function in the OpenBLAS library to calculate the pseudo-inverse of a matrix. However, for this purpose can be used singular value decomposition (SVD)

Polar Decomposition

There is no special function in the OpenBLAS library to calculate the polar decomposition of a matrix. However, for this purpose can be used singular value decomposition (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.