96 lines
3.9 KiB
Markdown
96 lines
3.9 KiB
Markdown
# EigenTridiagonalPosDefQ
|
||
|
||
Compute eigenvalues and eigenvectors of a symmetric positive definite tridiagonal matrix using the QR algorithm (LAPACK function [PTEQR](https://www.intel.com/content/www/us/en/docs/onemkl/developer-reference-fortran/2025-2/pteqr.html)). This method can be used to compute the eigenvectors of both the input tridiagonal matrix and the original positive definite symmetric matrix. This is achieved using the orthogonal matrix Q obtained during the reduction to tridiagonal form.
|
||
|
||
Computing for type matrix<double>
|
||
|
||
```
|
||
bool matrix::EigenTridiagonalPosDefQ(
|
||
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::EigenTridiagonalPosDefQ(
|
||
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::EigenTridiagonalPosDefQ(
|
||
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::EigenTridiagonalPosDefQ(
|
||
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 positive definite tridiagonal matrix.
|
||
|
||
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 |
|