107 lines
4.6 KiB
Markdown
107 lines
4.6 KiB
Markdown
# 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. |
|