- PLULinearEquationsSolution
- PLUInverse
- PLUCondNumReciprocal
- PLUQLinearEquationsSolution
- PLUGeTridLinearEquationsSolution
- PLUGeTridCondNumReciprocal
- LDLLinearEquationsSolution
- LDLInverse
- LDLCondNumReciprocal
- LDLSyTridPDLinearEquationsSolution
- LDLSyTridPDCondNumReciprocal
- CholeskyLinearEquationsSolution
- CholeskyInverse
- CholeskyCondNumReciprocal
- SylvesterEquationSchur
- SylvesterEquationSchurBlocked
- Pseudo Inverse
- Polar Decomposition
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.
A and B must be in Schur canonical form (as returned by EigenHessenbergSchurQ or EigenSolverSchur), that is, in case of real quasi-triangular, block upper triangular with 1-by-1 and 2-by-2 diagonal blocks; each 2-by-2 diagonal block has its diagonal elements equal and its off-diagonal elements of opposite sign.
LAPACK function TRSYL3. This is the block (BLAS level 3) version of TRSYL. Faster up to 5 times but not so accurate.
Computing for type matrix<double>
bool matrix::SylvesterEquationSchurBlocked(
|
Computing for type matrix<float>
bool matrixf::SylvesterEquationSchurBlocked(
|
Computing for type matrix<complex>
bool matrix::SylvesterEquationSchurBlocked(
|
Computing for type matrix<complexf>
bool matrix::SylvesterEquationSchurBlocked(
|
Parameters
B
[in] Real quasi-triangular or complex triangular matrix B in Schur form (output parameter schur_matrix in EigenSolverSchur or schur_t in EigenHessenbergSchurQ)
QA
[in] Real orthogonal or complex unitary matrix of Schur vectors of the original matrix A (output parameter schur_vectors in EigenSolverSchur or schur_z in EigenHessenbergSchurQ)
QB
[in] Real orthogonal or complex unitary matrix of Schur vectors of the original matrix A (output parameter schur_vectors in EigenSolverSchur or schur_z in EigenHessenbergSchurQ)
C
[in] Matrix C whose columns are the right-hand sides for the systems of equations.
X
[out] Matrix X with solution of Sylvester equation.
Return Value
Return true if successful, otherwise false in case of an error.
Note
Output matrix X has the same sizes as input matrix 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);