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)
   vectorc&              eigen_values,            // вектор рассчитанных собственных значений
   matrix&               left_eigenvectors,       // матрица рассчитанных левых векторов
   matrix&               right_eigenvectors       // матрица рассчитанных правых векторов
   matrix&               shur_matrix,             // сбалансированная матрица в форме Шура
   long&                 ilo,                     // нижний индекс сбалансированной матрицы
   long&                 ihi,                     // верхний индекс сбалансированной матрицы
   vector&               scale,                   // подробности перестановок и масштабирования при балансировке входной матрицы
   double&               ab_norm,                 // 1-норма сбалансированной матрицы
   vector&               rconde,                  // вектор обратных чисел обусловленности для каждого собственного значения
   vector&               rcondv                   // вектор обратных чисел обусловленности для каждого правого собственного вектора
   );

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

bool  matrixf::EigenSolverX(
   ENUM_EIG_BALANCE      balance,                 // способ балансировки входной матрицы
   ENUM_EIG_VECTORS      jobv,                    // необходимость вычисления левых и правых собственных векторов
   ENUM_EIG_SENSE        sense,                   // необходимость вычисления обратных чисел обусловленности (reciprocal condition numbers)
   vectorcf&             eigen_values,            // вектор рассчитанных собственных значений
   matrixf&              left_eigenvectors,       // матрица рассчитанных левых векторов
   matrixf&              right_eigenvectors       // матрица рассчитанных правых векторов
   matrixf&              shur_matrix,             // сбалансированная матрица в форме Шура
   long&                 ilo,                     // нижний индекс сбалансированной матрицы
   long&                 ihi,                     // верхний индекс сбалансированной матрицы
   vectorf&              scale,                   // подробности перестановок и масштабирования при балансировке входной матрицы
   float&                ab_norm,                 // 1-норма сбалансированной матрицы
   vectorf&              rconde,                  // вектор обратных чисел обусловленности для каждого собственного значения
   vectorf&              rcondv                   // вектор обратных чисел обусловленности для каждого правого собственного вектора
   );

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

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

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

bool  matrixcf::EigenSolverX(
   ENUM_EIG_BALANCE      balance,                 // способ балансировки входной матрицы
   ENUM_EIG_VECTORS      jobv,                    // необходимость вычисления левых и правых собственных векторов
   ENUM_EIG_SENSE        sense,                   // необходимость вычисления обратных чисел обусловленности (reciprocal condition numbers)
   vectorcf&             eigen_values,            // вектор рассчитанных собственных значений
   matrixcf&             left_eigenvectors,       // матрица рассчитанных левых векторов
   matrixcf&             right_eigenvectors       // матрица рассчитанных правых векторов  
   matrixcf&             shur_matrix,             // сбалансированная матрица в форме Шура
   long&                 ilo,                     // нижний индекс сбалансированной матрицы
   long&                 ihi,                     // верхний индекс сбалансированной матрицы
   vectorf&              scale,                   // подробности перестановок и масштабирования при балансировке входной матрицы
   float&                ab_norm,                 // 1-норма сбалансированной матрицы
   vectorf&              rconde,                  // вектор обратных чисел обусловленности для каждого собственного значения
   vectorf&              rcondv                   // вектор обратных чисел обусловленности для каждого правого собственного вектора 
   );

Параметры

balance

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

jobv

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

sense

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

eigen_values

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

left_eigenvectors

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

right_eigenvectors

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

shur_matrix

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

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.

ab_norm

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

rconde

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

rcondv

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

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

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

Примечание

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

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      

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