蒙特卡罗(Monte Carlo)方法
蒙特卡羅(Monte Carlo)方法,也稱為計(jì)算機(jī)隨機(jī)模擬方法,是一種基于"隨機(jī)數(shù)"的計(jì)算方法。
????
????一 起源
??? 這一方法源于美國(guó)在第二次世界大戰(zhàn)進(jìn)研制原子彈的"曼哈頓計(jì)劃"。Monte Carlo方法創(chuàng)始人主要是這四位:Stanislaw Marcin Ulam, Enrico Fermi, John von Neumann(學(xué)計(jì)算機(jī)的肯定都認(rèn)識(shí)這個(gè)牛人吧)和 Nicholas Metropolis。
?
??? Stanislaw Marcin Ulam是波蘭裔美籍?dāng)?shù)學(xué)家,早年是研究拓?fù)涞?#xff0c;后因參與曼哈頓工程,興趣遂轉(zhuǎn)向應(yīng)用數(shù)學(xué),他首先提出用Monte Carlo方法解決計(jì)算數(shù)學(xué)中的一些問(wèn)題,然后又將其應(yīng)用到解決鏈?zhǔn)椒磻?yīng)的理論中去,可以說(shuō)是MC方法的奠基人;Enrico Fermi是個(gè)物理大牛,理論和實(shí)驗(yàn)同時(shí)都是大牛,這在物理界很少見(jiàn),在“物理大牛的八卦”那篇文章里提到這個(gè)人很多次,對(duì)于這么牛的人只能是英年早逝了(別說(shuō)我嘴損啊,上帝都嫉妒!);John von Neumann可以說(shuō)是計(jì)算機(jī)界的牛頓吧,太牛了,結(jié)果和Fermi一樣,被上帝嫉妒了;Nicholas Metropolis,希臘裔美籍?dāng)?shù)學(xué)家,物理學(xué)家,計(jì)算機(jī)科學(xué)家,這個(gè)人對(duì)Monte Carlo方法做的貢獻(xiàn)相當(dāng)大,正式由于他提出的一種什么算法(名字忘了),才使得Monte Carlo方法能夠得到如此廣泛的應(yīng)用,這人現(xiàn)在還活著,與前幾位牛人不同,Metropolis很專一,他一生主要的貢獻(xiàn)就是Monte Carlo方法。
??? 蒙特卡羅方法的名字來(lái)源于摩納哥的一個(gè)城市蒙地卡羅,該城市以賭博業(yè)聞名,而蒙特·羅方法正是以概率為基礎(chǔ)的方法。與它對(duì)應(yīng)的是確定性算法。
????二 解決問(wèn)題的基本思路
??? Monte Carlo方法的基本思想很早以前就被人們所發(fā)現(xiàn)和利用。早在17世紀(jì),人們就知道用事件發(fā)生的"頻率"來(lái)決定事件的"概率"。19世紀(jì)人們用投針試驗(yàn)的方法來(lái)決定圓周率π。本世紀(jì)40年代電子計(jì)算機(jī)的出現(xiàn),特別是近年來(lái)高速電子計(jì)算機(jī)的出現(xiàn),使得用數(shù)學(xué)方法在計(jì)算機(jī)上大量、快速地模擬這樣的試驗(yàn)成為可能。?
????
??? 為了說(shuō)明Monte Carlo方法的基本思想,讓我們先來(lái)看一個(gè)簡(jiǎn)單的例子,從此例中你可以感受如何用Monte Carlo方法考慮問(wèn)題。
??????? 例1:比如y=x^2(對(duì)x)從0積到1。結(jié)果就是下圖紅色部分的面積:
????注意到函數(shù)在(1,1)點(diǎn)的取值為1,所以整個(gè)紅色區(qū)域在一個(gè)面積為1的正方形里面。所以所求區(qū)域的面積即為 在正方形區(qū)域內(nèi)任取點(diǎn),點(diǎn)落在所求區(qū)域的概率。這個(gè)限制條件是y<x^2。用matlab模擬,做一百萬(wàn)次(即共取1000000個(gè)點(diǎn)),結(jié)果為0.3328。
????1)總結(jié)Monte Carlo方法的基本思想:所求解問(wèn)題是某隨機(jī)事件A出現(xiàn)的概率(或者是某隨機(jī)變量B的期望值)。通過(guò)某種“實(shí)驗(yàn)”的方法,得出A事件出現(xiàn)的頻率,以此估計(jì)出A事件出現(xiàn)的概率(或者得到隨機(jī)變量B的某些數(shù)字特征,得出B的期望值)。?
????2)工作過(guò)程
在解決實(shí)際問(wèn)題的時(shí)候應(yīng)用蒙特卡羅方法主要有兩部分工作:
用蒙特卡羅方法模擬某一過(guò)程時(shí),需要產(chǎn)生各種概率分布的隨機(jī)變量。?
用統(tǒng)計(jì)方法把模型的數(shù)字特征估計(jì)出來(lái),從而得到實(shí)際問(wèn)題的數(shù)值解。
????3)蒙特卡羅解題三個(gè)主要步驟:
?
?(1)構(gòu)造或描述概率過(guò)程: 對(duì)于本身就具有隨機(jī)性質(zhì)的問(wèn)題,如粒子輸運(yùn)問(wèn)題,主要是正確描述和模擬這個(gè)概率過(guò)程,對(duì)于本來(lái)不是隨機(jī)性質(zhì)的確定性問(wèn)題,比如計(jì)算定積分,就必須事先構(gòu)造一個(gè)人為的概率過(guò)程,它的某些參量正好是所要求問(wèn)題的解。即要將不具有隨機(jī)性質(zhì)的問(wèn)題轉(zhuǎn)化為隨機(jī)性質(zhì)的問(wèn)題。?
?(2)實(shí)現(xiàn)從已知概率分布抽樣: 構(gòu)造了概率模型以后,由于各種概率模型都可以看作是由各種各樣的概率分布構(gòu)成的,因此產(chǎn)生已知概率分布的隨機(jī)變量(或隨機(jī)向量),就成為實(shí)現(xiàn)蒙特卡羅方法模擬實(shí)驗(yàn)的基本手段,這也是蒙特卡羅方法被稱為隨機(jī)抽樣的原因。最簡(jiǎn)單、最基本、最重要的一個(gè)概率分布是(0,1)上的均勻分布(或稱矩形分布)。隨機(jī)數(shù)就是具有這種均勻分布的隨機(jī)變量。隨機(jī)數(shù)序列就是具有這種分布的總體的一個(gè)簡(jiǎn)單子樣,也就是一個(gè)具有這種分布的相互獨(dú)立的隨機(jī)變數(shù)序列。產(chǎn)生隨機(jī)數(shù)的問(wèn)題,就是從這個(gè)分布的抽樣問(wèn)題。在計(jì)算機(jī)上,可以用物理方法產(chǎn)生隨機(jī)數(shù),但價(jià)格昂貴,不能重復(fù),使用不便。另一種方法是用數(shù)學(xué)遞推公式產(chǎn)生。這樣產(chǎn)生的序列,與真正的隨機(jī)數(shù)序列不同,所以稱為偽隨機(jī)數(shù),或偽隨機(jī)數(shù)序列。不過(guò),經(jīng)過(guò)多種統(tǒng)計(jì)檢驗(yàn)表明,它與真正的隨機(jī)數(shù),或隨機(jī)數(shù)序列具有相近的性質(zhì),因此可把它作為真正的隨機(jī)數(shù)來(lái)使用。由已知分布隨機(jī)抽樣有各種方法,與從(0,1)上均勻分布抽樣不同,這些方法都是借助于隨機(jī)序列來(lái)實(shí)現(xiàn)的,也就是說(shuō),都是以產(chǎn)生隨機(jī)數(shù)為前提的。由此可見(jiàn),隨機(jī)數(shù)是我們實(shí)現(xiàn)蒙特卡羅模擬的基本工具。 建立各種估計(jì)量: 一般說(shuō)來(lái),構(gòu)造了概率模型并能從中抽樣后,即實(shí)現(xiàn)模擬實(shí)驗(yàn)后,我們就要確定一個(gè)隨機(jī)變量,作為所要求的問(wèn)題的解,我們稱它為無(wú)偏估計(jì)。?
?(3)建立各種估計(jì)量,相當(dāng)于對(duì)模擬實(shí)驗(yàn)的結(jié)果進(jìn)行考察和登記,從中得到問(wèn)題的解。 例如:檢驗(yàn)產(chǎn)品的正品率問(wèn)題,我們可以用1表示正品,0表示次品,于是對(duì)每個(gè)產(chǎn)品檢驗(yàn)可以定義如下的隨機(jī)變數(shù)Ti,作為正品率的估計(jì)量: 于是,在N次實(shí)驗(yàn)后,正品個(gè)數(shù)為: 顯然,正品率p為: 不難看出,Ti為無(wú)偏估計(jì)。當(dāng)然,還可以引入其它類型的估計(jì),如最大似然估計(jì),漸進(jìn)有偏估計(jì)等。但是,在蒙特卡羅計(jì)算中,使用最多的是無(wú)偏估計(jì)。 用比較抽象的概率語(yǔ)言描述蒙特卡羅方法解題的手續(xù)如下:構(gòu)造一個(gè)概率空間(W ,A,P),其中,W 是一個(gè)事件集合,A是集合W 的子集的s 體,P是在A上建立的某個(gè)概率測(cè)度;在這個(gè)概率空間中,選取一個(gè)隨機(jī)變量q (w ),w Î W ,使得這個(gè)隨機(jī)變量的期望值 正好是所要求的解Q ,然后用q (w )的簡(jiǎn)單子樣的算術(shù)平均值作為Q 的近似值。?
????三 本方法特點(diǎn)
直接追蹤粒子,物理思路清晰,易于理解。?
· 采用隨機(jī)抽樣的方法,較真切的模擬粒子輸運(yùn)的過(guò)程,反映了統(tǒng)計(jì)漲落的規(guī)律。
· 不受系統(tǒng)多維、多因素等復(fù)雜性的限制,是解決復(fù)雜系統(tǒng)粒子輸運(yùn)問(wèn)題的好方法。?
· MC程序結(jié)構(gòu)清晰簡(jiǎn)單。
· 研究人員采用MC方法編寫程序來(lái)解決粒子輸運(yùn)問(wèn)題,比較容易得到自己想得到的任意中間結(jié)果,應(yīng)用靈活性強(qiáng)。
· MC方法主要弱點(diǎn)是收斂速度較慢和誤差的概率性質(zhì),其概率誤差正比于,如果單純以增大抽樣粒子個(gè)數(shù)N來(lái)減小誤差,就要增加很大的計(jì)算量。
??? 另一類形式與Monte Carlo方法相似,但理論基礎(chǔ)不同的方法-"擬蒙特卡羅方法"(Quasi-Monte Carlo方法)-近年來(lái)也獲得迅速發(fā)展。我國(guó)數(shù)學(xué)家華羅庚、王元提出的"華-王"方法即是其中的一例。這種方法的基本思想是"用確定性的超均勻分布序列(數(shù)學(xué)上稱為L(zhǎng)ow Discrepancy Sequences)代替Monte Carlo方法中的隨機(jī)數(shù)序列。對(duì)某些問(wèn)題該方法的實(shí)際速度一般可比Monte Carlo方法提出高數(shù)百倍,并可計(jì)算精確度。
??? 蒙特卡羅方法在金融工程學(xué),宏觀經(jīng)濟(jì)學(xué),計(jì)算物理學(xué)(如粒子輸運(yùn)計(jì)算、量子熱力學(xué)計(jì)算、空氣動(dòng)力學(xué)計(jì)算)等領(lǐng)域應(yīng)用廣泛。
????四 Monte Carlo方法的計(jì)算程序
關(guān)于蒙特卡羅方法的計(jì)算程序已經(jīng)有很多,如:EGS4、FLUKA、ETRAN、ITS、MCNP、GEANT等。這些程序大多經(jīng)過(guò)了多年的發(fā)展,花費(fèi)了幾百人年的工作量。除歐洲核子研究中心(CERN)發(fā)行的GEANT主要用于高能物理探測(cè)器響應(yīng)和粒子徑跡的模擬外,其它程序都深入到低能領(lǐng)域,并被廣泛應(yīng)用。就電子和光子輸運(yùn)的模擬而言,這些程序可被分為兩個(gè)系列:
1.EGS4、FLUKA、GRANT?
2.ETRAN、ITS、MCNP 這兩個(gè)系列的區(qū)別在于:對(duì)于電子輸運(yùn)過(guò)程的模擬根據(jù)不同的理論采用了不同的算法。?
EGS4和ETRAN分別為兩個(gè)系列的基礎(chǔ),其它程序都采用了它們的核心算法。?
ETRAN(for Electron Transport)由美國(guó)國(guó)家標(biāo)準(zhǔn)局輻射研究中心開發(fā),主要模擬光子和電子,能量范圍可從1KeV到1GeV。?
ITS(The integrated TIGER Series of Coupled Electron/Photon Monte Carlo Transport Codes )是由美國(guó)圣地亞哥(Sandia)國(guó)家實(shí)驗(yàn)室在ETRAN的基礎(chǔ)上開發(fā)的一系列模擬計(jì)算程序,包括TIGER 、CYLTRAN 、ACCEPT等,它們的主要差別在于幾何模型的不同。
TIGER研究的是一維多層的問(wèn)題,CYLTRAN研究的是粒子在圓柱形介質(zhì)中的輸運(yùn)問(wèn)題,ACCEPT是解決粒子在三維空間輸運(yùn)的通用程序。?
NCNP(Monte Carlo Neutron and Photo Transport Code)由美國(guó)橡樹林國(guó)家實(shí)驗(yàn)室(Oak Ridge National Laboratory)開發(fā)的一套模擬中子、光子和電子在物質(zhì)中輸運(yùn)過(guò)程的通用MC 計(jì)算程序,在它早期的版本中并不包含對(duì)電子輸運(yùn)過(guò)程的模擬,只模擬中子和光子,較新的版本(如MCNP4A)則引進(jìn)了ETRAN,加入了對(duì)電子的模擬。?
FLUKA 是一個(gè)可以模擬包括中子、電子、光子和質(zhì)子等30余種粒子的大型MC計(jì)算程序,它把EGS4容納進(jìn)來(lái)以完成對(duì)光子和電子輸運(yùn)過(guò)程的模擬,并且對(duì)低能電子的輸運(yùn)算法進(jìn)行了改進(jìn)。
????五 Monte Carlo方法相關(guān)的一些資料
???? 一個(gè)網(wǎng)站:http://csep1.phy.ornl.gov/mc/mc.html
??? 《蒙特卡羅方法》 徐鐘濟(jì)著 上海科學(xué)技術(shù)出版社
??? 《科學(xué)計(jì)算中的蒙特卡羅策略》(當(dāng)代科學(xué)前沿論叢)(Monte Carlo Strategies in Scientific Computing) 作者:劉軍? 譯者:唐年勝 周勇 徐亮??
???? 統(tǒng)計(jì)物理學(xué)中的蒙特卡羅模擬方法? ( 德) 賓德(Binder,K.),赫爾曼(Heermann,D.W.) 著? 北京大學(xué)出版社? 1994.2?
???? 小尺寸半導(dǎo)體器件的蒙特卡羅模擬? 葉良修編著? 科學(xué)出版社? 1997.2?
???? 蒙特卡羅方法及其在粒子輸運(yùn)問(wèn)題中的應(yīng)用? 裴鹿成, 張孝澤著? 科學(xué)出版社? 1980.10???
???? 統(tǒng)計(jì)試驗(yàn)法:( 蒙特卡羅法) 及其在電子數(shù)字計(jì)算機(jī)上的實(shí)現(xiàn)? (蘇) 布斯連科( Н. П. Бусленко), (蘇) 施? 上海科學(xué)技術(shù)出版社??
???? 若干本書:人大經(jīng)濟(jì)論壇http://www.pinggu.org/bbs/thread-445802-1-1.html
???? 高分子科學(xué)中的Monte Carlo方法? 楊玉良? 復(fù)旦大學(xué)出版社? 1993.12? 7-309-01361-1?
???? Monte Carlo simulation of semiconductor devices? C. Moglestue.? Chapman & Hall,? 1993.? 041247770X?
???? Monte Carlo methods in statistical physics? with contributions by K. Binder ... [et al.] ; edi? Springer-Verlag,? 1979.??
???? guide to Monte Carlo simulations in statistical physics? David P. Landau, Kurt Binder.? Cambridge University Press,? c2000.??
???? Monte Carlo methods in statistical physics? edited by K. Binder ; with contributions by K. Bin? Springer-Verlag,? c1986.?
???? Applications of the Monte Carlo method in statistical physics? edited by K. Binder.? Springer,? 1984.??
???? Monte Carlo Device Simulation? Karl Hess? Kluwer Acadmic?
?
參考資料: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
總結(jié)
以上是生活随笔為你收集整理的蒙特卡罗(Monte Carlo)方法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 暗时间理论
- 下一篇: 用位运算实现加减乘除