【发布时间】:2018-10-12 00:44:36
【问题描述】:
我正在尝试将 6x6 矩阵的特征值求解为我称为“e”的单个参数的函数。正如您从代码中看到的那样,我在“失谐”中评估一系列值的特征值。我想将这 6 个特征值绘制为这个失谐参数的函数。然而,由于算法 linalg.eigh() 以升序返回特征值,因此关于什么特征值对应于什么特征向量的信息会丢失。因此,例如能量为 100 和 -100 的水平线应该是相同的颜色,因为它们应该属于相同的特征向量。但是我只是按照我得到的顺序从 linalg.eigh() 中保存了特征值。而且这个顺序与特征向量无关,所以它们分成不同的颜色。 所以我的问题是,我如何跟踪哪个特征值属于哪个特征向量?如果不清楚,我很抱歉,我自己也很难理解这个问题。
from scipy import linalg as la
ez = 100
dez = 14
t = 10
U = 1000
e=0
hc=np.zeros([6,6])
hc[0,0]=-ez
hc[1,1]=-dez/2;hc[1,4:6]=t
hc[2,2]=dez/2;hc[3,4:6]=-t
hc[3,3]=ez
hc[4,1]=t;hc[4,2]=-t;hc[4,4] = U-e
hc[5,1]=t;hc[5,2]=-t;hc[5,5]=U+e
detuning=np.arange(-1500,1500,10)
Energy = np.zeros((6,len(detuning)))
for i, ep in enumerate(detuning):
e = ep
hc=np.zeros([6,6])
hc[0,0]=-ez
hc[1,1]=-dez/2;hc[1,4:6]=t
hc[2,2]=dez/2;hc[3,4:6]=-t
hc[3,3]=ez
hc[4,1]=t;hc[4,2]=-t;hc[4,4] = U-e
hc[5,1]=t;hc[5,2]=-t;hc[5,5]=U+e
w,v = la.eigh(hc)
Energy[:,i] = w
for i in np.arange(6):
plt.plot(detuning,Energy[i,:], label = i)
plt.legend()
plt.xlabel("$\epsilon (\mu$eV)",fontsize=15)
plt.ylabel("Energy ($\mu$eV)",fontsize=15)
plt.ylim([-200,200])
plt.show()
【问题讨论】:
标签: python matrix eigenvalue