盧嘉澍
【摘要】 本文基于蒙特卡洛方法的定義,給出使用其進行近似積分的一般步驟,并以均勻分布為例講解了具體操作步驟.積分算例表明,這種方法概念簡單、編程容易,可應用于工程實際問題中重要的數值積分計算.
【關鍵詞】 積分計算;蒙特卡洛法;區間估計
一、引 言
蒙特卡洛法,也稱統計模擬方法,是一種計算機化的數學方法.20世紀40年代中葉出現了電子計算機,使得用數學方法模擬大量試驗成為可能.另外,隨著科學技術不斷發展,出現了越來越多的復雜問題,用通常的解析方法或數值方法都難解決.蒙特卡洛法(包括求積分、微分以及線性、非線性方程組等)就是在這些情況下,作為一種可行的,且是不可缺少的計算方法被提出和迅速發展起來的.以概率論為理論基礎,其可靠性與收斂性也能得到很好地說明.在通常積分的求解中,常用數值積分公式對積分進行求解.然而數值求積公式的精度將受到積分維數的影響,同時,對于無窮積分,將其近似地看作定積分本身也會喪失一定的精度.
二、算法思想
對于積分若能選取連續型隨機變量X,其概率密度函數p(x)滿足如下條件:
1.p(x)>0,x∈ R n.
2.p(x)及其上側分位數已知.
則便可對上述積分作統計模擬并進行誤差估計.特別地,若取概率分布為D上的均勻分布,則其概率密度
g(x)= 1 m(D) .
其中m(D)為積分區域D的測度.則原積分可轉化為
即相當于求隨機變量X在函數
下的數學期望,這就將積分問題轉化為期望估計問題,至此便可運用數理統計相關理論,如點估計、區間估計對其進行求解.
三、公式推導
考慮一般情形,對于所求期望E(h(x)),我們運用數理統計的相關理論對其進行區間估計.首先,假設
為一束均勻分布族,把上式代入積分表達式,可得
根據此式,可以得到n重積分的估計式
根據上式即可使用基于均勻分布的樣本對所求積分進行數值估計.
四、實 例
(1)考慮一維情形.根據隨機分布g(x)隨機選取樣本(x1,x2,…,xn),
則可以給出積分
的估計式
同時,也可以給出基于區間估計的誤差,置信度為1-α的誤差為
其中Kα為同置信度有關的常數,并滿足|Kα|<1.故誤差滿足
我們可以得到,積分值的估計量θ ^ →∫baf(x)dx,誤差的大小不隨維數而顯著改變,故這種估計方法是合理的.若取f(x)=ex,考慮其在[0,1]上的積分.選取n=10 000,生成10 000個[0,1]內的隨機數,再根據上式進行求解.使用MATLAB編程求解其在[0,1]內積分的近似值,運行代碼如下:
f=@(x)exp(x);xx=rand(1,10000);S=sum(f(xx))/
10000
輸出結果
S=1.718220782967407
對于任意區間[a,b]的均勻分布隨機數,總可以通過[0,1]內隨機數進行線性映射得到
r′k=(b-a)rk+a.
綜上所述,使用蒙特卡羅法進行積分計算的一般步驟為:
(1)根據概率密度函數,確定一組基于密度函數的容量為n的樣本(x1,x2,…,xn).
(2)根據每層積分上下限的表達式,確定每一層相應積分樣本的上下限.特別的,若積分為矩形區域上的積分,則樣本上下限即為相應層積分區間的上下限[ai,bi].
(3)使用公式
對原積分進行數值估計.
五、結 語
使用蒙特卡洛方法進行積分計算,理論上可以通過選取合適的隨機分布來提高蒙特卡洛方法的精度.
由于蒙特卡洛方法思想簡單,易于編程實現,且一般的程序語言如C++,MATLAB,Mathematica都有生成各類常用分布隨機數的命令,更加方便了程序設計.并且,其精度不會隨著積分維數增大而顯著增長,對于計算一些復雜的高維積分有明顯的優勢.因此,可以推斷,蒙特卡洛方法將作為一種數值積分工具而得到廣泛應用.