EigenHessenbergSchurQ

Вычисляет собственные значения матрицы Хессенберга H и матриц T и Z из разложения Шура H = Z T Z**T, где T — верхняя квазитреугольная матрица (форма Шура), а Z — ортогональная матрица векторов Шура. Опционально Z может быть перемножена справа с входной ортогональной матрицей Q, что позволяет получить факторизацию Шура матрицы A, которая была приведена к форме Хессенберга H ортогональной матрицей Q:

    A = Q*H*Q**T = (QZ)*T*(QZ)**T.

LAPACK-функция HSEQR. См. также Разложение Шура.

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

bool  matrix::EigenHessenbergSchurQ(
   matrix&               Q,                       // ортогональная матрица Q
   vectorc&              eigen_values,            // вектор вычисленных собственных значений
   matrix&               schur_t,                 // матрица T в форме Шура
   matrix&               schur_z                  // матрица Z векторов Шура
   );

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

bool  matrixf::EigenHessenbergSchurQ(
   matrixf&              Q,                       // ортогональная матрица Q
   vectorcf&             eigen_values,            // вектор вычисленных собственных значений
   matrixf&              schur_t,                 // матрица T в форме Шура
   matrixf&              schur_z                  // матрица Z векторов Шура
   );

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

bool  matrixc::EigenHessenbergSchurQ(
   matrixc&              Q,                       // ортогональная матрица Q
   vectorc&              eigen_values,            // вектор вычисленных собственных значений
   matrixc&              schur_t,                 // матрица T в форме Шура
   matrixc&              schur_z                  // матрица Z векторов Шура
   );

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

bool  matrixcf::EigenHessenbergSchurQ(
   matrixcf&             Q,                       // ортогональная матрица Q
   vectorcf&             eigen_values,            // вектор вычисленных собственных значений
   matrixcf&             schur_t,                 // матрица T в форме Шура
   matrixcf&             schur_z                  // матрица Z векторов Шура
   );

Параметры

Q

[in]  Ортогональная матрица Q, полученная методом ReflectHessenbergToQ. Матрица Q может быть матрицей нулевого размера. В этом случае разложению подвергается сама матрица Хессенберга H, а не исходная матрица A. Если используется матрица Q, то вычисляется разложение исходной матрицы A, приведенной к форме Хессенберга (см. ReduceToHessenberg).

eigen_values

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

schur_t

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

schur_z

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

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

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

Примечание

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