【问题标题】:Calculating eigenvalues of matrix as a function of a parameter计算矩阵的特征值作为参数的函数
【发布时间】: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()

给予 plt.show()

【问题讨论】:

    标签: python matrix eigenvalue


    【解决方案1】:

    这应该适用于您的 hc 矩阵

    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
    

    然后

    e_vals, e_vecs = la.eig(hc)
    

    你有特征值和特征向量。

    e_vals
    array([ 100.        +0.j,   -7.19857058+0.j, 1000.19857058+0.j,
           1000.        +0.j, -100.        +0.j,    7.        +0.j])
    e_vecs
    array([[ 0.00000000e+00,  0.00000000e+00,  0.00000000e+00,
             0.00000000e+00,  1.00000000e+00,  0.00000000e+00],
           [ 0.00000000e+00, -9.99899724e-01,  1.40379443e-02,
            -1.80074450e-31,  0.00000000e+00,  1.41795299e-02],
           [ 0.00000000e+00,  0.00000000e+00,  0.00000000e+00,
             0.00000000e+00,  0.00000000e+00,  9.99798653e-01],
           [ 1.00000000e+00,  1.85217641e-03, -1.57065317e-02,
             2.01599682e-31,  0.00000000e+00,  2.13455289e-03],
           [ 0.00000000e+00,  9.92753319e-03,  7.06949871e-01,
             7.07106781e-01,  0.00000000e+00,  9.92567093e-03],
           [ 0.00000000e+00,  9.92753319e-03,  7.06949871e-01,
            -7.07106781e-01,  0.00000000e+00,  9.92567093e-03]])
    

    【讨论】:

      猜你喜欢
      • 2014-12-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-17
      • 2018-10-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多