EigenSolverX

Вычисление собственных значений и собственных векторов обычной квадратной матрицы в режиме эксперта (Expert mode), то есть с возможностью влиять на алгоритм расчёта и возможностью получить сопутствующие расчётные данные (lapack-функция GEEVX).

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

bool  matrix::EigenSolverX(
   ENUM_EIG_BALANCE       balance,     // способ балансировки входной матрицы
   ENUM_EIG_VECTORS       jobv,        // необходимость вычисления левых и правых собственных векторов
   ENUM_EIG_SENSE         sense,       // необходимость вычисления обратных чисел обусловленности (reciprocal condition numbers)
   vector&                EV,          // вектор рассчитанных собственных значений
   matrix&                VL,          // матрица рассчитанных левых векторов
   matrix&                VR,          // матрица рассчитанных правых векторов
   matrix&                shur,        // сбалансированная матрица в форме Шура
   long&                  ilo,         // нижний индекс сбалансированной матрицы
   long&                  ihi,         // верхний индекс сбалансированной матрицы
   vector&                scale,       // подробности перестановок и масштабирования при балансировке входной матрицы
   double&                one_norm,    // 1-норма сбалансированной матрицы
   vector&                rconde,      // вектор обратных чисел обусловленности для каждого собственного значения
   vector&                rcondv       // вектор обратных чисел обусловленности для каждого правого собственного вектора
   );

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

bool  matrix::EigenSolverX(
   ENUM_EIG_BALANCE       balance,     // способ балансировки входной матрицы
   ENUM_EIG_VECTORS       jobv,        // необходимость вычисления левых и правых собственных векторов
   ENUM_EIG_SENSE         sense,       // необходимость вычисления обратных чисел обусловленности (reciprocal condition numbers)
   vector&                EV,          // вектор рассчитанных собственных значений
   matrixc&               VL,          // матрица рассчитанных левых векторов
   matrixc&               VR,          // матрица рассчитанных правых векторов
   matrixc&               shur,        // сбалансированная матрица в форме Шура
   long&                  ilo,         // нижний индекс сбалансированной матрицы
   long&                  ihi,         // верхний индекс сбалансированной матрицы
   vector&                scale,       // подробности перестановок и масштабирования при балансировке входной матрицы
   double&                one_norm,    // 1-норма сбалансированной матрицы
   vector&                rconde,      // вектор обратных чисел обусловленности для каждого собственного значения
   vector&                rcondv       // вектор обратных чисел обусловленности для каждого правого собственного вектора 
   );

Параметры

balance

[in]  Значение из перечисления ENUM_EIG_BALANCE, определяющее необходимость и способ балансировки входной матрицы; применяется для улучшения обусловленности собственных значений.

jobv

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

sense

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

EV

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

VL

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

VR

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

shur

[out]  Сбалансированная матрица в форме Шура; не заполняется, если не рассчитываются ни левые, ни правые собственные векторы.

ilo

[out]  Нижний индекс сбалансированной матрицы; не заполняется, если балансировка не применяется.

ihi

[out]  Верхний индекс сбалансированной матрицы; не заполняется, если балансировка не применяется.

scale

[out]  Вектор подробностей перестановок и масштабирования при балансировке входной матрицы;

Детали перестановок и масштабирования, применяемых при балансировке А:

Если P(j) — это индекс строки и столбца, переставляемых местами со строкой и столбцом j, а D(j) — это коэффициент масштабирования, примененный к строке и столбцу j, тогда

scale(j) = P(j), для j = 1,...,ilo-1

= D(j), для j = ilo,...,ihi

= P(j) для j = ihi+1,..., n.

Порядок, в котором выполняются перестановки: сначала n в ihi+1, затем 1 в ilo-1.

one_norm

[out]  1-норма сбалансированной матрицы (максимум из сумм абсолютных значений элементов любой из колонок матрицы).

rconde

[out]  Вектор обратных чисел обусловленности для каждого собственного значения; рассчитывается если значение параметра sense равно 'E' или 'B'.

rcondv

[out]  Вектор обратных чисел обусловленности для каждого правого собственного вектора; рассчитывается если значение параметра sense равно 'V' или 'B.

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

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

Примечание

Балансировка входной матрицы зависит от значения параметра balance.

Описание функции GEEVX — https://www.irya.unam.mx/computo/sites/manuales/fce12/mkl/mkl_manual/lse/functn_geevx.htm

ENUM_EIG_BALANCE

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

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

Описание

EIGBALANCE_N

Не проводится диагональное масштабирование и перестановка.

EIGBALANCE_P

Выполняются перестановки, чтобы привести матрицу к почти верхнетреугольному виду. Не выполняется диагональное масштабирование

EIGBALANCE_S

Выполняется диагональное масштабирование матрицы. Перестановка не проводится

EIGBALANCE_B      

Выполняется и диагональное масштабирование, и перестановка.

ENUM_EIG_VECTORS

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

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

Описание

EIGVECTORS_N

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

EIGVECTORS_L

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

EIGVECTORS_R

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

EIGVECTORS_LR

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

 

ENUM_EIG_SENSE

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

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

Описание

EIGSENSE_N

Не вычисляется ни одно из обратных чисел обусловленности.

EIGSENSE_E

Вычисляются только для собственных значений

EIGSENSE_V

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

EIGSENSE_B      

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