基本信息
蒙特卡羅方法又稱統計模擬法、隨機抽樣技術,是一種隨機模擬方法,以機率和統計理論方法為基礎的一種計算方法,是使用隨機數(或更常見的偽隨機數)來解決很多計算問題的方法。將所求解的問題同一定的機率模型相聯繫,用電子計算機實現統計模擬或抽樣,以獲得問題的近似解。為象徵性地表明這一方法的機率統計特徵,故借用賭城蒙特卡羅命名。
提出
蒙特卡羅方法於20世紀40年代美國在第二次世界大戰中研製核子彈的“曼哈頓計畫”計畫的成員S.M.烏拉姆和J.馮·諾伊曼首先提出。數學家馮·諾伊曼用馳名世界的賭城—摩納哥的Monte Carlo—來命名這種方法,為它蒙上了一層神秘色彩。在這之前,蒙特卡羅方法就已經存在。1777年,法國Buffon提出用投針實驗的方法求圓周率π。這被認為是蒙特卡羅方法的起源。
基本思想
Monte Carlo方法的基本思想很早以前就被人們所發現和利用。早在17世紀,人們就知道用事件發生的“頻率”來決定事件的“機率”。19世紀人們用投針試驗的方法來決定圓周率π。本世紀40年代電子計算機的出現,特別是近年來高速電子計算機的出現,使得用數學方法在計算機上大量、快速地模擬這樣的試驗成為可能。
考慮平面上的一個邊長為1的正方形及其內部的一個形狀不規則的“圖形”,如何求出這個“圖形”的面積呢?Monte Carlo方法是這樣一種“隨機化”的方法:向該正方形“隨機地”投擲N個點,有M個點落於“圖形”內,則該“圖形”的面積近似為M/N。可用民意測驗來作一個不嚴格的比喻。民意測驗的人不是徵詢每一個登記選民的意見,而是通過對選民進行小規模的抽樣調查來確定可能的優勝者。其基本思想是一樣的。
科技計算中的問題比這要複雜得多。比如金融衍生產品(期權、期貨、掉期等)的定價及交易風險估算,問題的維數(即變數的個數)可能高達數百甚至數千。對這類問題,難度隨維數的增加呈指數增長,這就是所謂的“維數的災難”(Curse of Dimensionality),傳統的數值方法難以對付(即使使用速度最快的計算機)。Monte Carlo方法能很好地用來對付維數的災難,因為該方法的計算複雜性不再依賴於維數。以前那些本來是無法計算的問題現在也能夠計算量。為提高方法的效率,科學家們提出了許多所謂的“方差縮減”技巧。
另一類形式與Monte Carlo方法相似,但理論基礎不同的方法—“擬蒙特卡羅方法”(Quasi-Monte Carlo方法)—近年來也獲得迅速發展。我國數學家華羅庚、王元提出的“華—王”方法即是其中的一例。這種方法的基本思想是“用確定性的超均勻分布序列(數學上稱為Low Discrepancy Sequences)代替Monte Carlo方法中的隨機數序列。對某些問題該方法的實際速度一般可比Monte Carlo方法提出高數百倍,並可計算精確度。
基本原理
由機率定義知,某事件的機率可以用大量試驗中該事件發生的頻率來估算,當樣本容量足夠大時,可以認為該事件的發生頻率即為其機率。因此,可以先對影響其可靠度的隨機變數進行大量的隨機抽樣,然後把這些抽樣值一組一組地代入功能函式式,確定結構是否失效,最後從中求得結構的失效機率。蒙特卡羅法正是基於此思路進行分析的。
設有統計獨立的隨機變數Xi(i=1,2,3,…,k),其對應的機率密度函式分別為fx1,fx2,…,fxk,功能函式式為Z=g(x1,x2,…,xk)。
首先根據各隨機變數的相應分布,產生N組隨機數x1,x2,…,xk值,計算功能函式值 Zi=g(x1,x2,…,xk)(i=1,2,…,N),若其中有L組隨機數對應的功能函式值Zi≤0,則當N→∞時,根據伯努利大數定理及正態隨機變數的特性有:結構失效機率,可靠指標。
從蒙特卡羅方法的思路可看出,該方法迴避了結構可靠度分析中的數學困難,不管狀態函式是否非線性、隨機變數是否非正態,只要模擬的次數足夠多,就可得到一個比較精確的失效機率和可靠度指標。特別在岩土體分析中,變異係數往往較大,與JC法計算的可靠指標相比,結果更為精確,並且由於思路簡單易於編製程序。
數學中的套用
通常蒙特·卡羅方法通過構造符合一定規則的隨機數來解決數學上的各種問題。對於那些由於計算過於複雜而難以得到解析解或者根本沒有解析解的問題,蒙特·卡羅方法是一種有效的求出數值解的方法。一般蒙特·卡羅方法在數學中最常見的套用就是蒙特·卡羅積分。
套用領域
蒙特卡羅方法在金融工程學,總量經濟學,生物醫學,計算物理學(如粒子輸運計算、量子熱力學計算、空氣動力學計算)等領域套用廣泛。
工作過程
在解決實際問題的時候套用蒙特·卡羅方法主要有兩部分工作:
1. 用蒙特·卡羅方法模擬某一過程時,需要產生各種機率分布的隨機變數。
2. 用統計方法把模型的數字特徵估計出來,從而得到實際問題的數值解。
計算步驟
使用蒙特·卡羅方法進行分子模擬計算是按照以下步驟進行的:
1. 使用隨機數發生器產生一個隨機的分子構型。
2. 對此分子構型的其中粒子坐標做無規則的改變,產生一個新的分子構型。
3. 計算新的分子構型的能量。
4. 比較新的分子構型於改變前的分子構型的能量變化,判斷是否接受該構型。
若新的分子構型能量低於原分子構型的能量,則接受新的構型,使用這個構型重複再做下一次疊代。
若新的分子構型能量高於原分子構型的能量,則計算玻爾茲曼因子,並產生一個隨機數。
若這個隨機數大於所計算出的玻爾茲曼因子,則放棄這個構型,重新計算。
若這個隨機數小於所計算出的玻爾茲曼因子,則接受這個構型,使用這個構型重複再做下一次疊代。
5. 如此進行疊代計算,直至最後搜尋出低於所給能量條件的分子構型結束。