蒙特卡罗方法与计算机模拟(第1次课).ppt

上传人:zhu****ei 文档编号:3581499 上传时间:2019-12-18 格式:PPT 页数:15 大小:614.50KB
返回 下载 相关 举报
蒙特卡罗方法与计算机模拟(第1次课).ppt_第1页
第1页 / 共15页
蒙特卡罗方法与计算机模拟(第1次课).ppt_第2页
第2页 / 共15页
蒙特卡罗方法与计算机模拟(第1次课).ppt_第3页
第3页 / 共15页
点击查看更多>>
资源描述
第六讲蒙特卡罗与计算机模拟,内容:计算机模拟(或称仿真)是一种广义数值计算方法,适合解决一些规模大、难以解析化以及受随机因素影响的不确定数学模型目的:了解蒙特卡罗方法的基本思想,掌握利用Matlab对离散/连续系统进行模拟的方法要求:掌握Matlab随机数函数,处理应用问题了解蒙特卡罗方法的起源和基本思想了解蒲丰投针实验设计思路和计算机模拟掌握随机数函数randunifrndnormrndexprnd掌握离散系统和连续系统计算机模拟实例,蒙特卡罗方法的起源和基本思想,蒙特卡罗方法(MonteCarlomethod),或称计算机随机模拟方法,是一种基于“随机数”的计算方法。源于美国在第二次世界大战研制原子弹的“曼哈顿计划”,该计划的主持人之一数学家冯诺伊曼用驰名世界的赌城摩纳哥的MonteCarlo来命名这种方法,为它蒙上了一层神秘色彩。蒙特卡罗方法的基本思想很早以前就被人们所发现和利用。早在17世纪,人们就知道用事件发生的“频率”来决定事件的“概率”。19世纪人们用蒲丰投针的方法来计算圆周率,上世纪40年代电子计算机的出现,特别是近年来高速电子计算机的出现,使得用数学方法在计算机上大量、快速地模拟这样的试验成为可能。,蒲丰投针实验近似计算圆周率,蒲丰投针实验:法国科学家蒲丰(Buffon)在1777年提出的蒲丰投针实验是早期几何概率一个非常著名的例子。蒲丰投针实验的重要性并非是为了求得比其它方法更精确的值,而是它开创了使用随机数处理确定性数学问题的先河,是用偶然性方法去解决确定性计算的前导,由此可以领略到从“概率土壤”上开出的一朵瑰丽的鲜花蒙特卡罗方法(MC)蒲丰投针实验可归结为下面的数学问题:平面上画有距离为a的一些平行线,向平面上任意投一根长为l(la)的针,假设针落在任意位置的可能性相同,试求针与平行线相交的概率P(从而求),蒲丰投针实验近似计算圆周率,蒲丰投针实验:如右图所示,以M表示针落下后的中点,以x表示M到最近一条平行线的距离,以表示针与此线的交角:针落地的所有可能结果满足:其样本空间视作矩形区域,面积是:针与平行线相交的条件:它是样本空间子集A,面积是:积分计算symslphi;int(l/2*sin(phi),phi,0,pi);%ans=l因此,针与平行线相交的概率为:从而有:特别当时p为统计频率,蒲丰投针实验近似计算圆周率,蒲丰投针实验的计算机模拟:formatlong;a=1;l=0.6;%显示精度,线宽和针长figure;axis(0,pi,0,a/2);%初始化绘图板set(gca,nextplot,add);%初始化绘图方式为叠加counter=0;n=2010;%初始化计数器和设定投针次数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;%描点并取帧title(CurrentPoint,num2str(i),Total,num2str(n);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);,常见分布的随机数产生语句,蒙特卡罗方法的关键步骤在于随机数的产生,计算机产生的随机数都不是真正的随机数(由算法确定的缘故),如果伪随机数能够通过一系列统计检验,我们也可以将其当作真正的随机数使用:,常见分布的随机数产生语句,MATLAB可以直接产生满足各种分布的随机数具体命令如下:产生mn阶0,1上均匀分布的随机数矩阵rand(m,n)产生一个0,1上均匀分布的随机数rand产生mn阶a,b上均匀分布的随机数矩阵unifrnd(a,b,m,n)产生一个a,b上均匀分布的随机数unifrnd(a,b)产生一个1:n的随机排列(元素均出现且不重复)p=randperm(n)注意:randperm(6)与unifrnd(1,6,1,6)的区别,常见分布的随机数产生语句,产生mn阶均值为mu方差为sigma的正态分布的随机数矩阵normrnd(mu,sigma,m,n)产生一个均值为mu方差为sigma的正态分布的随机数normrnd(mu,sigma)产生mn阶期望值为mu(mu=1/)的指数分布的随机数矩阵exprnd(mu,m,n)产生一个期望值为mu的指数分布的随机数exprnd(mu)注意:产生一个参数为的指数分布的随机数应输入exprnd(1/),常见分布的随机数产生语句,产生mn阶参数为A1,A2,A3的指定分布name的随机数矩阵random(name,A1,A2,A3,m,n)产生一个参数为为A1,A2,A3的指定分布name的随机数random(name,A1,A2,A3)举例:产生24阶的均值为0方差为1的正态分布的随机数矩阵random(Normal,0,1,2,4)name的取值可以是(详情参见helprandom):normorNormal/uniforUniformpoissorPoisson/betaorBetaexporExponential/gamorGammageoorGeometric/unidorDiscreteUniform,MATLAB随机数的“重置”问题,Matlab的随机数是伪随机数,但在一定的信度之下可以看作真正的随机数。问题是rand函数产生的随机数从一个随机数序列中取出来,而每次启动Matlab时,rand的状态都会被重置(相当于把序列的指针移到了随机数序列的开始),换言之第一次启动Matlab调用的第n次rand函数与下一次启动调用的第n个rand函数产生相同的数值。如果想打乱这种状态,可以为rand指定一个与当前时间相关的初始状态,而不用默认状态:rand(state,sum(100*clock);或者rand(state,sum(100*clock)*rand);,非常见分布的随机数的产生,对于常见分布随机数,可由相应Matlab函数直接产生,对于非常见分布随机数可如下处理:1连续型随机变量(以p116指数分布为例):,概率密度函数:反映随机变量出现在某个t*位置的可能性f(t*)(概率),直观上体现为稠密程度(概率密度);累积分布函数:对概率密度函数积分得到累积分布函数,反映出现小于等于某个随机变量x*的所有可能性之和F(x*).常用累积分布反函数生成服从该分布的随机变量.,非常见分布的随机数的产生,symstxlambda;Fx=int(lambda*exp(-lambda*t),t,0,x)%累积分布函数symsr;Fxinv=finverse(Fx,x);%求累积分布函数反函数Fxinv=subs(Fxinv,x,r)%替换反函数变量x为rFxinv=inline(Fxinv)x=Fxinv(3,rand)%产生参数lambda=3指数分布的随机数%指数分布随机数产生函数已经提供exprnd(1/3,1,1),非常见分布的随机数的产生,2离散型随机变量(以p117离散分布为例):,x=2,4,6,8;px=0.1,0.4,0.3,0.2;%以下为程序片段Fx=0;forn=1:length(px),Fx=Fx,sum(px(1:n);endr=rand;index=find(rFx);x(index(1)-1)%已编写通用离散分布随机数产生程序scatrnd(x,px,n),
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!