下载此文档

蒙特卡罗与计算机模拟有代码.ppt


文档分类:IT计算机 | 页数:约25页 举报非法文档有奖
1/25
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/25 下载此文档
文档列表 文档介绍
该【蒙特卡罗与计算机模拟有代码 】是由【相惜】上传分享,文档一共【25】页,该文档可以免费在线阅读,需要了解更多关于【蒙特卡罗与计算机模拟有代码 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。第六讲蒙特卡罗与计算机模拟内容:计算机模拟(或称仿真)是一种广义数值计算方法,适合解决一些规模大、难以解析化以及受随机因素影响的不确定数学模型目的:了解蒙特卡罗方法的根本思想,掌握利用Matlab对离散/连续系统进行模拟的方法要求:掌握Matlab随机数函数,处理应用问题了解蒙特卡罗方法的起源和根本思想掌握离散系统和连续系统计算机模拟实例掌握随机函数randunifrndnormrndexprnd了解Matlab仿真模块Simulink蒙特卡罗方法的起源和根本思想蒙特卡罗方法(MonteCarlomethod),或称计算机随机模拟方法,是一种基于“随机数〞的计算方法。源于美国在第二次世界大战研制***的“曼哈顿方案〞,该方案的主持人之一数学家冯·诺伊曼用著名世界的赌城—摩纳哥的MonteCarlo—来命名这种方法,为它蒙上了一层神秘色彩。蒙特卡罗方法的根本思想很早以前就被人们所发现和利用。早在17世纪,人们就知道用事件发生的“频率〞来决定事件的“概率〞。19世纪人们用蒲丰投针的方法来计算圆周率π,上世纪40年代电子计算机的出现,特别是近年来高速电子计算机的出现,使得用数学方法在计算机上大量、快速地模拟这样的试验成为可能。蒲丰投针实验近似计算圆周率π蒲丰投针实验:法国科学家蒲丰(Buffon)在1777年提出的蒲丰投针实验是早期几何概率一个非常著名的例子。蒲丰投针实验的重要性并非是为了求得比其它方法更精确的π值,而是它开创了使用随机数处理确定性数学问题的先河,是用偶然性方法去解决确定性计算的前导,由此可以领略到从“概率土壤〞上开出的一朵瑰丽的鲜花——蒙特卡罗方法(MC)蒲丰投针实验可归结为下面的数学问题:平面上画有距离为a的一些平行线,向平面上任意投一根长为l(l<a)的针,假设针落在任意位置的可能性相同,试求针与平行线相交的概率P(从而求π)蒲丰投针实验近似计算圆周率π蒲丰投针实验:如右图所示,以M表示针落下后的中点,以x表示M到最近一条平行线的距离,以φ表示针与此线的交角:针落地的所有可能结果满足:其样本空间视作矩形区域Ω,面积是:针与平行线相交的条件:它是样本空间Ω子集A,面积是:symslphi;int('l/2*sin(phi)',phi,0,pi);%ans=l因此,针与平行线相交的概率为:从而有:特别当时蒲丰投针实验近似计算圆周率π蒲丰投针实验的计算机模拟:formatlong;%设置15位显示精度a=1;l=;%两平行线间的宽度和针长figure;axis([0,pi,0,a/2]);%初始化绘图板set(gca,'nextplot','add');%初始化绘图方式为叠加counter=0;n=2021;%初始化计数器和设定投针次数x=unifrnd(0,a/2,1,n);phi=unifrnd(0,pi,1,n);%样本空间Ωfori=1:nifx(i)<l*sin(phi(i))/2%满足此条件表示针与线的相交plot(phi(i),x(i),'r.');frame(i)=getframe;%描点并取帧counter=counter+1;%统计针与线相交的次数endendfren=counter/n;pihat=2*l/(a*fren)%用频率近似计算π%movie(frame,1)%播放帧动画1次蒲丰投针实验近似计算圆周率π蒲丰投针实验的计算机模拟:意大利数学家拉泽里尼得到了准确到6位小数的π值,不过他的实验因为太准确而受到了质疑蒲丰投针实验计算圆周率π蒙特卡罗投点法是蒲丰投针实验的推广:在一个边长为a的正方形内随机投点,该点落在此正方形的内切圆中的概率应为该内切圆与正方形的面积比值,即n=10000;a=2;m=0;fori=1:nx=rand(1)*a;y=rand(1)*a;if((x-a/2)^2+(y-a/2)^2<=(a/2)^2)m=m+1;endenddisp(['投点法近似计算的π为:',num2str(4*m/n)]);xyo(a/2,a/2)常见分布的随机数产生语句蒙特卡罗方法的关键步骤在于随机数的产生,计算机产生的随机数都不是真正的随机数(由算法确定的缘故),如果伪随机数能够通过一系列统计检验,我们也可以将其当作真正的随机数使用:常见分布的随机数产生语句MATLAB可以直接产生满足各种分布的随机数具体命令如下:①产生m×n阶[0,1]上均匀分布的随机数矩阵rand(m,n)产生一个[0,1]上均匀分布的随机数rand②产生m×n阶[a,b]上均匀分布的随机数矩阵unifrnd(a,b,m,n)产生一个[a,b]上均匀分布的随机数unifrnd(a,b)③产生一个1:n的随机排列(元素均出现且不重复)p=randperm(n)注意:randperm(6)与unifrnd(1,6,1,6)的区别常见分布的随机数产生语句④产生m×n阶均值为mu方差为sigma的正态分布的随机数矩阵normrnd(mu,sigma,m,n)产生一个均值为mu方差为sigma的正态分布的随机数normrnd(mu,sigma)⑤产生m×n阶期望值为mu(mu=1/λ)的指数分布的随机数矩阵exprnd(mu,m,n)产生一个期望值为mu的指数分布的随机数exprnd(mu)注意:产生一个参数为λ的指数分布的随机数应输入exprnd(1/λ)

蒙特卡罗与计算机模拟有代码 来自淘豆网www.taodocs.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数25
  • 收藏数0 收藏
  • 顶次数0
  • 上传人相惜
  • 文件大小1.82 MB
  • 时间2024-03-27