EigenSolver2Shur

Вычисление для пары обычных квадратных матриц обобщённых собственных значений, обобщённых собственных векторов, обобщённых форм Шура и левых и правых векторов Шура (lapack-функция GGES).

Вычисляет обобщенные собственные значения, обобщенную действительную/комплексную форму Шура (S,T), опционально левую и/или правую матрицы векторов Шура (vsl и vsr) для пары действительных/комплексных несимметричных матриц (A,B) размером n на n. Это дает обобщенную факторизацию Шура:

(A,B) = ( vsl*S *vsrH, vsl*T*vsrH )

Также может упорядочивать собственные значения таким образом, чтобы выбранный кластер собственных значений появлялся в ведущих диагональных блоках верхней квазитреугольной матрицы S и верхней треугольной матрицы T. Затем ведущие столбцы vsl и vsr образуют ортонормированный/унитарный базис для соответствующих левого и правого собственных пространств (дефляционных подпространств).

Вычисления для типа matrix<double>

bool  matrix::EigenSolver2Shur(
   matrix&                B,        // вторая матрица в паре
   ENUM_EIG_VECTORS       jobvs,    // способ вычисления левых и правых векторов
   vector&                alpha,    // вектор рассчитанных собственных значений
   vector&                beta,     // вектор делителей собственных значений
   matrix&                shur_s,   // матрица S в форме Шура
   matrix&                shur_t,   // матрица T в форме Шура
   matrix&                vsl,      // матрица левых векторов Шура vsl
   matrix&                vsr       // матрица правых векторов Шура vsr
   );

Вычисления для типа matrix<float>

bool  matrixf::EigenSolver2Shur(
   matrixf&               B,        // вторая матрица в паре
   ENUM_EIG_VECTORS       jobvs,    // способ вычисления левых и правых векторов
   vectorcf&              alpha,    // вектор рассчитанных собственных значений
   vectorf&               beta,     // вектор делителей собственных значений
   matrixf&               shur_s,   // матрица S в форме Шура
   matrixf&               shur_t,   // матрица T в форме Шура
   matrixf&               vsl,      // матрица левых векторов Шура vsl
   matrixf&               vsr       // матрица правых векторов Шура vsr
   );

Вычисления для типа matrix<complex>

bool  matrix::EigenSolver2Shur(
   matrixc&               B,        // вторая матрица в паре
   ENUM_EIG_VECTORS       jobvs,    // способ вычисления левых и правых векторов
   vectorc&               alpha,    // вектор рассчитанных собственных значений
   vectorc&               beta,     // вектор делителей собственных значений
   matrixc&               shur_s,   // матрица S в форме Шура
   matrixc&               shur_t,   // матрица T в форме Шура
   matrixc&               vsl,      // матрица левых векторов Шура vsl
   matrixc&               vsr       // матрица правых векторов Шура vsr
   );

Вычисления для типа matrix<complexf>

bool  matrixcf::EigenSolver2Shur(
   matrixcf&              B,        // вторая матрица в паре
   ENUM_EIG_VECTORS       jobvs,    // способ вычисления левых и правых векторов
   vectorcf&              alpha,    // вектор рассчитанных собственных значений
   vectorcf&              beta,     // вектор делителей собственных значений
   matrixcf&              shur_s,   // матрица S в форме Шура
   matrixcf&              shur_t,   // матрица T в форме Шура
   matrixcf&              vsl,      // матрица левых векторов Шура vsl
   matrixcf&              vsr       // матрица правых векторов Шура vsr
   );

Параметры

B

[out]  Вторая матрица в паре.

jobvs

[in]  Значение из перечисления ENUM_EIG_VECTORS, определяющее способ вычисления левых и правых собственных векторов.

alpha

[out]  Вектор собственных значений.

beta

[out]  Вектор делителей  собственных значений.

shur_s

[out]  Mатрица S, блочная верхнетреугольная матрица Шура (форма Шура для входной матрицы).

shur_t

[out]  Mатрица T, блочная верхнетреугольная матрица Шура (форма Шура для второй матрицы в паре).

vsl

[out]  Матрица левых векторов Шура.

vsr

[out]  Матрица правых векторов Шура.

 

Возвращаемое значение

Возвращает true в случае успеха, иначе false в случае ошибки.

Примечание

Расчёт зависит от значений параметра jobvs.

Вторая матрица в паре должна быть того же самого размера, что и первая (входная) матрица.

Реальные (не комплексные) матрицы могут иметь комплексное решение. Поэтому вектор собственных значений должен быть комплексным. В случае комплексного решения код ошибки устанавливается в 4019 (ERR_MATH_OVERFLOW). В противном случае нужно учитывать только реальные части комплексных значений вектора собственных значений.

EigenSolverShur

Перечисление, определяющее необходимость вычисления собственных векторов.

Идентификатор

Описание

EIGVECTORS_N

Вычисляются только собственные значения, без векторов.

EIGVECTORS_L

Вычисляются только левые собственные векторы.

EIGVECTORS_R

Вычисляются только правые собственные векторы.

EIGVECTORS_LR

Вычисляются левые и правые собственные векторы, собственные значения вычисляются всегда.