我使用ifort 14.0,mkl和f95 lapack接口来做一些特征值分解。
我目前使用的功能是DSYEV_F95,它被称为:
call DSYEV_F95(A=RMEigenVectors,W=RVEigenValues,Info=ISTmp&
&,JobZ="N")
仅产生特征值,或
call DSYEV_F95(A=RMEigenVectors,W=RVEigenValues,Info=ISTmp&
&,JobZ="V")
也返回特征向量。
然而,使用调用1,给定100x100矩阵的前三个特征值是:
-0.00000000000000022204 1.01690323906836455059 1.04051353339583818602
如果使用了第二个调用,结果会改变:
0.00000000000000246374 1.01690323906836477263 1.04051353339583885216
关于第一个值的符号变化的任何想法(此开关完全是调用的函数,因此使用调用二,到目前为止从未发生过负特征值。
由于