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

101 lines
4.5 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# EigenVectorsTriangularZ
Computes eigenvectors of n real upper quasi-triangular or complex upper triangular matrix computed by [EigenHessenbergSchurQ](/en/docs/matrix/openblas/eigen_values/general_matrices/eigenhessenbergschurq) or [EigenSolverSchur](/en/docs/matrix/openblas/eigen_values/general_matrices/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 [TREVC](https://www.intel.com/content/www/us/en/docs/onemkl/developer-reference-fortran/2025-2/trevc.html).
Computing for type matrix<double>
```
bool  matrix::EigenVectorsTriangularZ(
   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<float>
```
bool  matrixf::EigenVectorsTriangularZ(
   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<complex>
```
bool  matrixc::EigenVectorsTriangularZ(
   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<complexf>
```
bool  matrixcf::EigenVectorsTriangularZ(
   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](/en/docs/matrix/openblas/eigen_values/general_matrices/eigenhessenbergschurq) or [EigenSolverSchur](/en/docs/matrix/openblas/eigen_values/general_matrices/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](/en/docs/constants/errorswarnings/errorcodes).
Note
The right eigenvector x and the left eigenvector y of T corresponding to an eigenvalue w are defined by:
T*x = w*x,     (y**H)*T = w*(y**H)
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 Q*X and/or Q*Y, where Q is an input matrix.  If Q is the orthogonal factor that reduces a matrix A to Schur form T, then Q*X and Q*Y 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. |