魏麗英,陳曉鵬
(1.桂林電子科技大學 數學與計算科學學院,廣西 桂林 541004;2.山西省潞安集團 地質處,山西 長治 046204)
模擬是指把某一現實的或抽象的系統的狀態和特征,用另一個稱為模型的系統來代替或模仿。電子計算機的出現及計算機科學技術的迅猛發展,給許多學科帶來了巨大的影響。計算機不但使問題的求解變得更加方便、快捷和精確,而且使得解決實際問題的領域更加廣泛。計算機適合于解決規模大、難以解析化以及不確定的數學模型,為系統模擬提供了極有力的工具。計算機模擬就是用計算機程序在計算機上模仿各種實際系統的運行過程,并通過計算了解系統隨時間變化的行為或特性。
Monte Carlo方法,即隨機模擬法,是用計算機模擬隨機現象,通過仿真試驗,得到實驗數據,再進行分析推斷,得到某些現象的規律或某些問題的求解的方法,它是計算機模擬的基礎,它對解決隨機性問題具有很強的能力。Monte Carlo方法的基本思想是:首先建立一個概率模型,使所求問題的解正好是該模型的參數或其他有關的特征量;然后通過模擬統計,即多次隨機抽樣實驗,統計出某事件發生的頻率。只要實驗次數足夠多,該頻率便近似于事件發生的概率,這實際上就是概率的統計定義[1]。
Monte Carlo方法屬于試驗數學的一個分支,它研究的問題大致可分為兩種類型,一種是問題本身是隨機的;另一種是本身屬于確定性問題,但可以建立它的解與特定隨機變量或隨機過程的數字特征或分布函數之間的聯系,因而也可用隨機模擬方法解決。本文旨在給出對Monte Carlo方法應用的一點思考,只涉及前一種問題。
Monte Carlo方法源于1777年法國科學家Buffer提出的一種計算圓周率π的方法——隨機投針法,即著名的 Buffer投針問題,其步驟為[1]:
(1)在紙上畫出間距為d的平行直線;
(2)取長度為t(t (4)計算出π的近似值。 可 令 x~U(0,d/2),θ~U(0,π), 建 立 直 角 坐 標 系(θ,x),如圖2所示,由幾何概率可知: 這里存在一個問題:算法的目的是計算π的值,而由此產生的模擬步驟中顯然已利用了π的值(產生隨機變量θ),這是矛盾的。筆者認為可直接將 sinθ當作一個隨機變量,考慮用舍選抽樣法來直接產生 sinθ,其中 θ~(0,π),其原理如下: 如圖 3 所示,θ~U(0,π),在半圓周 D={(x,y)|x2+y2=1,y>0}上的每一個隨機點與θ一一對應,故隨機變量的抽樣可由隨機變量Y=(x,y)∈D的抽樣代替,而隨機變量sinθ的抽樣可由Y中分量y的抽樣代替,這是因為此時 改進后模擬步驟如下: (1)給定初值 t,d,n; 用Matlab編程實現,取ε=0.01時的統計結果如表1所示。 表1 計算機模擬統計結果 從表1可看出,運算精度與參數選取有很大關系,一個啟示是實驗模擬時要精心設置參數,并多次實驗提高精度。 Monte Carlo方法可用來產生具有一定分布特征的隨機數。 用 Matlab編程實現, 取 α=2,β=3,n=100,結果如表 2所示。 經檢驗其樣本均值為0.400 0,樣本方差為 0.043 0,而此Beta分布的期望是 0.4,方差是0.04,可見其模擬程度很好。 表2 Beta分布隨機變量 表3 標準正態隨機變量 (1)產生隨機變量 ui~U(-3,3),vi~U(0,1); (2)檢驗 mf(ui)≥vi是否成立,若成立則令 xj=ui,j=j+1,否則轉到步驟(1),直到i>n(n為預先給定的實驗次數)。 用Matlab編程實現,取n=100,結果如表3所示。 經檢驗其樣本均值為0.001 6,樣本方差為0.914 5,可見其模擬程度較高。由標準正態隨機變量,進行變換Y=μ+σX,可知 Y~N(μ,σ2),可得一般正態分布隨機變量。 Monte Carlo方法是通過設計適當的隨機試驗而完成某種計算任務的方法,它對解決隨機性問題具有很強的能力。隨著電子計算機的高速發展,Monte Carlo方法在自然科學及社會科學領域的應用越來越廣泛,許多用確定性方法難以解決的隨機性問題都可以用它方便地解決,特別是在隨機模擬方面更顯示了其獨特的魅力。Buffer問題反映了蒙特卡羅方法的思想,通過設計適當的隨機試驗來完成某種計算任務。但在利用計算機模擬隨機試驗時出現矛盾是由于Buffer問題本身不涉及常數π值,在利用計算機模擬試驗中沒有回避這一問題而造成的,因此應該設法避免[4]。 [1]重慶大學數學系.數學實驗[M].北京:科學出版社,2000. [2]王梓坤.概率論基礎及其應用[M].北京:北京師范大學出版社,2007. [3]楊肇夏.計算機模擬及其應用[M].北京:中國鐵道出版社,1999. [4]左國新,陳應保.蒲豐問題與蒙特卡羅方法[J].高等函授學報(自然科學版),2005,18(2):3-4.




2 Monte Carlo方法模擬隨機變量

2.1 Beta分布




2.2 標準正態分布

