?steqr
使用QL或QR方法求解对称三对角矩阵的特征值和特征向量。
接口定义
C Interface:
ssteqr_(const char *compz, const int *n, float *d, float *e, float *z, const int *ldz, float *work, int *info);
dsteqr_(const char *compz, const int *n, double *d, double *e, double *z, const int *ldz, double *work, int *info);
csteqr_(const char *compz, const int *n, float *d, float *e, float _Complex *z, const int *ldz, float *work, int *info);
zsteqr_(const char *compz, const int *n, double *d, double *e, double _Complex *z, const int *ldz, double *work, int *info);
Fortran Interface:
SSTEQR(COMPZ, N, D, E, Z, LDZ, WORK, INFO);
DSTEQR(COMPZ, N, D, E, Z, LDZ, WORK, INFO);
CSTEQR(COMPZ, N, D, E, Z, LDZ, WORK, INFO);
ZSTEQR(COMPZ, N, D, E, Z, LDZ, WORK, INFO);
参数
参数 |
类型 |
说明 |
输入/输出 |
---|---|---|---|
compz |
字符型 |
|
输入 |
n |
整数型 |
矩阵的维度,n≥0。 |
输入 |
d |
|
长度为n。
|
输入,输出 |
e |
|
长度为n-1。
|
输入,输出 |
z |
|
大小为ldz*n。
|
输入,输出 |
ldz |
整数型 |
矩阵z的主维,ldz ≥ max(1, n)。 |
输入 |
work |
|
工作数组,大小为max(1, 2*n-2)。当compz='N'时,不使用。 |
输出 |
info |
整数型 |
|
输出 |
依赖
#include "klapack.h"
示例
C Interface:
const char compz = 'N'; const int n = 4; const int ldz = 4; int info = 0; double d[] = {72.1673, 66.1857, 64.7644, 28.0199, 91.4151}; double e[] = {6.8955, 7.2465, 3.5019, 8.2268, 3.5287}; int *ipiv = (int*)malloc(n * sizeof(int)); double b[] = {9.4532, 1.5204, 2.2127, 0.9891, 7.1778, 6.8955, 7.2465, 3.5019, 8.2268, 3.5287}; double *z = (double*)malloc(ldz * n * sizeof(double)); double *work = (double*)malloc(n * sizeof(double)); dsteqr_(&compz, &n, d, e, z, &ldz, work, &info); if (info != 0) { printf("ERROR, info = %d\n", info); } /* output */ * d * 27.676252 56.816901 68.501999 78.142148 * e * 0.000000 0.000000 0.000000
Fortran Interface:
CHARACTER :: compz = "N" PARAMETER (n = 4) PARAMETER (ldz = 4) INTEGER :: info = 0 REAL(8) :: d(n) REAL(8) :: e(n-1) REAL(8) :: z(ldz, n) REAL(8) :: work(n) DATA d / 72.1673, 66.1857, 64.7644, 28.0199 / DATA e / 6.8955, 7.2465, 3.5019 / EXTERNAL DSTEQR CALL DSTEQR(compz, n, d, e, z, ldz, work, info); * * Output: * d: * 27.676252 56.816901 68.501999 78.142148 * e: * 0.000000 0.000000 0.000000