概率實驗報告-蒙特卡洛積分_第1頁
概率實驗報告-蒙特卡洛積分_第2頁
概率實驗報告-蒙特卡洛積分_第3頁
概率實驗報告-蒙特卡洛積分_第4頁
概率實驗報告-蒙特卡洛積分_第5頁
已閱讀5頁,還剩7頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

本科實驗報告實驗名稱:《概率與統計》隨機模擬實驗隨機模擬實驗實驗設隨機變量X的分布律為P{X=i}=2-i,i=1,2,3 試產生該分部的隨機數1000個,并作出頻率直方圖。一、實驗原理采用直接抽樣法:定理:設U是服從[0,1]上的均勻分布的隨機變量,則隨機變量y=F-1(U)與X有相同的分布函數Y=F-1(U)(為F(x)的逆函數),即Y=F-1(U)的分部函數為F(x).二、題目分析易得題中X的分布函數為F(x)=1--,i<x<i+1,i=0,1,2,3,……2i若用ceil表示對小數向正無窮方向取整,則F(x)的反函數為F-1(〃)=ceilI叱")I

[產生服從[0,1]上的均勻分布的隨機變量a,則m=F-1(a)則為題中需要產生的隨機數。三、MATLAB實現f=[];i=1;whilei<=1000a=unifrnd(0,1); %產生隨機數a,服從【0,1】上的均勻分布m=log(1-a)/log(1/2);b=ceil(m);%對m向正無窮取整f=[f,b];i=i+1;enddisplay(f);[n,xout]=hist(f);bar(xout,n/1000,1)產生的隨機數(取1000個中的20個)如下:

i12345678910f(i)2233124133i11121314151617181920f(i)1221111112頻率分布直方圖0.60.70.60.60.40.60.70.60.60.4□.3.0.20.10 .2. 46 8 1012實驗二設隨機變量X的密度函數為,/、f4xe-2x,x>0,

f(x)=<0,x<0試產生該分布的隨機數1000個,并作出頻率直方圖一、實驗原理取舍抽樣方法,當分布函數的逆函數難以求出時,可采用此方法。取舍抽樣算法的流程為:(1)選取一個參考分布,其選取原則,一是該分布的隨機樣本容易產生;二是存在常數C,使得f(x)<Cg(x)。

產生參考分布g(x)的隨機樣本x;0獨立產生[0,1]產生參考分布g(x)的隨機樣本x;0獨立產生[0,1]上的均勻分布隨機數u;0若uCg(x)<f(x)00二、題目分析選取參考分布則保留x0,作為所需的隨機樣本;否則舍棄。Ie-x,x>0,g(x)=LcI0,x<0則有f(x)<2g(x),密度函數為g(x)隨機變量的產生采用題1中的方法即可三、MATLAB實現f=[];i=1;whilei<=1000a=rand(1); %產生[0,1]上的隨機分布的數ab=-log(1-a); %利用直接抽樣法產生密度函數為g(x)的隨機數bc=rand(1); %產生[0,1]上的隨機分布的數aifc*2*(1-a)<=4*b*exp(-2*b)%判斷c*2*g(b)是否小于f(b),若滿足,則將b作為所需的隨機樣本保留f=[f,b];i=i+1;endenddisplay(f);[n,xout]=hist(f);bar(xout,n/sum(n),1)產生的部分隨機數(取1000個中的20個)如下:i12345678910f(i)0.76420.40641.55131.08330.07680.41271.34141.44290.33720.7056i11121314151617181920f(i)0.56730.17380.97900.93140.21520.19140.24050.26000.88501.2865頻率分布直方圖

實驗三兩汽車司機每天早上8:00—8:01駕車到達某十字路口。若到達的時間間隔小于15秒,他們必須停車相互避讓。問他們過此十字路口需要停車避讓的概率?如果是三輛、四輛汽車呢?此概率與汽車數的關系怎樣?有多少汽車時有必要安裝紅綠燈呢?分析求解:首先我們考慮樣本空間。如果把n臺車的到達時間看為一個序列{Xn}。考慮兩臺車到達時間分別為了,%+At在同一個時間點內到達的概率limJtAtdx=limtAt=0At-00 At-0則可認為序列{X}幾乎兩兩不相等。n若考慮2臺車在60秒內,間隔時間超過15秒算不擁堵,設A(2,60,15)為不會擁堵,則:J45dxJ60dx9P(A(2,60,15))=升—1產2=-J60dxJ60dx 16x112x1則由此可知2臺車在60秒內,間隔時間超過15秒算不擁堵,不擁堵的概率為2。16若考慮三臺車,四臺車只需將2臺車的積分公式進行拓展便可求出答案。現在考慮n臺車在t秒內,間隔時間超過s秒算不擁堵,設A(n,t,s)為事件“不會擁堵“,則:上述積分式Jt—(n—1)sdxJt—(n—2)sd上述積分式Jt—(n—1)sdxJt—(n—2)sdx...Jt—s20 s . x2+stdx...Jtdx1 2 n—10x x1 —20,elsedxn—1dx1+s n,t>(n—1)sx—1dxnJtdxJtdx...JtdxJt1 2 n—10x x x1 n—2 n—1dxnJt—(n—1)sdxJt—(n—2)sdx...Jt—s dx Jt dx1x1+sxn—2+sn—1x +sn—1可用數學歸納法求得:JtdxJt0 1x1dx...Jt2dxJtn—1dxntnJt—(n—1)s Jt—(n—2)s Jt—sJt (t—(n—1)s)nx C/v,^xJ C/v,^x...J C/v,^x J C/v,^xTOC\o"1-5"\h\z1 2 n—1 n n!0 x+s x+s x+s n1 n—2 n—1則有:t>(n—1)selse(1(nt>(n—1)selseP(A(n,t,s))=<1—t—/°,為了驗證上述公式的正確性,我們用計算機進行了模擬(模擬107組)。模擬的思路是產生服從給定時間范圍內的均勻分布的大量隨機數,通過判斷條件來計數需要停車避讓的點,求得其出現頻率,由大數定理可得需要停車避讓的概率。隨機模擬C++代碼如下:#include<cmath>#include<dlgoritlmi>using-namespacestd;iLitTLfk;doubles,t;doublea二口口口口口二,;doublegetrand(doiibley)return(irand()-EtAND_MAX-iand(J)/(double)(EtAHD_MAX-RAND_MAX))*yintmain()Brand(tiir.e(0));cout<<,rn=,r;cin>>n;aout<<,rt=,r;cin>>t;cont<<"s=*';cin>>s;k=_ooooaoo;intent(0);for(intL=L;i<=k;--i)foriintj=L;j<=n;——j)a'j'=getrand.(t);與口r七(己一二ra-L-n);boolf口;for(intj=L;j<n.;——j)i£(a;j-1;-a;j;<5)■-:£=Q;I>reak;;if(fi-一ent:printf「pf二i=W. pow((L.0-(ti-L)"b"L.0/t>,n));printfi,rpl=^.WXX'n",cnt"L.(?/k);return0;設p0為上述公式計算值,p1為計算機模擬值。ntsP0P1260150.56250.562617360150.1250.1249852460150.003906250.0039277101000100.389416120.3893441301000100.000034490.00003780501000050.289310160.2893139由上表觀察到P0與p1符合程度較好。可基本認為推導公式正確。兩汽車司機需要停車避讓的概率為0.5625,三輛汽車時概率為0.125,四輛汽車時0.0039。關于是否安裝紅綠燈,可根據

1一(n^s、Vt70,else若要使不堵車的概率大于a,則有:1-(n^Vt7故當V1故當V1-7)n<a時,需安裝紅綠燈進行調控。實驗四試采用兩種方法,模擬計算下定積分卜sx0.9e-xdx0并分析其誤差。要計算的定積分是在無窮區間上。考慮到被積函數收斂速度很快(在x為40時已經近似收斂到0),我們用自適應辛普森公式(目前精度最高的一種差值積分算法)計算J2000x0.9e-xdx,求得其近似實際值作為隨機模擬誤差分析的依0據,C++程序如下:#include<stdio.h>#include<math.h>#include<stdlib.h>#include<algorithm>#include<iostream>usingnamespacestd;doublex[2100000];doublef(doublex){returnexp(log(x)*0.9-x);}intmain(){intn=1000000;for(inti=1;i<=n;++i)x[i]=i*2000.0/n;doubleans=0;for(inti=1;i<=n/2;++i)ans+=2000.0/(3*n)*(f(x[2*i-2])+4*f(x[2*i-1])+f(x[2*i]));printf("%.8lf\n",ans);return0;}執行后得到積分近似值0.961766.下面采用蒙特卡洛法的思想進行隨機模擬計算定積分:(一)平均值法:原理:若%~U(a,b),則有E(g(%))=fbg(x)f(x)dx=一--fbg(x)dx,因此要a b-aa計算fbg(x)dx,只需求隨機變量y=g(x)的平均值,再乘以區間長度即可。a求解:Matlab程序如下:x=unifrnd(a,b,[1n]);fori=1:nm(i)=fun(x(i));endmean(m);p=mean(m)*(b-a).當a=100,b=200,n=106時p=0,故可認為在0到100上取x計算得到的積分值即為0到+8上的積分值;.當a=0,b=100,n=106時重復五次實驗得序號12345P0.96740.96670.96820.96970.9643平均值P11-0.96726,|0.96726一0.961766|百分誤差8 x100%“0.571241%.11 0.9617663.當a=0,b=100,n=107時重復五次實驗得序號12345P0.95820.96410.96380.96190.9621平均值P12-0.96202,|0.96202一0.961766|百分誤差8 x100%h0.026410%.12 0.961766分析:可以看出,所投點越多,所求值越接近實際值,誤差越小(二)隨機投點法原理:設r.v.(XY服從矩形他<%<b,c<y<d}上的均勻分布,則%~U(a,b),y~U(c,d),且X,Y相互獨立。記事件A={Y<f(x)},則P(A)=P(Y<f(x))=Jbff(x)dydx-Jb(f(%)-c)dx-Jbf(%)dx一c(b一a)-uac a a右側積分值u即為A出現的頻率。由伯努利大數定律,用重復試驗中A出現的頻率作為u的估計值。將(X,Y)看成矩形內的隨機投點,用隨機點落在區域Y<f(%)中的頻率作為定積分的近似值。求解:(1)為了確定y的取值范圍使得投點范圍更小,先求f(%)-%0.9e-%在0到100上的最大值:symsx;y=@(x)(-xA0.9*exp(-x))>>c=fminbnd(y,0,100)c=0.9000>>0.9A0.9*exp(-0.9)ans=0.3698得求0到100上的最大值為0.3698(2)在{100<%<OQ0 <03嵌} 上投107個點,計算被f(%)包含的點出現的頻率N=10A7;m=0;x=unifrnd(100,200,[1,N]);

y=unifrnd(0,0.3698,[1,N]);m=y<((x.A0.9).*exp(-x));n=sum(m);p=n/N*100*0.3698得p=0故可認為在0到100上取x計算得到的積分值即為0到上的積分值.(3)在{0<%<100,0<y<0.3698}上投

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論