113學年度第1學期:
蒙地卡羅與平行計算 課程公告
|
|
|
課堂之程式(google cloud)

Transverse Ising model
\(H = - J \sum_{i} \sigma^x_i \sigma^x_{i+1} - g \sum_{i} \sigma^z_i\)
公告日期:2024, 9, 18
課堂之程式:
import numpy as np
N=8
m=2**N; TS=[]
for n in range(m):
S=[]; #print(n)
for i in range(N):
ni=int(n/2**i)%2
#print(ni,end=' ')
nii=ni*2-1
S.append(nii)
TS.append(S)
#print(' ')
#print('TS=',TS)
for S in TS:
eng=0; M=0; M2=0
for i in range(N-1):
eng+=-S[i]*S[i+1]
M+=S[i]
M+=S[-1]
M2+=M**2
eng+=-S[-1]*S[0]
#print(S,eng,M,M2)
#input('bbbb')
TE=[]; TM=[]; TM2=[]
TT=np.linspace(0.5,10,20)
#TT=[0.1,1]
for T in TT:
Z=0; E=0; mag=0; mag2=0;
for S in TS:
eng=0; M=0; M2=0
for i in range(N-1):
eng+=-S[i]*S[i+1]
M+=S[i]
eng+=-S[-1]*S[0]; M+=S[-1]; M2+=M**2
pr=np.exp(-eng/T)
Z+=pr
E+=eng*pr
mag+=M*pr
mag2=M2*pr
##print('%6.2f %12.5e %12.5e %12.5e %12.5e' %(T,eng,pr,E,Z))
Ea=E/Z/N; maga=mag/Z; mag2a=mag2/Z/N**2
TE.append(Ea); TM.append(maga); TM2.append(mag2a)
print('%6.2f %12.5e %12.5e %12.5e' %(T,Ea,maga,mag2a))
import matplotlib
import matplotlib.pyplot as plt
plt.plot(TT,TE,'r--o',label='E')
plt.figure()
#plt.plot(TT,TM,'b--',label='M')
plt.plot(TT,TM2,'g--',label='M2')
=====
==========================================