講解
蒙特卡羅(Monte Carlo)方法,或稱計算機隨機模擬方法,是一種基於“隨機數”的計算方法。這一方法源於美國在第二次世界大戰進行研製核子彈的“
曼哈頓計畫”。該計畫的主持人之一、數學家馮·諾伊曼用馳名世界的賭城—摩納哥的Monte Carlo—來命名這種方法,為它蒙上了一層神秘色彩。
蒙特卡羅方法的基本思想很早以前就被人們所發現和利用。早在17世紀,人們就知道用事件發生的“頻率”來決定事件的“機率”。19世紀人們用
投針試驗的方法來決定圓周率π。本世紀40年代電子計算機的出現,特別是近年來高速電子計算機的出現,使得用數學方法在計算機上大量、快速地模擬這樣的試驗成為可能。
數值分析中,
擬蒙特卡羅方法是使用低差異列(一種確定生成的超均勻分布列,也稱為擬隨機列、次隨機列)來進行
數值積分和研究其它一些數值問題的方法。而普通的
蒙特卡羅方法或蒙地卡羅積分方法使用的是偽隨機數。
MATLAB中提供了生成如哈爾頓列、索博爾列等超均勻分布列的
函式。
擬蒙特卡羅方法和蒙特卡羅方法的具體內容相似,要解決的問題都是通過測量某個
可測函式f在某些點上的取值,而在數值上求它的積分的近似值。例如要求在單位體積
上的積分近似,可以設取的點為
x1, ...,
xN,那么:
其中的
xi都是s維
向量。擬蒙特卡羅方法和普通蒙特卡羅方法的區別在於
xi的具體選取方式。蒙特卡羅方法用的是偽隨機列,而擬蒙特卡羅方法用到的是哈爾頓列、索博爾列等低差異列。使用低差異列的優點是收斂速率較快。擬蒙特卡羅方法可以達到O(1/N)的收斂速率,而普通蒙特卡羅方法的收斂速率則是 O(N)。
近年來,擬蒙特卡羅方法在
金融數學和計算機數學領域裡得到了越來越多的套用,因為其中常常會需要計算高維積分的數值近似。蒙特卡羅方法和擬蒙特卡羅方法可以快捷簡單地得到較好的結果。
套用
考慮平面上的一個邊長為1的正方形及其內部的一個形狀不規則的“圖形”,如何求出這個“圖形”的面積呢?Monte Carlo方法是這樣一種“隨機化”的方法:向該正方形“隨機地”投擲N個點落於“圖形”內,則該“圖形”的面積近似為M/N。
可用民意測驗來作一個不嚴格的比喻。民意測驗的人不是徵詢每一個登記選民的意見,而是通過對選民進行小規模的抽樣調查來確定可能的優勝者。其基本思想是一樣的。
科技計算中的問題比這要複雜得多。比如金融衍生產品(期權、期貨、掉期等)的定價及交易風險估算,問題的維數(即變數的個數)可能高達數百甚至數千。對這類問題,難度隨維數的增加呈指數增長,這就是所謂的“維數的災難”(Curse Dimensionality),傳統的數值方法難以對付(即使使用速度最快的計算機)。Monte Carlo方法能很好地用來對付維數的災難,因為該方法的計算複雜性不再依賴於維數。以前那些本來是無法計算的問題也能夠計算量。為提高方法的效率,科學家們提出了許多所謂的“方差縮減”技巧。
誤差估計
擬蒙特卡羅方法的近似誤差可以用取點x1, ...,xN的差異度作為上限。具體來說,Koksma-Hlawka不等式表明,誤差項
限制,其中V(f)為函式
f的Hardy-Krause變差,D
N是(x
1,...,x
N)的差異度,定義為
其中
Q是任何[0,1]中邊界與坐標軸平行的方形“塊”。
表明擬蒙特卡羅方法的近似誤差大約是
的量級,於此相對的是普通蒙特 卡羅方法的近似誤差為
量級。注意這裡的不等式給出的是誤差上限,事實上擬蒙特卡羅方法的收斂速率要比其上限所示的速率快得多。因此,一般來說擬蒙特卡羅方法比起普通的蒙特卡羅方法來說大大加快了收斂的速率。