EigenVectorsTriangularZBlocked

Вычисляет собственные векторы верхней квазитреугольной или комплексной верхнетреугольной матрицы, полученной с помощью функций EigenHessenbergSchurQ или EigenSolverSchur.

A = Q * T * Q**H, где T — верхняя квазитреугольная матрица (форма Шура), а Q — ортогональная матрица векторов Шура.

Функция LAPACK TREVC3. Это блочная версия метода TREVC (уровень 3 OpenBLAS). Работает быстрее, но может быть менее точной.

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

bool  matrix::EigenVectorsTriangularZBlocked(
   ENUM_EIG_VECTORS      side,                    // вычислять левые и/или правые векторы
   matrix&               schur_z,                 // ортогональная матрица или векторы Шура
   matrix&               left_eigenvectors,       // матрица вычисленных левых векторов
   matrix&               right_eigenvectors       // матрица вычисленных правых векторов
   );

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

bool  matrixf::EigenVectorsTriangularZBlocked(
   ENUM_EIG_VECTORS      side,                    // вычислять левые и/или правые векторы
   matrixf&              schur_z,                 // ортогональная матрица или векторы Шура
   matrixf&              left_eigenvectors,       // матрица вычисленных левых векторов
   matrixf&              right_eigenvectors       // матрица вычисленных правых векторов
   );

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

bool  matrixc::EigenVectorsTriangularZBlocked(
   ENUM_EIG_VECTORS      side,                    // вычислять левые и/или правые векторы
   matrixc&              schur_z,                 // ортогональная матрица или векторы Шура
   matrixc&              left_eigenvectors,       // матрица вычисленных левых векторов
   matrixc&              right_eigenvectors       // матрица вычисленных правых векторов
   );

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

bool  matrixcf::EigenVectorsTriangularZBlocked(
   ENUM_EIG_VECTORS      side,                    // вычислять левые и/или правые векторы
   matrixcf&             schur_z,                 // ортогональная матрица или векторы Шура
   matrixcf&             left_eigenvectors,       // матрица вычисленных левых векторов
   matrixcf&             right_eigenvectors       // матрица вычисленных правых векторов
   );

Параметры

side

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

shur_z

[in]  Ортогональная матрица векторов Шура, вычисленная функциями EigenHessenbergSchurQ или EigenSolverSchur. Может быть матрицей нулевого размера. В этом случае обратное преобразование не выполняется.

left_eigenvectors

[out] Матрица левых собственных векторов.

right_eigenvectors

[out] Матрица правых собственных векторов.

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

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

Примечание

Правый собственный вектор x и левый собственный вектор y матрицы T, соответствующие собственному значению w, определяются как:

   T*x = w*x,     (y**H)*T = w*(y**H)

где y**H — сопряженно-транспонированный вектор y.

Собственные значения не передаются в эту функцию явно, а считываются непосредственно из диагональных блоков T.

Функция возвращает матрицы X и/или Y правых и левых собственных векторов T, либо произведения Q*X и/или Q*Y, где Q — входная ортогональная матрица. Если Q — ортогональный множитель, который преобразует матрицу A в форму Шура T, то Q*X и Q*Y — это матрицы правых и левых собственных векторов исходной матрицы A.

ENUM_EIG_VECTORS

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

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

Описание

EIGVECTORS_N

Не может использоваться для этого метода.

EIGVECTORS_L

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

EIGVECTORS_R

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

EIGVECTORS_LR

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