定积分的MonteCarlo计算方法的实现课件_第1页
定积分的MonteCarlo计算方法的实现课件_第2页
定积分的MonteCarlo计算方法的实现课件_第3页
定积分的MonteCarlo计算方法的实现课件_第4页
定积分的MonteCarlo计算方法的实现课件_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、定积分的MonteCarlo计算方法的实现 计算机高级语言认知实习报告 n 课题名称:定积分的定积分的Monte CarloMonte Carlo计算方法的实现计算方法的实现n 指导老师: 王玉兰n 小组成员:2曾颖超n 2李海全 2向 慧 实习时间:2010.12.272010.01.08摘要:本次实习设计并实现定积分的Monte Carlo计算方法,采用VC+6.0开发完成。 定积分的MonteCarlo计算方法的实现 n一、设计任务与要求一、设计任务与要求n1、设计内容n2、设计要求n二、Monte Carlo算法引导n1、Monte Carlo算法的概念n2、Monte Carlo算法

2、的例子n三、Monte Carlo思想计算定积分的实现n1、定积分的定义n2、Monte Carlo算法的积分原理n四、详细设计及实现n五、总结n六、参考资料n附录:源程序定积分的MonteCarlo计算方法的实现一、设计任务与要求一、设计任务与要求n1、设计内容n针对某具体函数f(x)形式,利用Monte Carlo算法实现积分。 定积分的MonteCarlo计算方法的实现n2、设计要求n1)1)学习学习Monte CarloMonte Carlo计算数值的积分方法;计算数值的积分方法;n2)2)就某个具体的被积函数就某个具体的被积函数f(x)f(x)的定积分,设计的定积分,设计算法步骤算法

3、步骤; ;n3) 3) 编写程序实现算法;编写程序实现算法;n4 4)对程序进行调试和测试,使用有解析解的定)对程序进行调试和测试,使用有解析解的定积分以便计算对比;积分以便计算对比;定积分的MonteCarlo计算方法的实现二、二、Monte Carlo算法引导 n1、Monte Carlo算法的概念算法的概念 n非形式化地说,非形式化地说,Monte Carlo算法泛指一算法泛指一类算法。在这些算法中,要求解的问题类算法。在这些算法中,要求解的问题是某随机事件的概率或某随机变量的期是某随机事件的概率或某随机变量的期望。这时,通过望。这时,通过“实验实验”方法,用频率代方法,用频率代替概率或

4、得到随机变量的某些数字特征,替概率或得到随机变量的某些数字特征,以此作为问题的解。以此作为问题的解。定积分的MonteCarlo计算方法的实现n2、Monte CarloMonte Carlo算法的例子算法的例子n如图如图(1)(1)所示,所示,n 在一个在一个1 1平方米的正方形木板上,随意画一个圈,求返个圈的面积。平方米的正方形木板上,随意画一个圈,求返个圈的面积。n图(1)n假设我手里有一支飞镖,我将飞镖掷向木板。木板,我们假定每一次假设我手里有一支飞镖,我将飞镖掷向木板。木板,我们假定每一次都能掷在木板上,不会偏出木板,但每一次掷在木板的什么地方,是都能掷在木板上,不会偏出木板,但每一

5、次掷在木板的什么地方,是完全随机的。即,每一次掷飞镖,飞镖扎进木板的任何一点的概率的完全随机的。即,每一次掷飞镖,飞镖扎进木板的任何一点的概率的相等的。返样,我们投掷多次,例如相等的。返样,我们投掷多次,例如100100次,然后我们统计返次,然后我们统计返100100次中,次中,扎入不规则图形内部的次数,假设为扎入不规则图形内部的次数,假设为k k,那么,我们就可以用,那么,我们就可以用 k/100 k/100 * * 1 1 近似估计不规则图形的面积,例如近似估计不规则图形的面积,例如100100次有次有3232次掷入图形内,我们就次掷入图形内,我们就可以估计图形的面积为可以估计图形的面积为

6、0.320.32平方米平方米n从上述可以看出,从上述可以看出,Monte-CarloMonte-Carlo算法区别不确定性算法,它的解不一定算法区别不确定性算法,它的解不一定是准确或正确的,其准确或正确性依赖于概率和统计,但在某些问题是准确或正确的,其准确或正确性依赖于概率和统计,但在某些问题上,当重复实验次数越够大时,可从很大概率上(返个概率是可以在上,当重复实验次数越够大时,可从很大概率上(返个概率是可以在数学上证明的,但依赖于具体问题)确保解的准确或正确性,所以,数学上证明的,但依赖于具体问题)确保解的准确或正确性,所以,我们可以根据具体的概率分析,设定实验的次数,从而将误差或错误我们可

7、以根据具体的概率分析,设定实验的次数,从而将误差或错误率降到一个可容忍的程度。率降到一个可容忍的程度。定积分的MonteCarlo计算方法的实现三、Monte-Carlo思想计算定积分的实现1、定积分的定义定积分的定义2、Monte CarloMonte Carlo积分法的原理积分法的原理 定积分的MonteCarlo计算方法的实现1.定积分的定义n如图如图2,定积分就是求函数在区间,定积分就是求函数在区间a,b中中图线下包围的面积,即图线下包围的面积,即y=0,x=a,x=b,y=f(x)所包围的面积。一般地,设函数在区间上所包围的面积。一般地,设函数在区间上连续,用分点连续,用分点n将区间

8、等分成个小区间,每个小区间长度将区间等分成个小区间,每个小区间长度为(),在每个小区间上取一点,作和式:为(),在每个小区间上取一点,作和式:0121iinaxxxxxxb0121iinaxxxxxxb0121iinaxxxxxxb0121iina xx xxxxb 定积分的MonteCarlo计算方法的实现n如果无限接近于(亦即)时,上述和式如果无限接近于(亦即)时,上述和式无限趋近于常数,那么称该常数为函数无限趋近于常数,那么称该常数为函数在区间上的定积分。记为:在区间上的定积分。记为: n其中成为被积函数,叫做积分变量,为其中成为被积函数,叫做积分变量,为积分区间,积分上限,积分下限。积

9、分区间,积分上限,积分下限。定积分的MonteCarlo计算方法的实现2、Monte Carlo积分法的原理求定积分的直观意义就是求面积,求定积分的直观意义就是求面积,所以,用所以,用Monte CarloMonte Carlo求积分的原理就是求积分的原理就是通过模拟统计方法求解面积。即通过向通过模拟统计方法求解面积。即通过向特定区域随机产生大量点,然后统计点特定区域随机产生大量点,然后统计点落在函数区域内的频率,以此频率估计落在函数区域内的频率,以此频率估计面积,从而得到积分值。面积,从而得到积分值。定积分的MonteCarlo计算方法的实现四、详细设计及实现四、详细设计及实现n根据蒙特卡洛

10、算法的概念,将落在数学函数f(x)里面的随机点收集起来并计算出数量,这样可以计算出蒙特卡洛因子。然后就可计算出函数f(x)的积分。n我们把积分区间较长的函数进行分段求解,然后再求和。希望以此来提高精确性和缩短时间。定积分的MonteCarlo计算方法的实现五五 测试测试n被积函数:f(x)=sin(x), x0,20 n积分精确解为:0.591917n把区间分为N段,随机点个数为n个n以下是测试数据定积分的MonteCarlo计算方法的实现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计算方法的实现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计算方法的实现六六 总结总结n 用蒙特卡洛方法计算定积分具有普遍意义。根据以上试验我们了解到,对于求解一些

13、非常规的问题我们有了新思路,即一个不具随机性的事件可以通过一定的方法用随机事件来模拟或逼近。定积分的MonteCarlo计算方法的实现n参考文献nWilliam H.Press 等著,傅祖芸 等译,C数值算法(第二版)电子工业出版社,2004.01n同济大学数学系编,高等数学(第六版)高等教育出版社,2007.06n孙淑霞 李思明 刘焕君 编著,C/C+程序设计(第三版)电子工业出版社,2009.09定积分的MonteCarlo计算方法的实现附录:源程序附录:源程序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计算方法的实现n#define EPS 1.2e-7n#define RNMX (1.0-EPS) /*以上是为ran2函数做准备的*/ n#include n#include n#includen#include 定积分的M

15、onteCarlo计算方法的实现ndouble ran2(long *idum) /*产生随机数*/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计算方法的实现 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计算方法的实现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计算方法的实现double fun1(double x) /*被积函数*/ 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计算方法的实现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计算方法的实现printf(nEnter b=:);scanf(%lf,&b);printf(nEnter N=:);scanf(%lf,&N); /*N表示区间的个数*/ printf(nEnter n=:);s

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论