EigenVectorsBackward

Forms the right or left eigenvectors of a real or complex general matrix by backward transformation on the computed eigenvectors of the balanced matrix output by MatrixBalance. LAPACK function GEBAK.

Computing for type matrix<double>

bool  matrix::EigenVectorsBackward(
   ENUM_EIG_BALANCE      job,                     // matrix balancing method
   ENUM_EIG_SIDE         side,                    // right or left eigenvectors
   long                  ilo,                     // subscript of balanced matrix
   long                  ihi,                     // superscript of balanced matrix
   vector&               scale,                   // details of permutations and scaling when balancing the input matrix
   matrix&                                      // eigenvectors
   );

Computing for type matrix<float>

bool  matrixf::EigenVectorsBackward(
   ENUM_EIG_BALANCE      job,                     // input matrix balancing method
   ENUM_EIG_SIDE         side,                    // right or left eigenvectors
   long                  ilo,                     // subscript of balanced matrix
   long                  ihi,                     // superscript of balanced matrix
   vectorf&              scale,                   // details of permutations and scaling when balancing the input matrix
   matrixf&                                     // eigenvectors
   );

Computing for type matrix<complex>

bool  matrixc::EigenVectorsBackward(
   ENUM_EIG_BALANCE      job,                     // input matrix balancing method
   ENUM_EIG_SIDE         side,                    // right or left eigenvectors
   long                  ilo,                     // subscript of balanced matrix
   long                  ihi,                     // superscript of balanced matrix
   vector&               scale,                   // details of permutations and scaling when balancing the input matrix
   matrixc&                                     // eigenvectors
   );

Computing for type matrix<complexf>

bool  matrixcf::EigenVectorsBackward(
   ENUM_EIG_BALANCE      job,                     // input matrix balancing method
   ENUM_EIG_SIDE         side,                    // right or left eigenvectors
   long                  ilo,                     // subscript of balanced matrix
   long                  ihi,                     // superscript of balanced matrix
   vectorf&              scale,                   // details of permutations and scaling when balancing the input matrix
   matrixcf&                                    // eigenvectors
   );

Parameters

job

[in]  Value from the ENUM_EIG_BALANCE enumeration which determines the need and method for balancing the input matrix.

side

[in]  Value from the ENUM_EIG_SIDE enumeration which determines the need and method for balancing the input matrix.

ilo

[in]  Subscript of the balanced matrix. As returned by MatrixBalance.

ihi

[in]  Superscript of the balanced matrix. As returned by MatrixBalance.

scale

[in]  Vector of details of permutations and scaling when balancing the input matrix. As returned by MatrixBalance.

V

[out]  Right or left eigenvectors backtransformed from the input eigenvectors.

Return Value

Return true if successful, otherwise false in case of an error.

Note

   При вычислении собственных значений и векторов часто применяется балансировка матрицы (масштабирование строк и столбцов) для улучшения численной устойчивости.

   Эта балансировка производится функцией GEBAL, которая преобразует матрицу в "более приятную" форму.

   После балансировки и вычисления собственных векторов новой матрицы, результат не соответствует исходной матрице.

   Тогда вызывается GEBAK, чтобы перенести собственные векторы обратно в пространство исходной (небалансированной) матрицы.

This method is applied to the matrix of right or left eigenvectors of balanced matrix. They can be produced by some eigen solver.

ENUM_EIG_BALANCE

An enumeration defining the need to compute eigenvectors.

ID

Description

EIGBALANCE_N

Do not diagonally scale or permute

EIGBALANCE_P

Perform permutations to make the matrix more nearly upper triangular. Do not diagonally scale

EIGBALANCE_S

Diagonally scale the matrix. Do not permute

EIGBALANCE_B      

Both diagonally scale and permute

ENUM_EIG_SIDE

An enumeration defining the need to compute right or left eigenvectors.

ID

Description

EIGSIDE_R

'R': right eigenvectors

EIGSIDE_L

'L': left eigenvectors