什麼是蒙地卡羅法

反覆進行使用亂數的機率性試行來求得答案的方法。在材料中有以Metropolis法計算平衡狀態,以及追蹤擴散的動力學蒙地卡羅法。

日文名稱: モンテカルロ法

「蒙地卡羅法」出現在1領域的2道練習題中(計算材料科學等)。

這個名詞所屬的領域: 計算材料科學

以亂數求答案的想法

蒙地卡羅法是反覆進行大量使用亂數的試行,由其平均估計答案的方法總稱,名稱來自以賭場聞名的摩納哥蒙地卡羅。例如在正方形中均勻地打點,計算落入內切圓的比例,就能估計圓周率。誤差與試行次數N的平方根成反比,因此要使精度提高10倍,需要100倍的試行。這種誤差減少的方式與變數的數目無關,因此在原子配置這類變數非常多的統計力學積分中特別有威力。

以Metropolis法求平衡狀態

材料計算中常用的是Metropolis等人於1953年提出的方法。對使狀態稍微改變的試行,以基於波茲曼因子的機率接受或拒絕,造訪各狀態的頻率就會遵循該溫度的平衡分布。在合金中,反覆進行交換格位上原子的試行,計算有序-無序轉變溫度、短程有序度、固溶限等。交換造成的能量變化,常使用以第一原理計算為基礎的集團展開(cluster expansion)。也有在格位上放置區分晶粒的編號,以Potts模型計算晶粒成長的用法。

試行次數不是時間

Metropolis法的試行次數(蒙地卡羅步)不是實際的時間。狀態的序列是從平衡分布取樣的途徑,並不表示物理變化的順序,因此一般不能用來討論變化的快慢。即使像Potts模型的晶粒成長那樣以步數代替時間,與實際時間的對應也要與實驗比較來決定。此外,要把初始狀態影響仍殘留的部分從平均中排除,並考慮連續取得的狀態彼此相似(相關)來估計誤差。需要處理時間時,使用給定各事件速率來推進時間的動力學蒙地卡羅法。

動力學蒙地卡羅法有用的理由

固體中原子跳到相鄰位置的頻率為 ν exp(−E_a/kT),設振動頻率 ν ≈ 10¹³ s⁻¹、E_a = 1.0 eV、600 K,則1秒約4×10⁴次。原子在跳躍1次之前要振動約2.5×10⁸次,因此追蹤所有振動的分子動力學法幾乎無法追蹤擴散的情形。動力學蒙地卡羅法省略振動,從事件及其速率的清單選出下一個事件,因此能追蹤秒或小時規模的析出與照射缺陷的變化。不過,清單中沒有的事件絕對不會發生,因此準備哪些事件會左右結果。

練習蒙地卡羅法的題目

在Metropolis法的蒙地卡羅計算中,試著移動原子的位置時,系統能量增加0.10 eV。在溫度1000 K下,接受這個移動的機率最接近下列何者?設 k = 8.617×10⁻⁵ eV/K。

  1. A約0.69
  2. B0(不接受使能量上升的移動)
  3. C約0.31
查看答案與解析

正確答案:C. 約0.31

在Metropolis法中,使能量下降的移動一定接受,使能量上升的移動以機率 exp(−ΔE/kT) 接受。kT = 8.617×10⁻⁵ × 1000 ≈ 0.0862 eV,因此 ΔE/kT ≈ 1.16,機率為 exp(−1.16) ≈ 0.31。實際上是產生0到1的亂數,若它小於這個機率就接受。藉由以一定機率接受使能量上升的移動,系統會造訪遵循波茲曼分布的狀態,平均起來得到有限溫度的平衡性質。若完全不接受上升的移動,就會被困在局部的能量極小,與0 K的最佳化相同。約0.69是把被拒絕的機率 1 − 0.31 誤當成接受機率的值。

常見問題

蒙地卡羅法的精度如何隨試行次數改變?

統計誤差對獨立試行次數N以1/√N變小。要使誤差減半,需要4倍的試行。連續取得的狀態彼此有相關時,實際獨立的樣本數會變少,因此以分區平均等方法估計誤差。

Metropolis法與動力學蒙地卡羅法有什麼不同?

Metropolis法只由能量差決定是否接受試行,求平衡狀態的平均。動力學蒙地卡羅法使用由活化能求得的事件速率,每選擇一個事件就推進時間,以實際的時間追蹤趨向平衡途中的變化。

亂數的品質會影響結果嗎?

會影響。亂數若有週期性或相關,平均可能偏差,或只造訪部分狀態。現在一般使用像梅森旋轉演算法(Mersenne Twister)這類週期長、通過統計檢定的虛擬亂數產生法。在平行計算中,對每個計算使用獨立的亂數序列也很重要。

解析中的「蒙地卡羅法」

出現「蒙地卡羅法」的題目(2題)

  1. 在Metropolis法的蒙地卡羅計算中,試著移動原子的位置時,系統能量增加0.10 eV。在溫度1000 K下,接受這個移動的機率最接近下列何者?設 k = 8.617×10⁻⁵ eV/K。
  2. 關於動力學蒙地卡羅(kMC)法,下列敘述何者正確?

相關名詞

空位 分子動力學法 密度泛函理論 有限元素法 材料資訊學 相場法 原子間位能 CALPHAD法

前往名詞解釋列表