零温格林函数的计算:
import numpy as np
from numpy import pi
import matplotlib.pyplot as plt
from scipy.signal import correlate
a=1
t=1
nk = 1024
Omega = 0
delta = 0.05
T = 0.01
Ek = np.zeros((nk, nk))
for i in range(nk):
for j in range(nk):
Ek[i, j] = -2*t*(np.cos(2*pi*i/nk)+np.cos(2*pi*j/nk))
Gk = (1/(Omega - Ek +1j*delta))
chi0 = correlate(Gk, Gk, mode='same', method='auto')/(nk*nk)
print(chi0.shape)
plt.pcolormesh(np.real(chi0))
plt.colorbar()
plt.show()
可以推广到任意格子,一般图形为平行四边形。
有限温度的磁化率
多带情况下: