用蒙特卡洛演算法計算一維易辛模型

終於到了稍有點空閑時間的寒假了,很慚愧開了專欄以後,我沒有維持應有的更新頻率,因為上學期末實在太忙了(更糟糕的是,下學期可能更忙)。趁寒假我會好好更新幾篇,不負各位的期望。既然美賽要來了,就介紹一個和演算法相關的話題吧。

這次要說的,是一維易辛模型的模擬。下面分成兩部分介紹這個話題,首先介紹易辛模型的物理圖景,再介紹用來模擬的演算法及關鍵步驟的解釋。

一、一維橫場易辛模型的簡要介紹

首先在半經典的物理圖景下考慮兩個自旋電子的相互作用:電子的自旋只有向上和向下兩個取向。自旋電子本身會產生磁場,因此兩個自旋電子可產生相互作用,並在熱力學漲落的作用下趨向於自旋方向相同。

以上的考慮可能會讓你感到平淡無奇,但考慮排成一列的自旋電子的話,情況會有些不同。首先為了模型簡潔起見,我們做一個近似,認為每個自旋電子只對相鄰的電子有作用。在相互作用下,系統趨向於全體指向同一個方向,即能量最低的狀態(熵最小)。然而同時存在的熱力學漲落作用根據熵增原理,會使系統趨向於熵最大的狀態(能量最大)。這兩種作用相互拮抗。但一維易辛模型中,由於鄰近粒子數太少,相互作用的效果遠小於熱力學漲落的效果,從而使平衡時系統處於極端混亂的狀態--此時系統總磁矩為0。(注1)

既然還沒有出現好玩的物理現象,我們就添加一個方向為向上或向下的磁場好了,以增強電子趨向於相同方向的效果。為了忽略邊界的影響,我們再將第一個電子最後一個電子設定為相鄰的粒子,即這列電子組成一個環(注意在粒子數足夠大時,這個環近似於直線段)。我們考慮在這個模型下計算系統的總磁矩隨磁場強度增大產生的變化。

系統的哈密頓量為:H = -Jsum_{i}^{}({s_{i} s_{i+1} } +gs_{i} ),其中g是外加磁場強度和相鄰粒子產生的磁場強度的比值。

配分函數為:f = exp[-2(s/T+B)s_{i} ],s為相鄰粒子的總磁矩,T是溫度,B是外磁場強度(此處取適當量綱使波爾茲曼常數為1)。

二、用蒙特卡洛演算法計算以上模型

蒙特卡洛演算法在此處的作用是有物理意義的:對應于波函數的概率詮釋,使得量子效應顯現出來,從而彌補半經典圖景的不足。

代碼如下:(暫時沒時間仔細解釋演算法,但看代碼也不難。如果讀者有需要並且我有時間,我會在評論里解釋一下演算法和關鍵步驟。現在先讓我小小地偷一下懶。)

運行效果如下:

可見在T = 5K時,若B = 0,則總磁矩為0。當B足夠大時,系統的粒子自旋方向都趨向磁場方向。

注1:對於二維易辛模型,情況大大不同了。即使沒有外加磁場,二維易辛模型中粒子的相互作用也足以和熱力學漲落分庭抗禮,從而出現相變。

本文屬原創,如果您覺得有幫助,請點贊,讚賞或關注。如果發現錯誤,情不吝賜教。^_^

推薦閱讀:

從時間晶體的實驗驗證說起
誰能詳細解釋一下中微子具有靜止質量與中微子振蕩現象之間的關係?
為什麼薛定諤的貓這麼出名?
量子力學是否符合常識?
狄拉克海鉤沉:相對論性的波動方程

TAG:物理学 | 蒙特卡洛方法 | 量子物理 |