- PLULinearEquationsSolution
- PLUInverse
- PLUCondNumReciprocal
- PLUQLinearEquationsSolution
- PLUGeTridLinearEquationsSolution
- PLUGeTridCondNumReciprocal
- LDLLinearEquationsSolution
- LDLInverse
- LDLCondNumReciprocal
- LDLSyTridPDLinearEquationsSolution
- LDLSyTridPDCondNumReciprocal
- CholeskyLinearEquationsSolution
- CholeskyInverse
- CholeskyCondNumReciprocal
- SylvesterEquationSchur
- SylvesterEquationSchurBlocked
- Pseudo Inverse
- Polar Decomposition
Факторизованные расчеты
Этот раздел справки описывает набор функций для численного решения задач линейной алгебры, основанных на факторизациях матриц и методах библиотеки LAPACK, обёрнутых в классы matrix, matrixf, matrixc и matrixcf.
Функции ориентированы на высокоэффективные и надёжные вычисления, применимые к различным типам матриц: вещественным и комплексным, одинарной и двойной точности. Они охватывают ключевые задачи прикладной линейной алгебры, включая:
- Решение систем линейных уравнений (СЛАУ);
- Оценку числа обусловленности матрицы;
- Обратные преобразования и вычисление обратных матриц;
- Специальные приёмы на основе SVD для получения псевдообратных и полярных разложений.
Функции работают в связке с предварительными матричными факторизациями, такими как Cholesky, LDL, PLU и другими, реализованными в соответствующих модулях. Используемые алгоритмы повторяют поведение LAPACK и позволяют эффективно обрабатывать как плотные, так и специализированные структуры матриц (например, тридиагональные).
Ниже представлены все доступные функции, сгруппированные по используемому методу факторизации.
Функция |
Выполняемое действие |
---|---|
Решает систему линейных уравнений A * X = B, A**T * X = B или A**H * X = B с использованием LU-разложения квадратной матрицы коэффициентов AF, вычисленного методом FactorizationPLURaw, для нескольких правых частей. LAPACK-функция GETRS. |
|
Вычисляет обратную матрицу для LU-разложения общей матрицы AF, полученного методом FactorizationPLURaw. LAPACK-функция GETRI. |
|
Оценивает обратное число обусловленности общей матрицы A в норме 1 или в бесконечной норме, используя LU-разложение, полученное методом FactorizationPLURaw. LAPACK-функция GECON. |
|
Решает систему линейных уравнений A * X = scale * RHS для общей матрицы A размером n на n, используя LU-разложение с полной перестановкой, вычисленное методом FactorizationPLUQRaw. LAPACK-функция GESC2. |
|
Решает систему линейных уравнений A * X = B, A**T * X = B или A**H * X = B с трехдиагональной матрицей A, используя LU-разложение, вычисленное методом FactorizationPLUGeTridRaw, для нескольких правых частей. LAPACK-функция GTTRS. |
|
Оценивает величину, обратную числу обусловленности общей трехдиагональной матрицы A в норме 1 или в бесконечной норме, используя LU-разложение, полученное методом FactorizationPLUGeTridRaw. LAPACK-функция GTCON. |
|
Решет систему линейных уравнений A * X = B с вещественной симметричной или комплексной эрмитовой неопределенной матрицей, используя разложение A = U**T * D * U или A = L * D * L**T, вычисленное методом FactorizationLDLRaw с несколькими правыми частями. LAPACK-функции SYTRS, HETRS. |
|
Вычисляет обратную матрицу для вещественной симметричной или комплексной эрмитовой неопределенной матрицы, используя разложение A = U**T * D * U or A = L * D * L**T, вычисленное методом FactorizationLDLRaw. LAPACK-функции SYTRI, HETRI. |
|
Оценивает величину, обратную числу обусловленности вещественной симметричной или комплексной эрмитовой неопределенной матрицы A, используя разложение LDLT, вычисленное методом FactorizationLDLRaw. LAPACK-функции SYCON, HECON. |
|
Решает систему линейных уравнений A * X = B с вещественной симметричной или комплексной эрмитовой положительно определенной трехдиагональной матрицей, используя разложение A = L * D * L**T, вычисленное методом FactorizationLDLSyTridPD, для нескольких правых частей. LAPACK-функция PTTRS. |
|
Оценивает величину, обратную числу обусловленности вещественной симметричной или комплексной эрмитовой положительно определенной трехдиагональной матрицы A, используя разложение LDLT, вычисленное методом FactorizationLDLSyTridPD. LAPACK-функция PTCON. |
|
Решает систему линейных уравнений A * X = B , где A — вещественная симметричная или комплексная эрмитова положительно определенная матрица, с использованием разложения A = L * L**T, вычисленного методом FactorizationCholesky с несколькими правыми частями. Соответствует функции POTRS из библиотеки LAPACK. |
|
Вычисляет обратную матрицу для вещественной симметричной или комплексной эрмитовой положительно определенной матрицы A с использованием LLT-разложения, вычисленного методом FactorizationCholesky. LAPACK-функция POTRI. |
|
Оценивает обратное число обусловленности (reciprocal condition number) вещественной симметричной или комплексной эрмитовой положительно определенной матрицы A с использованием LDL-разложения, вычисленного методом FactorizationCholesky. Соответствует LAPACK-функции POCON. |
|
Решает уравнение Сильвестра для вещественных квазитреугольных или комплексных треугольных матриц: A*X + X*B = C, где A и B — верхнетреугольные матрицы. A имеет размер m на m, а B — n на n. Правая часть C и решение X имеют размер m на n. LAPACK-функция TRSYL. |
|
Решает уравнение Сильвестра для вещественных квазитреугольных или комплексных треугольных матриц: A*X + X*B = C, где A и B — верхнетреугольные матрицы. A имеет размер m на m, а B — n на n. Правая часть C и решение X имеют размер m на n. LAPACK-функция TRSYL3. Это блочная (BLAS уровня 3) версия TRSYL. Быстрее до 5 раз, но менее точная. |
|
В библиотеке OpenBLAS нет специальной функции для вычисления псевдообратной матрицы. Однако для этой цели может использоваться сингулярное разложение (SVD) |
|
В библиотеке 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.