定積分的MonteCarlo計算方法的實現(xiàn)課件_第1頁
定積分的MonteCarlo計算方法的實現(xiàn)課件_第2頁
定積分的MonteCarlo計算方法的實現(xiàn)課件_第3頁
定積分的MonteCarlo計算方法的實現(xiàn)課件_第4頁
定積分的MonteCarlo計算方法的實現(xiàn)課件_第5頁
已閱讀5頁,還剩21頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、定積分的MonteCarlo計算方法的實現(xiàn) 計算機高級語言認(rèn)知實習(xí)報告 n 課題名稱:定積分的定積分的Monte CarloMonte Carlo計算方法的實現(xiàn)計算方法的實現(xiàn)n 指導(dǎo)老師: 王玉蘭n 小組成員:2曾穎超n 2李海全 2向 慧 實習(xí)時間:2010.12.272010.01.08摘要:本次實習(xí)設(shè)計并實現(xiàn)定積分的Monte Carlo計算方法,采用VC+6.0開發(fā)完成。 定積分的MonteCarlo計算方法的實現(xiàn) n一、設(shè)計任務(wù)與要求一、設(shè)計任務(wù)與要求n1、設(shè)計內(nèi)容n2、設(shè)計要求n二、Monte Carlo算法引導(dǎo)n1、Monte Carlo算法的概念n2、Monte Carlo算法

2、的例子n三、Monte Carlo思想計算定積分的實現(xiàn)n1、定積分的定義n2、Monte Carlo算法的積分原理n四、詳細(xì)設(shè)計及實現(xiàn)n五、總結(jié)n六、參考資料n附錄:源程序定積分的MonteCarlo計算方法的實現(xiàn)一、設(shè)計任務(wù)與要求一、設(shè)計任務(wù)與要求n1、設(shè)計內(nèi)容n針對某具體函數(shù)f(x)形式,利用Monte Carlo算法實現(xiàn)積分。 定積分的MonteCarlo計算方法的實現(xiàn)n2、設(shè)計要求n1)1)學(xué)習(xí)學(xué)習(xí)Monte CarloMonte Carlo計算數(shù)值的積分方法;計算數(shù)值的積分方法;n2)2)就某個具體的被積函數(shù)就某個具體的被積函數(shù)f(x)f(x)的定積分,設(shè)計的定積分,設(shè)計算法步驟算法

3、步驟; ;n3) 3) 編寫程序?qū)崿F(xiàn)算法;編寫程序?qū)崿F(xiàn)算法;n4 4)對程序進(jìn)行調(diào)試和測試,使用有解析解的定)對程序進(jìn)行調(diào)試和測試,使用有解析解的定積分以便計算對比;積分以便計算對比;定積分的MonteCarlo計算方法的實現(xiàn)二、二、Monte Carlo算法引導(dǎo) n1、Monte Carlo算法的概念算法的概念 n非形式化地說,非形式化地說,Monte Carlo算法泛指一算法泛指一類算法。在這些算法中,要求解的問題類算法。在這些算法中,要求解的問題是某隨機事件的概率或某隨機變量的期是某隨機事件的概率或某隨機變量的期望。這時,通過望。這時,通過“實驗實驗”方法,用頻率代方法,用頻率代替概率或

4、得到隨機變量的某些數(shù)字特征,替概率或得到隨機變量的某些數(shù)字特征,以此作為問題的解。以此作為問題的解。定積分的MonteCarlo計算方法的實現(xiàn)n2、Monte CarloMonte Carlo算法的例子算法的例子n如圖如圖(1)(1)所示,所示,n 在一個在一個1 1平方米的正方形木板上,隨意畫一個圈,求返個圈的面積。平方米的正方形木板上,隨意畫一個圈,求返個圈的面積。n圖(1)n假設(shè)我手里有一支飛鏢,我將飛鏢擲向木板。木板,我們假定每一次假設(shè)我手里有一支飛鏢,我將飛鏢擲向木板。木板,我們假定每一次都能擲在木板上,不會偏出木板,但每一次擲在木板的什么地方,是都能擲在木板上,不會偏出木板,但每一

5、次擲在木板的什么地方,是完全隨機的。即,每一次擲飛鏢,飛鏢扎進(jìn)木板的任何一點的概率的完全隨機的。即,每一次擲飛鏢,飛鏢扎進(jìn)木板的任何一點的概率的相等的。返樣,我們投擲多次,例如相等的。返樣,我們投擲多次,例如100100次,然后我們統(tǒng)計返次,然后我們統(tǒng)計返100100次中,次中,扎入不規(guī)則圖形內(nèi)部的次數(shù),假設(shè)為扎入不規(guī)則圖形內(nèi)部的次數(shù),假設(shè)為k k,那么,我們就可以用,那么,我們就可以用 k/100 k/100 * * 1 1 近似估計不規(guī)則圖形的面積,例如近似估計不規(guī)則圖形的面積,例如100100次有次有3232次擲入圖形內(nèi),我們就次擲入圖形內(nèi),我們就可以估計圖形的面積為可以估計圖形的面積為

6、0.320.32平方米平方米n從上述可以看出,從上述可以看出,Monte-CarloMonte-Carlo算法區(qū)別不確定性算法,它的解不一定算法區(qū)別不確定性算法,它的解不一定是準(zhǔn)確或正確的,其準(zhǔn)確或正確性依賴于概率和統(tǒng)計,但在某些問題是準(zhǔn)確或正確的,其準(zhǔn)確或正確性依賴于概率和統(tǒng)計,但在某些問題上,當(dāng)重復(fù)實驗次數(shù)越夠大時,可從很大概率上(返個概率是可以在上,當(dāng)重復(fù)實驗次數(shù)越夠大時,可從很大概率上(返個概率是可以在數(shù)學(xué)上證明的,但依賴于具體問題)確保解的準(zhǔn)確或正確性,所以,數(shù)學(xué)上證明的,但依賴于具體問題)確保解的準(zhǔn)確或正確性,所以,我們可以根據(jù)具體的概率分析,設(shè)定實驗的次數(shù),從而將誤差或錯誤我們可

7、以根據(jù)具體的概率分析,設(shè)定實驗的次數(shù),從而將誤差或錯誤率降到一個可容忍的程度。率降到一個可容忍的程度。定積分的MonteCarlo計算方法的實現(xiàn)三、Monte-Carlo思想計算定積分的實現(xiàn)1、定積分的定義定積分的定義2、Monte CarloMonte Carlo積分法的原理積分法的原理 定積分的MonteCarlo計算方法的實現(xiàn)1.定積分的定義n如圖如圖2,定積分就是求函數(shù)在區(qū)間,定積分就是求函數(shù)在區(qū)間a,b中中圖線下包圍的面積,即圖線下包圍的面積,即y=0,x=a,x=b,y=f(x)所包圍的面積。一般地,設(shè)函數(shù)在區(qū)間上所包圍的面積。一般地,設(shè)函數(shù)在區(qū)間上連續(xù),用分點連續(xù),用分點n將區(qū)間

8、等分成個小區(qū)間,每個小區(qū)間長度將區(qū)間等分成個小區(qū)間,每個小區(qū)間長度為(),在每個小區(qū)間上取一點,作和式:為(),在每個小區(qū)間上取一點,作和式:0121iinaxxxxxxb0121iinaxxxxxxb0121iinaxxxxxxb0121iina xx xxxxb 定積分的MonteCarlo計算方法的實現(xiàn)n如果無限接近于(亦即)時,上述和式如果無限接近于(亦即)時,上述和式無限趨近于常數(shù),那么稱該常數(shù)為函數(shù)無限趨近于常數(shù),那么稱該常數(shù)為函數(shù)在區(qū)間上的定積分。記為:在區(qū)間上的定積分。記為: n其中成為被積函數(shù),叫做積分變量,為其中成為被積函數(shù),叫做積分變量,為積分區(qū)間,積分上限,積分下限。積

9、分區(qū)間,積分上限,積分下限。定積分的MonteCarlo計算方法的實現(xiàn)2、Monte Carlo積分法的原理求定積分的直觀意義就是求面積,求定積分的直觀意義就是求面積,所以,用所以,用Monte CarloMonte Carlo求積分的原理就是求積分的原理就是通過模擬統(tǒng)計方法求解面積。即通過向通過模擬統(tǒng)計方法求解面積。即通過向特定區(qū)域隨機產(chǎn)生大量點,然后統(tǒng)計點特定區(qū)域隨機產(chǎn)生大量點,然后統(tǒng)計點落在函數(shù)區(qū)域內(nèi)的頻率,以此頻率估計落在函數(shù)區(qū)域內(nèi)的頻率,以此頻率估計面積,從而得到積分值。面積,從而得到積分值。定積分的MonteCarlo計算方法的實現(xiàn)四、詳細(xì)設(shè)計及實現(xiàn)四、詳細(xì)設(shè)計及實現(xiàn)n根據(jù)蒙特卡洛

10、算法的概念,將落在數(shù)學(xué)函數(shù)f(x)里面的隨機點收集起來并計算出數(shù)量,這樣可以計算出蒙特卡洛因子。然后就可計算出函數(shù)f(x)的積分。n我們把積分區(qū)間較長的函數(shù)進(jìn)行分段求解,然后再求和。希望以此來提高精確性和縮短時間。定積分的MonteCarlo計算方法的實現(xiàn)五五 測試測試n被積函數(shù):f(x)=sin(x), x0,20 n積分精確解為:0.591917n把區(qū)間分為N段,隨機點個數(shù)為n個n以下是測試數(shù)據(jù)定積分的MonteCarlo計算方法的實現(xiàn)n nN N積分積分誤差(取正)誤差(取正)時間時間/ /毫毫秒秒10106 61 10.566960.566960.0249570.02495723823

11、810106 62 20.58220.58220.0097170.00971746546510106 64 40.592270.592270.0003530.00035393193110106 68 80.5909450.5909450.0009720.0009721,8131,81310106 616160.595310.595310.0033930.0033933,5663,56610106 632320.5951810.5951810.0032640.0032647,1797,179定積分的MonteCarlo計算方法的實現(xiàn)10107 71 10.598640.598644 40.006

12、7270.0067272,3082,30810107 72 20.596050.596052 20.0041350.0041354,6074,60710107 74 40.597710.597718 80.0058010.0058019,0119,01110107 78 80.59310.59310.0011830.00118317,84717,84710107 716160.590350.590359 90.0015580.00155835,35235,352定積分的MonteCarlo計算方法的實現(xiàn)六六 總結(jié)總結(jié)n 用蒙特卡洛方法計算定積分具有普遍意義。根據(jù)以上試驗我們了解到,對于求解一些

13、非常規(guī)的問題我們有了新思路,即一個不具隨機性的事件可以通過一定的方法用隨機事件來模擬或逼近。定積分的MonteCarlo計算方法的實現(xiàn)n參考文獻(xiàn)nWilliam H.Press 等著,傅祖蕓 等譯,C數(shù)值算法(第二版)電子工業(yè)出版社,2004.01n同濟(jì)大學(xué)數(shù)學(xué)系編,高等數(shù)學(xué)(第六版)高等教育出版社,2007.06n孫淑霞 李思明 劉煥君 編著,C/C+程序設(shè)計(第三版)電子工業(yè)出版社,2009.09定積分的MonteCarlo計算方法的實現(xiàn)附錄:源程序附錄:源程序n#define IM1 2147483563n#define IM2 2147483399n#define AM (1.0/IM

14、1)n#define IMM1 (IM1-1)n#define IA1 40014n#define IA2 40692n#define IQ1 53668n#define IQ2 52774n#define IR1 12211n#define IR2 3791n#define NTAB 32n#define NDIV (1+IMM1/NTAB)定積分的MonteCarlo計算方法的實現(xiàn)n#define EPS 1.2e-7n#define RNMX (1.0-EPS) /*以上是為ran2函數(shù)做準(zhǔn)備的*/ n#include n#include n#includen#include 定積分的M

15、onteCarlo計算方法的實現(xiàn)ndouble ran2(long *idum) /*產(chǎn)生隨機數(shù)*/nn int j;n long k;n static long idum2=123456789;n static long iy=0;n static long ivNTAB;n double temp;n n if(*idum=0)定積分的MonteCarlo計算方法的實現(xiàn) if(-(*idum)=0;j-) k=(*idum)/IQ1; *idum=IA1*(*idum-k*IQ1)-k*IR1; if(*idum0)*idum+=IM1; if(jNTAB) ivj=*idum; iy=i

16、v0; 定積分的MonteCarlo計算方法的實現(xiàn)k=(*idum)/IQ1; *idum=IA1*(*idum-k*IQ1)-k*IR1; if(*idum0) *idum+=IM1; k=idum2/IQ2; idum2=IA2*(idum2-k*IQ2)-k*IR2; if(idum20) idum2+=IM2; j=iy/NDIV; iy=ivj-idum2; ivj=*idum;if(iyRNMX) return RNMX; else return temp;定積分的MonteCarlo計算方法的實現(xiàn)double fun1(double x) /*被積函數(shù)*/ return(sin(

17、x); double Monte(double n,double a,double b,double (*p)(),double fMAX) /*計算蒙特卡洛因子*/ double x,y; double sx=0,sy=0,vx=0,vy=0; double s,t; double i; long ko1,ko2;定積分的MonteCarlo計算方法的實現(xiàn)ko1=ko2=1; for(i=0;i=0) if(y=0) sy+; if(y=(*p)(x) vx+; return (sx-vx)/n);main() double n,fMAX,a,b,Mont,A,B,h,i=0,N; long time0,time1; printf(Enter a=:);scanf(%lf,&a);定積分的MonteCarlo計算方法的實現(xiàn)printf(nEnter b=:);scanf(%lf,&b);printf(nEnter N=:);scanf(%lf,&N); /*N表示區(qū)間的個數(shù)*/ printf(nEnter n=:);s

溫馨提示

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

評論

0/150

提交評論