遼寧衛(wèi)生職業(yè)技術(shù)學(xué)院數(shù)理計(jì)算機(jī)教研室(110101) 張樂成 景 宇
在統(tǒng)計(jì)學(xué)中常見的均勻分布函數(shù)、指數(shù)分布函數(shù)、正態(tài)分布函數(shù)等都是連續(xù)型隨機(jī)變量分布函數(shù),對(duì)于統(tǒng)計(jì)工作者來說,連續(xù)型隨機(jī)變量分布函數(shù)計(jì)算是經(jīng)常遇到且必須解決的問題。由分布函數(shù)F(x)定義及數(shù)學(xué)分析可知〔1〕,F(xiàn)(x)計(jì)算是一個(gè)積分計(jì)算,從根本說就是關(guān)于密度函數(shù)f(x)定積分計(jì)算。在數(shù)學(xué)中對(duì)定積分近似計(jì)算方法有很多,但對(duì)于廣大醫(yī)學(xué)衛(wèi)生工作者來說,要掌握這些計(jì)算方法還需了解相關(guān)數(shù)學(xué)知識(shí),因此,他們使用這些計(jì)算方法很不方便。本文給出了一個(gè)用概率方法計(jì)算定積分的方法,即用統(tǒng)計(jì)試驗(yàn)法計(jì)算定積分,同時(shí)給出了該方法計(jì)算機(jī)程序。這種方法理論上非常簡(jiǎn)單,極易掌握,借助計(jì)算機(jī)可輕松完成。
統(tǒng)計(jì)試驗(yàn)方法又稱蒙特卡羅方法〔2〕,是一種采用統(tǒng)計(jì)抽樣理論近似地求解數(shù)學(xué)問題或物理問題的方法,既可用來研究概率問題,也可用來求解非概率問題。利用蒙特卡羅方法去解決數(shù)學(xué)分析問題時(shí),基本的思想是首先建立與描述該問題有相似性的概率模型,利用這種相似性把這概率模型的某些特征(如隨機(jī)事件的概率或隨機(jī)變量的平均值等)與數(shù)學(xué)分析問題的解答(如積分值、微分方程的解等)聯(lián)系起來,然后對(duì)模型進(jìn)行隨機(jī)模似或統(tǒng)計(jì)抽樣,再利用所得結(jié)果求出這些特征的統(tǒng)計(jì)估計(jì)值作為原來的分析問題的近似解。蒙特卡羅方法的理論基礎(chǔ)是概率論中最一般的定理——大數(shù)定律。
下面我們用蒙特卡羅方法來求解定積分問題,進(jìn)而解決連續(xù)型隨機(jī)變量分布函數(shù)計(jì)算問題。采用的方法是隨機(jī)擲點(diǎn)計(jì)數(shù)統(tǒng)計(jì)法,實(shí)例如下:
依據(jù)上述算法用Visual Basic語言編寫程序如下:首先建立一個(gè)窗體,在窗體上建五個(gè)文本框和一個(gè)命令按鈕。編寫代碼如下:
Private Sub Command1_Click()
Dim x(),y()
a=Text1'積分區(qū)間下限
b=Text2'積分區(qū)間上限
c=Text3'被積函數(shù)一個(gè)上界
n=Text4'試驗(yàn)次數(shù)
ReDim x(n),y(n)
Randomize
m=0
For i=1 To n
x(i)=(b-a)*Rnd+a
y(i)=c*Rnd
If f(x(i))>=y(i)Then m=m+1
Next i
Text5=m/n*(b-a)*c
例 計(jì)算標(biāo)準(zhǔn)正態(tài)分布函數(shù)
End Sub
Function f(x)
100 f=Sqr(x)
End Function
2.改寫程序
將語句標(biāo)號(hào)為100語句改換為
f=1/Sqr(2*3.1415926)*Exp(-x^2/2)
3.運(yùn)行程序
將a賦值0,將b賦值2,將c賦值0.5(是積分函數(shù)一個(gè)上界),將n賦值100000。
我們計(jì)算 5次的值分別是:0.47570,0.47679,0.47851,0.47615,0.47802,平均值是 0.47703
所以φ(2)≈0.5+0.47703=0.97703
求φ(-1)可以將φ(-1)整理成:
1.計(jì)算時(shí)對(duì)c值選擇很重要,c越小越好(擲點(diǎn)試驗(yàn)靈敏度越高),但c必需是積分函數(shù)在積分區(qū)域上的上界。
2.依據(jù)大數(shù)定律,對(duì)n值選擇是越大越好。但要注意對(duì)程序運(yùn)行時(shí)間影響不要太大,還有考慮計(jì)算機(jī)能否可以接受。
3.計(jì)算連續(xù)型隨機(jī)變量分布函數(shù)時(shí),需要把它整理成求定積分形式。
4.本文給出程序代碼是本方法核心代碼,人們可根據(jù)需要進(jìn)行擴(kuò)充,如加入求多個(gè)結(jié)果的平均數(shù)計(jì)算等。
5.本文雖沒有給出算法結(jié)果的誤差估計(jì),但是這個(gè)誤差估計(jì)是可以計(jì)算出的。這是因?yàn)楸疚闹衝次擲點(diǎn)試驗(yàn),可以看做是進(jìn)行n次成功概率為Q的貝努里試驗(yàn),m是其中成功次數(shù),故m服從二項(xiàng)分布b(n,Q)。
1.盛驟,謝式千,潘承毅.概率論與數(shù)理統(tǒng)計(jì).第4版.北京:高等教育出版社,2008.
2.陳東彥,李東梅,王樹忠.?dāng)?shù)學(xué)建模.北京:科技出版社,2007.