為何隨機勝過格點
格點法在高維中死路一條。對 N 個氣體粒子的位置積分,是一個 $3N$ 維的積分;就算每軸只取粗糙的 10 點,也有 10^{3N} 次計算——一旦 N 超過寥寥幾個就無望了。這就是維度詛咒。蒙地卡羅方法繞開了它:以隨機選取的取樣點對被積函數取平均,來估計積分。
積分等於體積乘以 f 在 N 個隨機點上的平均——用統計方式估計一個確定的量。
奧妙在誤差。由中央極限定理,估計值的統計誤差以 1/\sqrt{N} 下降——而且與維數無關。格點的誤差以 N^{-k/d} 縮放,隨維度 d 增大而變差;蒙地卡羅的 N^{-1/2} 卻完全不理會 d。一旦維度超過寥寥幾維,骰子就勝出。
要把誤差減半,就要把取樣數變為四倍——收斂雖慢,卻與維度無關,這是高維中任何格點都比不上的。
向 π 擲飛鏢
最乾淨的示範:以擲飛鏢估計 \pi。在單位正方形內撒下隨機點,數出落在半徑 1 的四分之一圓內的比例。這個比例趨近於面積比 \pi/4。
四分之一圓面積比上正方形面積是 \pi/4;數命中數即估計此比值,其四倍便估計 \pi。
在這個元件裡留意兩件事。估計值朝 \pi 游移,卻從不恰好停在上面;而這股抖動只是緩慢收窄——要多得一位小數,大約需要多擲 $100$ 倍的飛鏢。蒙地卡羅穩健而通用,卻不快;它的長處是在別無他法之處仍能運作。
抽樣真正重要的地方:重要性抽樣與 Metropolis
均勻的飛鏢在 f 極小之處白費工夫。重要性抽樣改為優先在被積函數大的地方取點,並對它們重新加權——在同樣的 N 下大幅削減變異數。在統計力學中,我們需要以波茲曼因子 e^{-E/k_BT} 加權的平均,而幾乎每一個組態的權重都微不足道;均勻抽樣毫無希望。
Metropolis 演算法的解法,是打造一條在各組態間遊走的隨機漫步,使每個組態被造訪的頻率正比於其波茲曼權重。先提議一個小變動,再用一條簡單規則決定接受或拒絕它。
凡是降低能量的移動一律接受;上坡的移動則僅以機率 e^{-\Delta E/k_BT} 接受。這條漫步最終落定於正則系綜分布。
這一條規則,就讓你能為像磁性的伊辛模型這類系統計算熱力平均,你甚至能親眼看見磁化在臨界溫度處消失。Metropolis 蒙地卡羅正是大半統計物理實際的做法——它抽樣配分函數背後的系綜,卻從不需要直接算出那個大到天文數字的求和 Z。
分子動力學:一次一個力地做物理
互補的做法是分子動力學(MD):不做隨機抽樣——而是真的對每個粒子積分牛頓方程,隨時間往前推,讓系統動態地探索它的各種狀態。此處第二章的韋爾萊積分子大顯身手:對成千到數十億個原子,每一步都由鄰居算出每個原子所受的力,再用韋爾萊法把它們全部推進一步。
每個原子所受的力,是對所有配對交互作用求和;這個 O(N^2) 的力求和(用截斷與鄰居列表可馴服到近乎 O(N))是計算上的瓶頸。
由能量均分定理,每個自由度的平均動能決定了溫度,因此一個 MD 盒子是一個貨真價實、可加熱、可冷卻、可量測的熱力系統。MD 給你動力學——輸運、擴散、真實的時間依賴——而蒙地卡羅則高效地給你平衡態平均。兩者聯手,從蛋白質摺疊到晶體熔化,無所不能模擬。