我编写了将矩阵对角化的代码,如下所示
[[0,-2,-2,0]
[-2,0,0,-2]
[-2,0,0,-2]
[0,-2,-2,0]]
我的带有数学内核库(MKL)的C代码会产生以下结果:
Eigenvalue : -4 0 0 4
Eigenvector Matrix :
0.5 0.5 -0.5 0.5
0.5 -0.5 -0.5 -0.5
0.5 0.5 0.5 -0.5
0.5 -0.5 0.5 0.5
用python编写的相同代码使用numpy显示以下结果:
Eigenvalue : -4 0 0 4
Eigenvector Matrix :
0.5 0.707107 0 -0.5
0.5 0 0.707107 0.5
0.5 0 -0.707107 0.5
0.5 -0.707107 0 -0.5
简而言之,我观察到相同的特征值集,但mkl和numpy之间的特征向量不同。 Mathematica支持python的结果,但mkl结果也满足正交性,并通过特征值对角矩阵的相似变换重建原始矩阵。
我使用的mkl中的对角化例程如下:
LAPACKE_dsyev(LAPACK_COL_MAJOR,'V','U',dim,&evec[0],dim,&eval[0]);
在python中,我使用了
eigval,eigvec = np.linalg.eigh(H)
有什么问题?