我正在尝试编写代码来计算对称矩阵的特征向量和特征值。我了解如何使用笔和纸计算 evalues,但我对api有点困惑!我是初学者,所以我在解释 api 参数时可能是错误的。
int main() {
char jobz='V',uplo='U';
int lda=3,n=3,info=8,lwork=9;
// lapack_int lda=3,n=3,info=8;
int i;
double w[3],work[3];
double a[9] = {
3,2,4,
2,0,2,
4,2,3
};
info=LAPACKE_dsyev(LAPACK_ROW_MAJOR,jobz,uplo, n ,a, lda , w);
//dsyev_( &jobz,&uplo,&n, a, &lda, w,work , &lwork, &info );
if( info > 0 ) {
printf( "The algorithm failed to compute eigenvalues.\n" );
exit( 1 );
}
for(i=0;i<3;i++)
{
printf("%f\n",w[i]);
}
for(i=0;i<9;i++)
{
printf("%f\n",a[i]);
}
exit( 0 );
}
输出: -1.000000 -1.000000 8.000000
0.617945 1.999713 -0.016938 0.010468 0.033876 0.999857 1.381966 0.618034 0.000000
而我期望k= -1 : [1,-2,0] ,[4,2,-5] 和k=8 : [2,1,2]在输出中的某处!
我是在错误地使用 api 还是我错误地读取了输出?还请建议我如何使用 fortran api 执行相同的任务?与 fortran 一样,我无法获得正确的 eign 值!即我用fortran获得的eign值:-0.134742 0.050742 0.523036
外部向量:0.617945 1.999713 -0.016938 0.010468 0.033876 0.999857 1.381966 0.618034 0.000000