UA MATH575B 数值分析下 统计物理的随机模拟方法5
UA MATH575B 數值分析下 統計物理的隨機模擬方法5
- Ising Model
- Gibbs Sampling
- Glauber Dynamics
這一講介紹Ising Model,它是MCMC與Gibbs Sampler在統計物理中的一個經典應用之一。
Ising Model
Ising Model是用來描述物質的鐵磁性的。考慮一個ddd維的晶格,假設Λ\LambdaΛ是所有晶格點的集合,每一個晶格點有自旋態σi∈{?1,+1},?i∈Λ\sigma_i \in \{-1,+1\},\forall i \in \Lambdaσi?∈{?1,+1},?i∈Λ,所有晶格點的自旋態的集合σ={σi,?i∈Λ}\sigma = \{\sigma_i,\forall i \in \Lambda\}σ={σi?,?i∈Λ}是這個晶格的自旋組態。定義第iii個晶格點與第jjj個晶格點的相互作用參數為JijJ_{ij}Jij?(Jij=0J_{ij}=0Jij?=0如果兩個晶格不相鄰),外加的磁場對第jjj個晶格的作用是hjh_jhj?,這個晶格的Hamilton量是
H(σ)=?∑i,j∈ΛJijσiσj?μ∑j∈ΛhjσjH(\sigma) = - \sum_{i,j \in \Lambda} J_{ij} \sigma_i \sigma_j - \mu \sum_{j \in \Lambda} h_j \sigma_jH(σ)=?i,j∈Λ∑?Jij?σi?σj??μj∈Λ∑?hj?σj?
沒有外場時,晶格的Hamilton量是
H(σ)=?∑i,j∈ΛJijσiσjH(\sigma) = - \sum_{i,j \in \Lambda} J_{ij} \sigma_i \sigma_jH(σ)=?i,j∈Λ∑?Jij?σi?σj?
μ\muμ是晶格點磁矩的值。定義自旋組態的分布為組態幾率,記為P(σ)P(\sigma)P(σ),熱平衡下自旋組態服從Boltzmann分布:
Pβ(σ)=e?βH(σ)ZβP_{\beta}(\sigma) = \frac{e^{-\beta H(\sigma)}}{Z_{\beta}}Pβ?(σ)=Zβ?e?βH(σ)?
其中β=1kT\beta = \frac{1}{kT}β=kT1?,kkk是Boltzmann常數, ZβZ_{\beta}Zβ?是配分函數:
Zβ=∑?σe?βH(σ)Z_{\beta} = \sum_{\forall \sigma} e^{-\beta H(\sigma)}Zβ?=?σ∑?e?βH(σ)
假設物理量f(σ)f(\sigma)f(σ)是自旋組態的函數,則它的期望是
?f?β=∑?σf(σ)Pβ(σ)\langle f \rangle_{\beta} = \sum_{\forall \sigma} f(\sigma) P_{\beta}(\sigma)?f?β?=?σ∑?f(σ)Pβ?(σ)
理論求解Ising Model比較困難,d=1、2d=1、2d=1、2的被研究透徹了,但是d>2d>2d>2的目前還沒有解析解。數值計算的難度也很大,因為自選組態的可能性是隨晶格的個數指數增加的。所以一般數值上用Monte Carlo方法模擬Ising Model。
Gibbs Sampling
要用Monte Carlo方法模擬Ising Model先要生成P(σ)P(\sigma)P(σ)的隨機數。生成多元分布的隨機數比生成一元分布的隨機數更復雜得多,但如果每一元的條件分布比較好求的話就可以用Gibbs采樣來做,Gibbs采樣就是通過條件分布sequentially來做采樣,相當于把生成多元分布的隨機數問題又變成了一元的。用Gibbs Sampling模擬Ising Model的物理方法叫做Glauber Dynamics。
Glauber Dynamics
考慮∣Λ∣=N|\Lambda|=N∣Λ∣=N,d=2d=2d=2的晶格,把晶格點排列在一個網格上,隨機選擇一個晶格點,假設坐標為(x,y)(x,y)(x,y):
S=σx+1,y+σx?1,y+σx,y+1+σx,y?1S = \sigma_{x+1,y} + \sigma_{x-1,y} + \sigma_{x,y+1} + \sigma_{x,y-1}S=σx+1,y?+σx?1,y?+σx,y+1?+σx,y?1?
ΔE=2σx,yS\Delta E = 2\sigma_{x,y}SΔE=2σx,y?S
α=e?ΔE/T\alpha = e^{-\Delta E/T}α=e?ΔE/T
重復這個過程超過NNN次。這個算法的作用是模擬晶格自旋組態,接受率的另一種寫法是用Boltzmann分布:
α=e?σx,yS/TeST+e?ST=e?(σx,y+1)S/T1+e?2ST\alpha = \frac{e^{-\sigma_{x,y}S/T}}{e^{ST} + e^{-ST}} = \frac{e^{-(\sigma_{x,y}+1)S/T}}{1+e^{-2ST}}α=eST+e?STe?σx,y?S/T?=1+e?2STe?(σx,y?+1)S/T?
下面是我老師課件例子的一個代碼,我們來簡單讀一下。兩個define定義了我們模擬的是256×256256\times 256256×256的晶格的2D網格,主函數前四行都是一些變量定義,有兩個比較關鍵的信息:這段代碼模擬的晶格溫度是T=3T=3T=3,自旋組態存在二維數組SSS中。nnn和ppp表示的是某個晶格點的相鄰點,網格同一行最左邊與最右邊的晶格點、同一列最上邊與最下邊的晶格點被視為相鄰點,老師說這是某種神秘的量子糾纏。主函數第五行在隨機決定晶格的初始自旋組態。
從主函數第六行開始到倒數第二行,這些代碼就是在做輸出以及做Glauber Dynamics了。這個for循環前三行寫輸出,后面那個for循環第一行是隨機選擇一個晶格點;第二行是計算反轉的能量變化,只是相鄰晶格點的自旋和減2再乘2做了一個標準化,這樣做的好處是讓第三行做接受與否的判斷的時候可以用1和e?ΔE/Te^{-\Delta E/T}e?ΔE/T來歸一化概率,因為這段代碼用的0表示反向自旋,所以需要這樣做,如果用-1的話就不需要這樣做,可以直接按上面描述的步驟。我們看一下模擬結果的輸出:
這個輸出把晶格點用像素點表示,自旋用1和0表示,對應像素的亮度。從這三輸出我們可以觀察到,隨著溫度升高,相鄰晶格點的自旋狀態就越不那么統一。另外定義
M=1N∑x,yσx,yM = \frac{1}{N} \sum_{x,y} \sigma_{x,y}M=N1?x,y∑?σx,y?
為磁化強度。我們可以計算磁化強度的自相關函數:
總結
以上是生活随笔為你收集整理的UA MATH575B 数值分析下 统计物理的随机模拟方法5的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: UA MATH566 统计理论10 Bo
- 下一篇: UA MATH565C 随机微分方程V