蒙特卡羅(Monte Carlo)方法,也稱為計算機隨機模擬方法,是一種基于”隨機數(shù)”的計算方法。
這一方法源于美國在第二次世界大戰(zhàn)進研制原子彈的”曼哈頓計劃”。Monte Carlo方法創(chuàng)始人主要是這四位:Stanislaw Marcin Ulam、Enrico Fermi、John von Neumann(學計算機的肯定都認識這個牛人吧)和 Nicholas Metropolis。
蒙特卡羅方法的名字來源于摩納哥的一個城市蒙地卡羅,該城市以賭博業(yè)聞名,而蒙特·卡羅方法正是以概率為基礎的方法。與它對應的是確定性算法。
Monte Carlo方法的基本思想很早以前就被人們所發(fā)現(xiàn)和利用。早在17世紀,人們就知道用事件發(fā)生的”頻率”來決定事件的”概率”。19世紀人們用投針試驗的方法來決定圓周率π。本世紀40年代電子計算機的出現(xiàn),特別是近年來高速電子計算機的出現(xiàn),使得用數(shù)學方法在計算機上大量、快速地模擬這樣的試驗成為可能。
為了說明Monte Carlo方法的基本思想,讓我們先來看一個簡單的例子,從此例中你可以感受如何用Monte Carlo方法考慮問題。
例1:比如y=x^2(對x)從0積到1。結(jié)果就是下圖紅色部分的面積:
注意到函數(shù)在(1,1)點的取值為1,所以整個紅色區(qū)域在一個面積為1的正方形里面。所以所求區(qū)域的面積即為 在正方形區(qū)域內(nèi)任取點,點落在所求區(qū)域的概率。這個限制條件是y^2。用matlab模擬,做一百萬次(即共取1000000個點),結(jié)果為0.3328。
1)總結(jié)Monte Carlo方法的基本思想:所求解問題是某隨機事件A出現(xiàn)的概率(或者是某隨機變量B的期望值)。通過某種“實驗”的方法,得出A事件出現(xiàn)的頻率,以此估計出A事件出現(xiàn)的概率(或者得到隨機變量B的某些數(shù)字特征,得出B的期望值)。
2)工作過程
在解決實際問題的時候應用蒙特卡羅方法主要有兩部分工作:
3)蒙特卡羅解題三個主要步驟:
① 構(gòu)造或描述概率過程: 對于本身就具有隨機性質(zhì)的問題,如粒子輸運問題,主要是正確描述和模擬這個概率過程,對于本來不是隨機性質(zhì)的確定性問題,比如計算定積分,就必須事先構(gòu)造一個人為的概率過程,它的某些參量正好是所要求問題的解。即要將不具有隨機性質(zhì)的問題轉(zhuǎn)化為隨機性質(zhì)的問題。
② 實現(xiàn)從已知概率分布抽樣: 構(gòu)造了概率模型以后,由于各種概率模型都可以看作是由各種各樣的概率分布構(gòu)成的,因此產(chǎn)生已知概率分布的隨機變量(或隨機向量),就成為實現(xiàn)蒙特卡羅方法模擬實驗的基本手段,這也是蒙特卡羅方法被稱為隨機抽樣的原因。最簡單、最基本、最重要的一個概率分布是(0,1)上的均勻分布(或稱矩形分布)。隨機數(shù)就是具有這種均勻分布的隨機變量。隨機數(shù)序列就是具有這種分布的總體的一個簡單子樣,也就是一個具有這種分布的相互獨立的隨機變數(shù)序列。產(chǎn)生隨機數(shù)的問題,就是從這個分布的抽樣問題。在計算機上,可以用物理方法產(chǎn)生隨機數(shù),但價格昂貴,不能重復,使用不便。另一種方法是用數(shù)學遞推公式產(chǎn)生。這樣產(chǎn)生的序列,與真正的隨機數(shù)序列不同,所以稱為偽隨機數(shù),或偽隨機數(shù)序列。不過,經(jīng)過多種統(tǒng)計檢驗表明,它與真正的隨機數(shù),或隨機數(shù)序列具有相近的性質(zhì),因此可把它作為真正的隨機數(shù)來使用。由已知分布隨機抽樣有各種方法,與從(0,1)上均勻分布抽樣不同,這些方法都是借助于隨機序列來實現(xiàn)的,也就是說,都是以產(chǎn)生隨機數(shù)為前提的。由此可見,隨機數(shù)是我們實現(xiàn)蒙特卡羅模擬的基本工具。 建立各種估計量: 一般說來,構(gòu)造了概率模型并能從中抽樣后,即實現(xiàn)模擬實驗后,我們就要確定一個隨機變量,作為所要求的問題的解,我們稱它為無偏估計。
③ 建立各種估計量,相當于對模擬實驗的結(jié)果進行考察和登記,從中得到問題的解。 例如:檢驗產(chǎn)品的正品率問題,我們可以用1表示正品,0表示次品,于是對每個產(chǎn)品檢驗可以定義如下的隨機變數(shù)Ti,作為正品率的估計量: 于是,在N次實驗后,正品個數(shù)為: 顯然,正品率p為: 不難看出,Ti為無偏估計。當然,還可以引入其它類型的估計,如最大似然估計,漸進有偏估計等。但是,在蒙特卡羅計算中,使用最多的是無偏估計。 用比較抽象的概率語言描述蒙特卡羅方法解題的手續(xù)如下:構(gòu)造一個概率空間(W ,A,P),其中,W 是一個事件集合,A是集合W 的子集的s 體,P是在A上建立的某個概率測度;在這個概率空間中,選取一個隨機變量q (w ),w ? W ,使得這個隨機變量的期望值 正好是所要求的解Q ,然后用q (w )的簡單子樣的算術(shù)平均值作為Q 的近似值。
直接追蹤粒子,物理思路清晰,易于理解。
另一類形式與Monte Carlo方法相似,但理論基礎不同的方法-”擬蒙特卡羅方法”(Quasi-Monte Carlo方法)-近年來也獲得迅速發(fā)展。我國數(shù)學家華羅庚、王元提出的”華-王”方法即是其中的一例。這種方法的基本思想是”用確定性的超均勻分布序列(數(shù)學上稱為Low Discrepancy Sequences)代替Monte Carlo方法中的隨機數(shù)序列。對某些問題該方法的實際速度一般可比Monte Carlo方法提出高數(shù)百倍,并可計算精確度。
蒙特卡羅方法在金融工程學,宏觀經(jīng)濟學,計算物理學(如粒子輸運計算、量子熱力學計算、空氣動力學計算)等領域應用廣泛。
關(guān)于蒙特卡羅方法的計算程序已經(jīng)有很多,如:EGS4、FLUKA、ETRAN、ITS、MCNP、GEANT等。這些程序大多經(jīng)過了多年的發(fā)展,花費了幾百人年的工作量。除歐洲核子研究中心(CERN)發(fā)行的GEANT主要用于高能物理探測器響應和粒子徑跡的模擬外,其它程序都深入到低能領域,并被廣泛應用。就電子和光子輸運的模擬而言,這些程序可被分為兩個系列:
EGS4和ETRAN分別為兩個系列的基礎,其它程序都采用了它們的核心算法。
ETRAN(for Electron Transport)由美國國家標準局輻射研究中心開發(fā),主要模擬光子和電子,能量范圍可從1KeV到1GeV。
ITS(The integrated TIGER Series of Coupled Electron/Photon Monte Carlo Transport Codes )是由美國圣地亞哥(Sandia)國家實驗室在ETRAN的基礎上開發(fā)的一系列模擬計算程序,包括TIGER 、CYLTRAN 、ACCEPT等,它們的主要差別在于幾何模型的不同。
TIGER研究的是一維多層的問題,CYLTRAN研究的是粒子在圓柱形介質(zhì)中的輸運問題,ACCEPT是解決粒子在三維空間輸運的通用程序。
NCNP(Monte Carlo Neutron and Photo Transport Code)由美國橡樹林國家實驗室(Oak Ridge National Laboratory)開發(fā)的一套模擬中子、光子和電子在物質(zhì)中輸運過程的通用MC 計算程序,在它早期的版本中并不包含對電子輸運過程的模擬,只模擬中子和光子,較新的版本(如MCNP4A)則引進了ETRAN,加入了對電子的模擬。
FLUKA 是一個可以模擬包括中子、電子、光子和質(zhì)子等30余種粒子的大型MC計算程序,它把EGS4容納進來以完成對光子和電子輸運過程的模擬,并且對低能電子的輸運算法進行了改進。
參考資料:
1、http://baike.baidu.com/view/1675475.htm?fr=ala0_1
2、http://baike.baidu.com/view/42460.htm?fr=ala0_1_1
3、http://gorilla.blogbus.com/logs/4669.html
4、http://blog.sina.com.cn/s/blog_5e8154170100cgc4.html
5、http://www.charlesgao.com/?p=121