EigenSolver

Вычисление собственных значений и собственных векторов обычной квадратной матрицы классическим алгоритмом (LAPACK-функция GEEV).

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

bool  matrix::EigenSolver(
   ENUM_EIG_VECTORS      jobv,                    // вычисление левых и правых собственных векторов
   vectorc&              eigen_values,            // вектор рассчитанных собственных значений
   matrix&               left_eigenvectors,       // матрица рассчитанных левых векторов
   matrix&               right_eigenvectors       // матрица рассчитанных правых векторов
   );

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

bool  matrixf::EigenSolver(
   ENUM_EIG_VECTORS      jobv,                    // вычисление левых и правых собственных векторов
   vectorcf&             eigen_values,            // вектор рассчитанных собственных значений
   matrixf&              left_eigenvectors,       // матрица рассчитанных левых векторов
   matrixf&              right_eigenvectors       // матрица рассчитанных правых векторов
   );

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

bool  matrixc::EigenSolver(
   ENUM_EIG_VECTORS      jobv,                    // вычисление левых и правых собственных векторов
   vectorc&              eigen_values,            // вектор рассчитанных собственных значений
   matrixc&              left_eigenvectors,       // матрица рассчитанных левых векторов
   matrixc&              right_eigenvectors       // матрица рассчитанных правых векторов  
   );

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

bool  matrixcf::EigenSolver(
   ENUM_EIG_VECTORS      jobv,                    // вычисление левых и правых собственных векторов
   vectorcf&             eigen_values,            // вектор рассчитанных собственных значений
   matrixcf&             left_eigenvectors,       // матрица рассчитанных левых векторов
   matrixcf&             right_eigenvectors       // матрица рассчитанных правых векторов  
   );

Параметры

jobv

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

EV

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

left_eigenvectors

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

right_eigenvectors

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

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

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

Примечание

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

Если параметр установлен в значение EIGVECTORS_N, левые и правые векторы не рассчитываются. Рассчитываются только собственные значения.

Если установлено EIGVECTORS_L, рассчитываются только левые собственные векторы, правые векторы не рассчитываются.

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

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

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

ENUM_EIG_VECTORS

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

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

Описание

EIGVECTORS_N

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

EIGVECTORS_L

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

EIGVECTORS_R

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

EIGVECTORS_LR

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