96 lines
4.1 KiB
Markdown
96 lines
4.1 KiB
Markdown
# EigenTridiagonalDCQ
|
||
|
||
Compute eigenvalues and eigenvectors of a symmetric tridiagonal matrix using the divide-and-conquer algorithm (LAPACK function [STEDC](https://www.intel.com/content/www/us/en/docs/onemkl/developer-reference-fortran/2025-2/stedc.html)). Unlike [EigenTridiagonalDC](/en/docs/matrix/openblas/eigen_values/tridiagonalmatrices/eigentridiagposdefq), this method can be used to compute the eigenvectors of the original symmetric matrix. A symmetric matrix can be reduced to tridiagonal form using the [ReduceSymmetricToTridiagonal](/en/docs/matrix/openblas/matrixtransforms/reducesymmetrictotridiagonal) method. The orthogonal matrix Q obtained from this transformation is then used to compute the eigenvectors of the original symmetric matrix.
|
||
|
||
Computing for type matrix<double>
|
||
|
||
```
|
||
bool matrix::EigenTridiagonalDCQ(
|
||
ENUM_EIGTRIDIAG_Z compv, // compute eigenvectors or not
|
||
matrix& Q, // orthogonal matrix used in the reduction to tridiagonal form
|
||
vector& eigen_values, // vector of computed eigenvalues
|
||
matrix& eigen_vectors // matrix of computed eigenvectors
|
||
);
|
||
|
||
```
|
||
|
||
Computing for type matrix<float>
|
||
|
||
```
|
||
bool matrixf::EigenTridiagonalDCQ(
|
||
ENUM_EIGTRIDIAG_Z compv, // compute eigenvectors or not
|
||
matrixf& Q, // orthogonal matrix used in the reduction to tridiagonal form
|
||
vectorf& eigen_values, // vector of computed eigenvalues
|
||
matrixf& eigen_vectors // matrix of computed eigenvectors
|
||
);
|
||
|
||
```
|
||
|
||
Computing for type matrix<complex>
|
||
|
||
```
|
||
bool matrixc::EigenTridiagonalDCQ(
|
||
ENUM_EIGTRIDIAG_Z compv, // compute eigenvectors or not
|
||
matrixc& Q, // orthogonal matrix used in the reduction to tridiagonal form
|
||
vector& eigen_values, // vector of computed eigenvalues
|
||
matrixc& eigen_vectors // matrix of computed eigenvectors
|
||
);
|
||
|
||
```
|
||
|
||
Computing for type matrix<complexf>
|
||
|
||
```
|
||
bool matrixcf::EigenTridiagonalDCQ(
|
||
ENUM_EIGTRIDIAG_Z compv, // compute eigenvectors or not
|
||
matrixcf& Q, // orthogonal matrix used in the reduction to tridiagonal form
|
||
vectorf& eigen_values, // vector of computed eigenvalues
|
||
matrixcf& eigen_vectors // matrix of computed eigenvectors
|
||
);
|
||
|
||
```
|
||
|
||
Parameters
|
||
|
||
compv
|
||
|
||
[in] ENUM_EIGTRIDIAG_Z enumeration value which determines the method for computing eigenvectors.
|
||
|
||
Q
|
||
|
||
[in] Orthogonal matrix Q produced by method [ReflectTridiagonalToQ](/en/docs/matrix/openblas/matrixtransforms/reflecttridiagonaltoq).
|
||
|
||
eigen_values
|
||
|
||
[out] Vector of eigenvalues.
|
||
|
||
eigen_vectors
|
||
|
||
[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 value of the compv parameter.
|
||
|
||
When compv = EIGCOMPZ_N, compute eigenvalues only, eigenvectors are not calculated.
|
||
|
||
If EIGCOMPZ_V is set, eigenvalues are computed and eigenvectors of original symmetric matrix are calculated also.
|
||
|
||
If EIGCOMPZ_I is set, eigenvalues are computed and eigenvectors of tridiagonal matrix are calculated also.
|
||
|
||
The input must be a symmetric matrix in the tridiagonal form.
|
||
|
||
ENUM_EIGTRIDIAG_Z
|
||
|
||
An enumeration that specifies whether to calculate eigenvectors.
|
||
|
||
| ID | Description |
|
||
| --- | --- |
|
||
| EIGCOMPZ_N | 'N': Compute eigenvalues only |
|
||
| EIGCOMPZ_V | 'V': Compute eigenvectors of original symmetric matrix also |
|
||
| EIGCOMPZ_I | 'I': Compute eigenvectors of tridiagonal matrix also |
|