MonteCarlo方法

Stan Mon ・

起源

蒙特卡羅模擬由著名的摩納哥賭城而得名,他是一種非常強有力的方法學。對專業人員來說,這種模擬為方便的解決困難而複雜的實際問題開啟了一扇大門。估計蒙特卡羅模擬最著名的早期使用是諾貝爾獎物理學家Enrico Fermi(有時也說是核子彈之父)在1930年的套用,那時他用一種隨機方法來計算剛發現的中子的性質。蒙特卡羅模擬是曼哈頓計畫所用到的模擬的核心部分,在20世紀50年代蒙特卡羅模擬就用在Los Alamos國家實驗室發展氫彈的早期工作中,並流行於物理學和運籌學研究領域。蘭德公司和美國空軍是這個時期主要的兩個負責資助和傳播蒙特卡羅方法的組織,今天蒙特卡羅模擬也被廣泛套用於不同的領域,包括工程,物理學,研發,商業和金融。
簡而言之,蒙特卡羅模擬創造了一種假設的未來,它是通過產生數以千計甚至成千上萬的樣本結果並分析他們的共性實現的。在實踐中,蒙特卡羅模擬法用於風險分析,風險鑑定,敏感度分析和預測。模擬的一個替代方法是極其複雜的隨機閉合數學模型。對一個公司的分析,使用研究生層次的高等數學和統計學顯然不合邏輯和實際。一個出色的分析家會使用所有他或她可得的工具以最簡單和最實際的方式去得到相同的結果。任何情況下,建模正確時,蒙特卡羅模擬可以提供與更完美的數學方法相似的答案。此外,有許多實際生活套用中不存在閉合模型並且唯一的途徑就是套用模擬法。那么,到底什麼是蒙特卡羅模擬以及它是怎么工作的?

創始人

主要是這四位:Stanislaw Marcin Ulam, Enrico Fermi(恩里科・費米), John von Neumann(馮・諾依曼)和 Nicholas Metropolis。
創始人簡介
Stanislaw Marcin Ulam是波蘭裔美籍數學家,早年是研究拓撲的,後因參與曼哈頓工程,興趣遂轉向套用數學,他首先提出用Monte Carlo方法解決計算數學中的一些問題,然後又將其套用到解決鏈式反應的理論中去,可以說是Monte Carlo方法的奠基人;
Enrico Fermi是個物理大牛,理論和實驗同時都是大牛,這在物理界很少見,在“物理大牛的八卦”那篇文章里提到這個人很多次,對於這么牛的人只能是英年早逝了(別說我嘴損啊,上帝都嫉妒!);
John von Neumann可以說是計算機界的牛頓吧,太牛了,結果和Fermi一樣,被上帝嫉妒了;
Nicholas Metropolis,希臘裔美籍數學家,物理學家,計算機科學家,這個人對Monte Carlo方法做的貢獻相當大,正式由於他才使得Monte Carlo方法能夠得到如此廣泛的套用,這人現在還活著,與前幾位牛人不同,Metropolis很專一,他一生主要的貢獻就是Monte Carlo方法。

解決問題的基本思路

Monte Carlo方法的基本思想很早以前就被人們所發現和利用。早在17世紀,人們就知道用事件發生的"頻率"來決定事件的"機率"。19世紀人們用投針試驗的方法來決定圓周率π。本世紀40年代電子計算機的出現,特別是近年來高速電子計算機的出現,使得用數學方法在計算機上大量、快速地模擬這樣的試驗成為可能。
為了說明Monte Carlo方法的基本思想,讓我們先來看一個簡單的例子,從此例中你可以感受如何用Monte Carlo方法考慮問題。
例:比如y=x^2(對x)從0積到1,結果就是下圖紅色部分的面積:
注意到函式在(1,1)點的取值為1,所以整個紅色區域在一個面積為1的正方形裡面。所以所求區域的面積即為在正方形區域內任取點,點落在所求區域的機率。這個限制條件是y<x^2。用matlab模擬,做一百萬次(即共取1000000個點),結果為0.3328,與用積分法算出來的三分之一非常接近。

三個主要步驟

1。構造或描述機率過程: 對於本身就具有隨機性質的問題,如粒子輸運問題,主要是正確描述和模擬這個機率過程,對於本來不是隨機性質的確定性問題,比如計算定積分,就必須事先構造一個人為的機率過程,它的某些參量正好是所要求問題的解。即要將不具有隨機性質的問題轉化為隨機性質的問題。
2。實現從已知機率分布抽樣: 構造了機率模型以後,由於各種機率模型都可以看作是由各種各樣的機率分布構成的,因此產生已知機率分布的隨機變數(或隨機向量),就成為實現蒙特卡羅方法模擬實驗的基本手段,這也是蒙特卡羅方法被稱為隨機抽樣的原因。最簡單、最基本、最重要的一個機率分布是(0,1)上的均勻分布(或稱矩形分布)。隨機數就是具有這種均勻分布的隨機變數。隨機數序列就是具有這種分布的總體的一個簡單子樣,也就是一個具有這種分布的相互獨立的隨機變數序列。產生隨機數的問題,就是從這個分布的抽樣問題。在計算機上,可以用物理方法產生隨機數,但價格昂貴,不能重複,使用不便。另一種方法是用數學遞推公式產生。這樣產生的序列,與真正的隨機數序列不同,所以稱為偽隨機數,或偽隨機數序列。不過,經過多種統計檢驗表明,它與真正的隨機數,或隨機數序列具有相近的性質,因此可把它作為真正的隨機數來使用。由已知分布隨機抽樣有各種方法,與從(0,1)上均勻分布抽樣不同,這些方法都是藉助於隨機序列來實現的,也就是說,都是以產生隨機數為前提的。由此可見,隨機數是我們實現蒙特卡羅模擬的基本工具。 建立各種估計量: 一般說來,構造了機率模型並能從中抽樣後,即實現模擬實驗後,我們就要確定一個隨機變數,作為所要求的問題的解,我們稱它為無偏估計。
3。建立各種估計量,相當於對模擬實驗的結果進行考察和登記,從中得到問題的解。常用的估計量有無偏估計,最大似然估計,漸進有偏估計等,使用最多的是無偏估計。

模擬的特點

蒙特卡羅方法與一般計算方法有很大區別,一般計算方法對於解決多維或因素複雜的問題非常困難,而蒙特卡羅方法對於解決這方面的問題卻比較簡單。其特點如下:
・ 直接追蹤粒子,物理思路清晰,易於理解。
・ 採用隨機抽樣的方法,較真切的模擬粒子輸運的過程,反映了統計漲落的規律。
・ 不受系統多維、多因素等複雜性的限制,是解決複雜系統粒子輸運問題的好方法。
・ MC程式結構清晰簡單。
・ 研究人員採用MC方法編寫程式來解決粒子輸運問題,比較容易得到自己想得到的任意中間結果,套用靈活性強。
・ MC方法主要弱點是收斂速度較慢和誤差的機率性質,其機率誤差正比於,如果單純以增大抽樣粒子個數N來減小誤差,就要增加很大的計算量。
近十年來,蒙特卡羅方法發展很快,從1983年到1988年期刊論文數量增長了五倍,有幾本好書是關於電子? 光子蒙特卡羅問題的[注1],蒙特卡羅方法的代碼被認為是黑匣子,它已成為計算數學中不可缺少的組成部分,這主要是因為以下原因:
・ 傳統的分析方法受到了問題複雜性的限制。
・ MC方法直觀,對實驗者很有吸引力。
・ 計算機變得更快更便宜。
・ 量子理論的發展為我們提供了輻射與物質相互作用的截面數據。

實現技巧

matlab中各種產生相應分布偽隨機數的命令。如果模擬的分布在這些命令所能提供的之外,需要相應的技巧,一是產生隨機數的技巧,如線性乘同餘方法(Linear Congruential Method)等,另一個解決問題的思想技巧,如 1768年,法國數學家Comte de Buffon利用投針實驗估計p的值。

相關詞條

相關搜尋

熱門詞條

聯絡我們