Files
mql5-skills/skills/mql5/references/docs/06-matrix/0429-matrix-openblas-eigen-values-general-matrices-eigenvectorstriangularzblocked.md
T
2026-06-23 21:47:51 +08:00

4.7 KiB

EigenVectorsTriangularZBlocked

Computes eigenvectors of n real upper quasi-triangular or complex upper triangular matrix computed by EigenHessenbergSchurQ or EigenSolverSchur.

A = Q * T * Q**H, where T is an upper quasi-triangular matrix (the Schur form), and Q is the orthogonal matrix of Schur vectors.

LAPACK function TREVC3. This is the block version (OpenBLAS level 3) of TREVC. Faster but not so accurate.

Computing for type matrix

bool  matrix::EigenVectorsTriangularZBlocked(
   ENUM_EIG_VECTORS      side,                    // compute left and/or right eigenvectors
   matrix&               schur_z,                 // orthogonal matrix of Schur vectors
   matrix&               left_eigenvectors,       // matrix of computed left vectors
   matrix&               right_eigenvectors       // matrix of computed right vectors
   );

Computing for type matrix

bool  matrixf::EigenVectorsTriangularZBlocked(
   ENUM_EIG_VECTORS      side,                    // compute left and/or right eigenvectors
   matrixf&              schur_z,                 // orthogonal matrix of Schur vectors
   matrixf&              left_eigenvectors,       // matrix of computed left vectors
   matrixf&              right_eigenvectors       // matrix of computed right vectors
   );

Computing for type matrix

bool  matrixc::EigenVectorsTriangularZBlocked(
   ENUM_EIG_VECTORS      side,                    // compute left and/or right eigenvectors
   matrixc&              schur_z,                 // orthogonal matrix of Schur vectors
   matrixc&              left_eigenvectors,       // matrix of computed left vectors
   matrixc&              right_eigenvectors       // matrix of computed right vectors
   );

Computing for type matrix

bool  matrixcf::EigenVectorsTriangularZBlocked(
   ENUM_EIG_VECTORS      side,                    // compute left and/or right eigenvectors
   matrixcf&             schur_z,                 // orthogonal matrix of Schur vectors
   matrixcf&             left_eigenvectors,       // matrix of computed left vectors
   matrixcf&             right_eigenvectors       // matrix of computed right vectors
   );

Parameters

side

[in]  ENUM_EIG_VECTORS enumeration value which determines what the eigenvectors are computed left, right or both.

shur_z

[in]  Orthogonal matrix of Schur vectors computed by EigenHessenbergSchurQ or EigenSolverSchur. Can be of zero size. In this case no backtransformation is produced.

left_eigenvectors

[out] Matrix of left eigenvectors.

right_eigenvectors

[out] Matrix of right eigenvectors.

Return Value

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

Note

The right eigenvector x and the left eigenvector y of T corresponding to an eigenvalue w are defined by:

Tx = wx,     (yH)T = w(yH)

where y**H denotes the conjugate transpose of y.

The eigenvalues are not input to this routine, but are read directly from the diagonal blocks of T.

This routine returns the matrices X and/or Y of right and left eigenvectors of T, or the products QX and/or QY, where Q is an input matrix.  If Q is the orthogonal factor that reduces a matrix A to Schur form T, then QX and QY are the matrices of right and left eigenvectors of A.

ENUM_EIG_VECTORS

An enumeration that specifies whether to calculate eigenvectors.

ID Description
EIGVECTORS_N Cannot be used with this method
EIGVECTORS_L Only left eigenvectors are computed.
EIGVECTORS_R Only right eigenvectors are computed.
EIGVECTORS_LR Left and right eigenvectors are computed, eigenvalues are always computed.