Pyhon 二维方格子安德森模型求解代码

安德森局域化模型的哈密顿量为

第一项座位能随机分布于一个区间[-W/2,W/2].

代码

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
%matplotlib inline

方格子编号法生成哈密顿量

def Hamiltonian_Square_Near_Hopping(Nx,Ny,t):
    N = Nx*Ny
    H = np.zeros((N,N))
    for i in range(0,Ny):
        for j in range(Nx):
            index_left = i*Nx+(j-1)%Nx
            index_right = i*Nx+(j+1)%Nx
            index_up = (i-1)%Ny*Nx+j
            index_down = (i+1)%Ny*Nx+j
        
            H[i*Ny+j,index_left] = t
            H[i*Ny+j,index_right]= t
            H[i*Ny+j,index_up] = t
            H[i*Ny+j,index_down] = t
        
    return H        
Nx=100
Ny=100
t=-1
W=0
w=np.random.uniform(-W/2,W/2,size=Nx*Ny)
w = np.diag(w)
H=Hamiltonian_Square_Near_Hopping(Nx,Ny,t)+w
E,V=np.linalg.eig(H) ##特征值E,特征向量V

画态密度图

s = pd.Series(E.real)
s.plot(kind='kde')

 

你可能感兴趣的:(算法)