• 沒有找到結果。

3.1 蒙地卡羅方法 (Monte Carlo Method)

3.1.3 隨機級數展開法 SSE

這節所提的隨機級數展開法 (Stochastic series expansion) ,縮寫成 SSE ,主要是參 照參考文獻 [18] [22]−[25] [28] [42] [43]。

在量子統計下,可以用 partition function ,Z ,計算在溫度 T 之下 operator A 的 所以最重要的問題是我們如何計算 partition function 中的指數函數,一個簡單的想 法就是對它用泰勒展開: 的量子 Heisenberg model 應用以上所引入的觀念。這樣的應用是由 Prof. Anders Sandvik 所發展出來的,在文獻上稱為 Stochastic Series Expansion (SSE) 方法。量子 Heisenberg model 的 Hamiltonian 為

H = J

⟨i,j⟩

Si· Sj (3.6)

其中⟨i, j⟩ 表示是最近鄰的 sites,J 是反鐵磁 coupling ,且 J > 0 ,Si 為在 site i 的 spin-1/2 operator 。SSE 本身並沒有限制,但為了在泰勒展開後都是正值,避免 sign

problem 。這裡要求必須是 bipartite,非阻挫 (non-frustrated) 的晶格點,bipartite 是 像西洋棋盤一樣黑白相間排列的規則來將正方晶格分為兩類 sub-lattices 。這裡我 們將以二維正方晶格為例來說明 SSE 的精神及其 implementation ,我們假設晶格 大小為 N = LxLy ,且其晶格有週期邊界條件。此外,我們選擇 z 軸為 quantized 的方向,即 Siz = ±12 。則自旋 S = 1/2 的 N 個 spin 晶格其 basis 可表示為,

|α⟩ = |S1z, S2z,· · · , SNz⟩, Siz =±1

2 (3.7)

注意到,利用升降 (ladder) 算符,Hamiltonian 可寫成,

H = J 式,我們可看到 Hamiltonian 可分成兩類 operators ,即 diagonal operators (H1,b) 和 off-diagonal operators (H2,b),

H1,b = 1

藉由 diagonal 及 off-diagonal operators ,Hamiltonian ( 3.8) 式可改寫為

H =−

注意到這裡 diagonal operators 前面我們多加了常數 1/4 ,使得其所對應的矩陣元素 恆為正值,這樣的 shift 不會影響到我們要計算觀測量的期望值。,另外 off-operator 前面多了負號,這可看成將 x 和 y 的 spin operators 轉了 180 度,可以證明這樣的 情況並不會改變系統的物理,特別是其為正定的特性 (以下我們會簡單解釋正定 這一特性,正因為這一特性,我們可以應用 Monte Carlo method 來研究在 bipartite lattices 上的 Heisenberg model)。注意到,對新的 Hamiltonian 的每一項,無論是 diagonal 或是 off-diagonal 需要作用在一對其 Sz 值為不同的 spin 上才有不為零的

矩陣元素。的確由 ( 3.9) 式,我們有

由上式我們可明白在 diagonal operators 加上常數 1/4 ,會使得 diagonal 及 off-diagonal 的矩陣元素都是是 1/2 ,這會大大簡化我們的計算。

將 Hamiltonian( 3.10) 式代回一般情況下的 partition function (3.4) 式,

Z =

在實際應用上,在展開的 partition function 中的高次方項的貢獻非常小,所以 通常我們會選擇一個很大的正整數 M 來 truncate 泰勒展開,這個正整數 M 稱為

法時,M 的初始值一開始設定不會太大,但重複蒙地卡羅運算時會適當的調整 M 的值,使得要計算的精確度和誤差在控制之內。而 M 算符串中被 p 個算符作用之 後的 propagated state|α(p)⟩ 記為,

|α(p)⟩ =

p j=1

Ha(j),b(j)|α⟩ (3.12)

由於 propagated state 必須滿足邊界週期性條件,即|α(M)⟩ = |α(0)⟩,因此在展開 時,對每一個 site 我們會有偶數個與其相關的 off-diagonal operators ,而 diagonal operators 的數目並無任何限制。

如果我們將算符串表示為{Ha,b} ,並將隨機採樣後的樣本稱為 configuration 並 記為 (α,{Ha,b}) ,則 (α, {Ha,b}) 指的是不同狀態搭配不同算符串。而 configuration 的集合則是 configuration space 。其隨機採樣的機率是 P = W /Z ,即各自的 weight 除以 partition function ,對於一個包含 n 個非 unit operators 且是所允許的算符串其 所對應的 configuration 的 (Boltzmann) weight W (α,{Hab}) 為

W (α,{Hab}) = (β

2 )n

(M − n)!

M ! (3.13)

在 propagating 的過程,configuration 所允許 operators 作用的情況,可用四種圖 示 (圖 3.1) 來表示:

Figure 3.1: 四種在 bonds 的作用下可能的 spin 狀態

其中綠色正立三角形點表示 spin up (+) ,藍色倒立三角形點表示 spin down (−),

可將作用前後總共四個 spin states 看作 bond 的四支腳 (leg),依序標記腳位編號 0 , 1,2 ,3 為左上,右上,左下,右下。

圖 3.2 表示的是某一個 configuration 的 propagating 過程的圖像。其中空白的 states 表示 unit operators ,而 diagonal 及 off-diagonal 則是用 bond 來標示,紅色白 色相間棒代表 diagonal ;空心虛線棒代表 off-diagonal 。圖 3.2中將左圖簡化為右 圖,沒有變化的部份僅以直線標示。另外除了顯示初末狀態之外也標示了在 bonds 作用前後的 spin 狀態。

Figure 3.2: propagated state

而在 propagated states 中,每個 operator ,包含 unit operator ,都有四支腳。這裡 可以設計儲存連接腳位的表,從第一個 propagated state 的 bond 依照先後順序開始 編號,之後在所謂的 loop update 中就可以透過這個連接腳位的表來做 update。SSE 是一個非常有效率的演算法的原因,在於它保持 propagated state 初末狀態的邊界 週期性,藉由 diagonal update,插入或移除 bond,然後連接 bond 並做 loop update 。 這些過程可以一次同時改變許多的 spins ,而非針對單一的 spin site 去考慮。以下 我們要簡單說明這些步驟。

Diagonal update

Diagonal update 的目的是在 propagated states 中改變 diagonal bond 的數目。最 簡單的方法就是將 diagonal operator 換成 unit operator ,或是將 unit operator 換成 diagonal operator ,這兩個過程我們稱為對 diagonal operator 的 removal 及 diagonal operator 的 insertion 。接著我們將說明如何執行這兩個過程,如在蒙地卡羅 important sampling 所進行的步驟一樣,我們從一些任意允許的 configurations (也就是非零的 weight W ) 來產生 Markov chains 。用的演算法可為 Metropolis 方法。在 Metropolis 方法中,接受一舊的暫存 configuration (其所對應的 weight 記為 Wold) 改變到一個

所以我們要計算新舊 weight 的比值,weight 僅與 propagated states 中非 unit operators 的 operators 的數目 n 有關,我們可從式 (3.13) 中算出插入一個 bond 時新舊 weight

Loop update

Figure 3.3: loop update 改變 bond 的種類及翻轉其所對應的 spin

Figure 3.4: loop update 跨過邊界的情形

在 loop update 主要的作用是在 configurations 中,將 diagonal operators 和 off-diagonal operators 互換及將 loop 上的 spins 做翻轉。由於 propagated states 滿足週期 性邊界條件,在一個 configuration 中,作用在某一個 site 上的 off-diagonal operators 的數目必須是偶數。我們可在圖 3.3,特別是橘色線所經過的部份,看到 loop update ,確實可以一次同時改變許多的 spins (及 bond 的種類),因此可以提高改變

configuration 的效率。在圖 3.4 中,可以看到 loop 的路徑跨越了 boundary states 可 以改變 boundary state|α⟩。也就是說在 loop update 的這個步驟中,實際的物理狀態 確實被改變了。

Figure 3.5: single spin flip update

在圖 3.5 中顯示了在 loop update 中,即使 configuration 中沒有 operator 作用到 的單一 spin ,也有機會被翻轉使得 configuration 改變。最後由於 diagonal operators 和 off-diagonal operators 的 matrix element 都是相同的 1/2 ,所以決定是否 flip 每個 loop 的機率就是 1/2 。

這裡僅介紹 SSE 重要的精神,若要明白更詳細的理論推導,可以參考文獻 [18]

[22]−[25] [28] [42] [43]。

相關文件