如何在Python中按照特征值的主导特征绘制特征值

时间:2020-04-10 02:42:49

标签: python matplotlib

希望您能原谅我的问题,但我是python的新手。我对角出现在论文Adiabatic two-qubit gates in capacitively coupled quantum dot hybrid qubits中的汉密尔顿(1)。我需要获得一个类似于纸的图(1a)的图,其中将特征值绘制为失谐参数$ \ verepsilon $的函数。请注意,在此图中,特征值还带来了有关特征向量的信息(每个基本向量对本征态的贡献)。

Figure 1a

当失谐参数较大且为负值时,特征值将用定义明确的颜色表示,该颜色与其基本状态的主要贡献相关。随着参数的变化,发生杂交,由反交叉区域中的颜色混合表示,最后,当失谐参数增加时,特征值会“恢复”其原始本征态身份。 我该如何制作这样的人物? 预先致谢

import matplotlib.pyplot as plt
import numpy as np
from scipy import linalg 

#matrix values
D1  =18.1
D2 = 46.7
EST = 51.7
evals=[]
evecs=[]

dd = np.linspace(-300,300,100) 
 for d in dd: #np.arange(-3,3, 0.1):
 vals, vecs = np.linalg.eig([[-d/2, 0, D1 ], [0, -d/2 + EST, -D2], [D1, -D2, d/2] ])
evals.append(vals)
evecs.append(vecs)


#evals = np.sort(np.array(evals))
evals = np.array(evals)
#evecs = np.sort(np.array(evecs))
evecs = np.array(evecs)
#plt.plot(dd, evecs[:,0,1])
#plt.plot(dd, evecs[:,1])
c00= (evecs[:,0,0])**2
c01= (evecs[:,0,1])**2
c02= (evecs[:,0,2])**2 

c10= (evecs[:,1,0])**2
c11= (evecs[:,1,1])**2
c12= (evecs[:,1,2])**2

c20= (evecs[:,2,0])**2
c21= (evecs[:,2,1])**2
c22= (evecs[:,2,2])**2

print(c00+c01+c02)
print(c00)
print(c01)
print(c02)

#plt.plot(dd, c10)  #low energy eigenvalue 
#plt.plot(dd, c11) # intemediate energy 
#plt.plot(dd, c12) # high energy 


#plt.scatter(dd, evals[:,0], c=c00, cmap="Reds")  #low energy eigenvalue 
#plt.scatter(dd, evals[:,1], c=c11, cmap="Blues") # intemediate energy 
#plt.scatter(dd, evals[:,2], c=c22, cmap="Greens") # high energy 

plt.scatter(dd, evals[:,0])
plt.scatter(dd, evals[:,1])
plt.scatter(dd, evals[:,2])
plt.show()

0 个答案:

没有答案
相关问题