- PLULinearEquationsSolution
- PLUInverse
- PLUCondNumReciprocal
- PLUQLinearEquationsSolution
- PLUGeTridLinearEquationsSolution
- PLUGeTridCondNumReciprocal
- LDLLinearEquationsSolution
- LDLInverse
- LDLCondNumReciprocal
- LDLSyTridPDLinearEquationsSolution
- LDLSyTridPDCondNumReciprocal
- CholeskyLinearEquationsSolution
- CholeskyInverse
- CholeskyCondNumReciprocal
- SylvesterEquationSchur
- SylvesterEquationSchurBlocked
- Pseudo Inverse
- Polar Decomposition
SylvesterEquationSchurBlocked
Решает уравнение Сильвестра для вещественных квазитреугольных или комплексных треугольных матриц:
A*X + X*B = C
где A и B — верхнетреугольные матрицы. A имеет размер m на m, а B — n на n. Правая часть C и решение X имеют размер m на n.
Матрицы A и B должны быть представлены в канонической форме Шура (как возвращают функции EigenHessenbergSchurQ или EigenSolverSchur). Для вещественных квазитреугольных матриц это блочно-верхнетреугольная форма с диагональными блоками 1×1 и 2×2; при этом каждый блок 2×2 имеет равные диагональные элементы и внедиагональные элементы противоположных знаков.
LAPACK-функция TRSYL3. Это блочная (BLAS уровня 3) версия TRSYL. Быстрее до 5 раз, но менее точная.
Вычисления для типа matrix<double>
bool matrix::SylvesterEquationSchurBlocked(
|
Вычисления для типа matrix<float>
bool matrixf::SylvesterEquationSchurBlocked(
|
Вычисления для типа matrix<complex>
bool matrix::SylvesterEquationSchurBlocked(
|
Вычисления для типа matrix<complexf>
bool matrix::SylvesterEquationSchurBlocked(
|
Параметры
B
[in] Вещественная квазитреугольная или комплексная треугольная матрица B в форме Шура (выходной параметр schur_matrix в EigenSolverSchur или schur_t в EigenHessenbergSchurQ)
QA
[in] Вещественная ортогональная или комплексная унитарная матрица векторов Шура исходной матрицы A (выходной параметр schur_vectors в EigenSolverSchur или schur_z в EigenHessenbergSchurQ)
QB
[in] Вещественная ортогональная или комплексная унитарная матрица векторов Шура исходной матрицы A (выходной параметр schur_vectors в EigenSolverSchur или schur_z в EigenHessenbergSchurQ)
C
[in] Матрица C, столбцы которой представляют собой правые части систем линейных уравнений.
X
[out] Матрица X с решением уравнения Сильвестра.
Возвращаемое значение
Возвращает true в случае успеха, иначе false в случае ошибки.
Примечание
Выходная матрица X имеет те же размеры, что и входная матрица C.
Функция TRSYL3 обрабатывает только верхнетреугольные матрицы A и B. Для того, чтобы вычислить уравнение Сильвестра для любых квадратных матриц, необходимо предварительно использовать разложение Шура. Например, имеем 2 обычные матрицы A и B, тогда получаем две пары матриц разложения Шура:
A.EigenSolverShur(EIGSCHUR_V,EV,SA,QA);
B.EigenSolverShur(EIGSCHUR_V,EV,SB,QB);
и решаем уравнение Сильвестра:
SA.SylvesterEquationSchurBlocked(SB,QA,QB,C,X);