投影对角化自旋激发
def Hamiltonian_H0_SU4(k,N,t=-1): """ t 是最近邻hopping系数 k 是Bloch波矢量 N 是宽度 """ A = np.matrix([[sqrt(3),0,1,np.exp(-1j*k)],[0, sqrt(3),1,1],[1,1,sqrt(3),0],[np.exp(1j*k),1,0,sqrt(3)]]) B = np.matrix([[0,0,0,0],[0,0,0,0],[1,0,0,0],[0,-1,0,0]]) H = tridiag(A,B,B.H,N) H[0,0] = 1000 return H 对角化得到本征值和本征向量 nk = 256 N = 512 k = np.linspace(0,2*pi,nk) band = np.zeros((4*N, nk)) Ak = np.zeros((4*N,nk),dtype="complex") for i in range(nk): Hk0 = Hamiltonian_H0_SU4(k[i],N) E, A = LA.eigh(Hk0) band[:,i] = E Ak[:,i] = A[:,N-1] 画能带 for i in range(4*N): plt.plot(k,band[i,:]) plt.ylim((-1,1)) 测试本征态 plt.plot(Ak[: