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

107 lines
4.6 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.
# EigenTridiagonalBisect
Compute eigenvalues and eigenvectors of a symmetric tridiagonal matrix using the bisection algorithm (LAPACK function [STEVX](https://www.intel.com/content/www/us/en/docs/onemkl/developer-reference-fortran/2025-2/stevx.html)).
Computing for type matrix<double>
```
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<float>
```
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](/en/docs/matrix/openblas/eigen_values/symmetric_matrices/eigensymmetricdc#enum_eig_values) enumeration value which determines the method for computing eigenvectors.
range
[in] [ENUM_BLAS_RANGE](/en/docs/matrix/openblas/singular_value_decomposition/singularvaluedecompositionbise) 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](/en/docs/constants/errorswarnings/errorcodes).
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. |