Files
mql5-skills/skills/mql5/references/docs/06-matrix/0446-matrix-openblas-eigen-values-tridiagonalmatrices-eigentridiagbisect.md
T
2026-06-23 21:47:51 +08:00

4.6 KiB

EigenTridiagonalBisect

Compute eigenvalues and eigenvectors of a symmetric tridiagonal matrix using the bisection algorithm (LAPACK function STEVX).

Computing for type matrix

bool  matrix::EigenTridiagonalBisect(
   ENUM_EIG_VALUES       jobv,               // compute eigenvectors or not
   ENUM_BLAS_RANGE       range,              // subset of eigenvalues to compute
   double                lower,              // lower bound of the subset
   double                upper,              // Upper bound of the subset
   double                abstol,             // absolute error tolerance
   vector&               eigen_values,       // vector of computed eigenvectors
   matrix&               eigen_vectors       // matrix of computed eigenvectors
   );

Computing for type matrix

bool  matrixf::EigenTridiagonalBisect(
   ENUM_EIG_VALUES       jobv,               // compute eigenvectors or not
   ENUM_BLAS_RANGE       range,              // subset of eigenvalues to compute
   float                 lower,              // lower bound of the subset
   float                 upper,              // upper bound of the subset
   float                 abstol,             // absolute error tolerance
   vectorf&              eigen_values,       // vector of computed eigenvectors
   matrixf&              eigen_vectors       // matrix of computed eigenvectors
   );

Parameters

jobv

[in] ENUM_EIG_VALUES enumeration value which determines the method for computing eigenvectors.

range

[in] ENUM_BLAS_RANGE enumeration value that defines a subset of computable eigenvalues and vectors.

lower

[in]  The lower bound of eigenvalues subset; it is specified depending on the value of the 'range' parameter.

upper

[in]  The upper bound of eigenvalues subset; it is specified depending on the value of the 'range' parameter.

abstol

[in]  Absolute error tolerance.

The absolute error tolerance to which each eigenvalue/eigenvector is required.

If jobv = 'V', the eigenvalues and eigenvectors output have residual norms bounded by abstol, and the dot products between different eigenvectors are bounded by abstol.

If abstol < n eps|T|, then n eps|T| is used instead, where eps is the machine precision, and |T| is the 1-norm of the matrix T. The eigenvalues are computed to an accuracy of eps*|T| irrespective of abstol.

If high relative precision is important, 'abstol' should be set to a safe minimum value X such that 1.0/X does not overflow.

eigen_values

[out] Vector of eigenvalues.

V

[out] Matrix of eigenvectors.

Return Value

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

Note

Computation depends on the values of the jobv and range parameters.

When BLASRANGE_A is set, all eigenvalues are computed, and the lower and upper parameters are ignored.

With the BLASRANGE_V value, only those eigenvalues (and their vectors) are computed, which fall within the range of real values specified by the 'lower' and 'upper' parameters.

With the BLASRANGE_I value, only those eigenvalues (and their vectors) are computed, which fall within the range of integer indices specified by the 'lower' and 'upper' parameters. For example, with lower=0 and upper=2, only the first three eigenvalues are computed.

The input must be a symmetric matrix in the tridiagonal form.

ENUM_EIG_VALUES

An enumeration defining the need to compute eigenvectors.

ID Description
EIGVALUES_V Eigenvectors and eigenvalues are calculated.
EIGVALUES_N Only eigenvalues are computed, without vectors.

ENUM_BLAS_RANGE

An enumeration defining how right singular vectors should be computed.

ID Description
BLASRANGE_A All singular or eigenvalues will be found.
BLASRANGE_V All singular or eigenvalues in the half-open interval (VL,VU] will be found.
BLASRANGE_I The IL-th through IU-th singular or eigenvalues will be found.