数学建模之计算机仿真-课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《数学建模之计算机仿真-课件.ppt》由用户(ziliao2023)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数学 建模 计算机仿真 课件
- 资源描述:
-
1、数学建模之计算机仿真2概述l计算机科学技术的迅猛发展,给许多学科带来了巨大计算机科学技术的迅猛发展,给许多学科带来了巨大的影响计算机不但使问题的求解变得更加方便、快的影响计算机不但使问题的求解变得更加方便、快捷和精确,而且使得解决实际问题的领域更加广捷和精确,而且使得解决实际问题的领域更加广泛计算机适合于解决那些规模大、难以解析化以及泛计算机适合于解决那些规模大、难以解析化以及不确定的数学模型例如对于一些带随机因素的复杂不确定的数学模型例如对于一些带随机因素的复杂系统,用分析方法建模常常需要作许多简化假设,与系统,用分析方法建模常常需要作许多简化假设,与面临的实际问题可能相差甚远,以致解答根本
2、无法应面临的实际问题可能相差甚远,以致解答根本无法应用,这时仿真几乎成为人们的唯一选择在历届的美用,这时仿真几乎成为人们的唯一选择在历届的美国和中国大学生的数学建模竞赛(国和中国大学生的数学建模竞赛(MCM)中,学生)中,学生们经常用到计算机仿真方法去求解、检验等计算机们经常用到计算机仿真方法去求解、检验等计算机仿真仿真(computer simulation)是建模过程中较为重要的是建模过程中较为重要的一类方法一类方法 3计算机仿真的基本概念计算机仿真的基本概念 计算机仿真,是根据已知的信息和计算机仿真,是根据已知的信息和知识(如数学、物理规律),利用计算知识(如数学、物理规律),利用计算机
3、模拟现实情况和系统的演变过程,发机模拟现实情况和系统的演变过程,发现新的知识或规律,从而解决问题的一现新的知识或规律,从而解决问题的一种方法种方法4计算机仿真的基本概念计算机仿真的基本概念 独立于理论研究与实验研究的认识独立于理论研究与实验研究的认识世界的第三中方法世界的第三中方法5计算机仿真的基本概念计算机仿真的基本概念计算机仿真的特点计算机仿真的特点 代价小、时间短、可重复、参数代价小、时间短、可重复、参数设置灵活设置灵活6计算机仿真可以解决以下计算机仿真可以解决以下5类问题类问题:l(1)(1)难以用数学公式表示的系统难以用数学公式表示的系统,或者没有建立和求解的或者没有建立和求解的有效
4、方法有效方法.l(2)(2)虽然可以用解析的方法解决问题虽然可以用解析的方法解决问题,但数学的分析与计算但数学的分析与计算过于复杂过于复杂,这时计算机仿真可能提供简单可行的求解方法这时计算机仿真可能提供简单可行的求解方法.l(3)(3)希望能在较短的时间内观察到系统发展的全过程希望能在较短的时间内观察到系统发展的全过程,以估以估计某些参数对系统行为的影响计某些参数对系统行为的影响.l(4)(4)难以在实际环境中进行试验和观察时难以在实际环境中进行试验和观察时,计算机仿真是唯计算机仿真是唯一可行的方法一可行的方法,如太空飞行的研究如太空飞行的研究.l(5)(5)需要对系统或过程进行长期运行比较需
5、要对系统或过程进行长期运行比较,从大量方案中寻从大量方案中寻找最优方案找最优方案.7 计算机仿真的分类计算机仿真的分类l计算机仿真在计算机中运行实现计算机仿真在计算机中运行实现,不怕破坏不怕破坏,易修改易修改,可重用可重用,安全经济安全经济,不受外界条件和场地空间的限制不受外界条件和场地空间的限制.l仿真仿真分为静态分为静态仿真仿真(static simulation)和动态和动态仿真仿真(dynamic simulation).数值积分中的蒙特卡洛方法数值积分中的蒙特卡洛方法(统计模拟方法)是典型的静态(统计模拟方法)是典型的静态仿真仿真动态动态仿真仿真又分又分为连续系统为连续系统仿真仿真和
6、离散系统和离散系统仿真仿真连续系统是指状态连续系统是指状态变量随着时间连续变化的系统,例如传染病的检测与变量随着时间连续变化的系统,例如传染病的检测与预报系统预报系统.离散系统是指系统状态变量只在有限的时离散系统是指系统状态变量只在有限的时间点或可数的时间点上发生变化的系统间点或可数的时间点上发生变化的系统,例如排队系例如排队系统统.8l 仿真系统,必须设置一个仿真时钟仿真系统,必须设置一个仿真时钟(simulate clock),它能将时间从一个时刻,它能将时间从一个时刻向另一个时刻进行推进,并且能随时反映向另一个时刻进行推进,并且能随时反映系统时间的当前值其中,模拟时间推进系统时间的当前值
7、其中,模拟时间推进方式有两种方式有两种:时间步长法时间步长法(均匀间隔时间推均匀间隔时间推进法进法,连续系统常用连续系统常用)和事件步长法和事件步长法(下次事下次事件推进法件推进法,离散系统常用离散系统常用)910主要内容主要内容l一一:准备知识准备知识:随机数的产生随机数的产生l二二:随机变量的模拟随机变量的模拟l三三:连续系统的模拟连续系统的模拟-时间步长法时间步长法l四四:离散系统的模拟离散系统的模拟-事件步长法事件步长法五:蒙特卡洛方法五:蒙特卡洛方法11一一:准备知识准备知识:随机数的产生随机数的产生l由于仿真研究的实际系统要受到多种随机因素的由于仿真研究的实际系统要受到多种随机因素
8、的作用和影响作用和影响,在仿真过程中必须处理大量的随机因在仿真过程中必须处理大量的随机因素素.要解决此问题的前提是确定随机变量的类型和要解决此问题的前提是确定随机变量的类型和选择合适的随机数产生的方法选择合适的随机数产生的方法.l对随机现象进行模拟对随机现象进行模拟,实质是要给出随机变量的模实质是要给出随机变量的模拟拟,也就是说要利用计算机随机产生一系列数值也就是说要利用计算机随机产生一系列数值,使它们服从一定的概率分布使它们服从一定的概率分布,称这些数值为随机数称这些数值为随机数.l最基本最基本,最常用的是最常用的是(0,1)(0,1)区间内均匀分布的随机区间内均匀分布的随机数数.其他分布的
9、随机数均可利用它来产生其他分布的随机数均可利用它来产生.121:1:产生模拟随机数的计算机命令产生模拟随机数的计算机命令l在在MATLAB中中,可以直接产生满足各种分布的随机可以直接产生满足各种分布的随机数数,命令如下命令如下:l常见的分布函数常见的分布函数 MATLAB语句语句 l均匀分布均匀分布U0,1 R=rand(m,n)l均匀分布均匀分布Ua,b R=unifrnd(a,b,m,n)l指数分布指数分布E()R=exprnd(,m,n)l正态分布正态分布N(mu,sigma)R=normrnd(mu,sigma,m,n)l标准正态分布标准正态分布N(0,1)R=randn(m,n)l二
10、项分布二项分布B(n,p)R=binornd(n,p,m,n)l泊松分布泊松分布 P()R=poissrnd(,m,n)l以上语句均产生以上语句均产生m n 的矩阵的矩阵132:案例分析案例分析l例1:unifrnd(2,3)lunifrnd(1,32,1,4)lnormrnd(1,2)l normrnd(1,2,2,3)lrand(2,3)lrandn(2,3)142:案例分析案例分析lans=2.8132lans=1.3057 5.3056 7.2857 7.1604lans=0.2527lans=l 2.7429 0.0219 2.7759l 2.2756 0.0992 -0.9560l
11、ans=l 0.6038 0.1988 0.7468l 0.2722 0.0153 0.4451lans=l -0.0945 -1.3089 -0.2440l -0.2141 0.8248 -0.1778l 152:案例分析案例分析l例例2:2:敌空战部队对我方港口进行空袭敌空战部队对我方港口进行空袭,其到达规律服从泊其到达规律服从泊松分布松分布,平均每分钟到达平均每分钟到达4 4架飞机架飞机.l(1)(1)模拟敌机在模拟敌机在3 3分钟内到达目标区域的数量分钟内到达目标区域的数量,以及在第以及在第1,2,31,2,3分钟内各到达几架飞机分钟内各到达几架飞机;l(2)(2)模拟在模拟在3 3分
12、钟内每架飞机的到达时刻分钟内每架飞机的到达时刻.分析分析:(1)n1=poissrnd(4),n2=poissrnd(4),:(1)n1=poissrnd(4),n2=poissrnd(4),n3=poissrnd(4),n=n1+n2+n3n3=poissrnd(4),n=n1+n2+n3 (2)(2)由排队论知识由排队论知识,敌机到达规律服从泊松分布等价于敌敌机到达规律服从泊松分布等价于敌机到达港口的间隔时间服从参数为机到达港口的间隔时间服从参数为1/41/4的指数分布的指数分布,故可由故可由指数分布模拟每架飞机的到达时刻指数分布模拟每架飞机的到达时刻.162:案例分析案例分析lclear
13、lt=0;lj=0;%到达的飞机数 lwhile t3l j=j+1l t=t+exprnd(1/4)lend17二二:随机变量的模拟随机变量的模拟l利用均匀分布的随机数可以产生具有任意分布的随机变量利用均匀分布的随机数可以产生具有任意分布的随机变量的样本的样本,从而可以对随机变量的取值情况进行模拟从而可以对随机变量的取值情况进行模拟.l1 1 连续型随机变量的模拟连续型随机变量的模拟l具有给定分布的连续型随机变量可以利用在区间具有给定分布的连续型随机变量可以利用在区间(0,1)(0,1)上上均匀分布的随机数来模拟均匀分布的随机数来模拟,最常用的方法是逆变换法最常用的方法是逆变换法.l结论结论
14、:若随机变量若随机变量Y Y有连续的分布函数有连续的分布函数F(y),F(y),l 则则Z Z与与Y Y有相同的分布有相同的分布.1(0,1),()XUZFX令181 1 连续型随机变量的模拟连续型随机变量的模拟l若已知Y的概率密度为l如果给定区间(0,1)上均匀分布的随机数 ,则具有给定分布Y的随机数 可由方程 l 解出.l例:模拟服从参数为 的指数分布时,由 可得 (),()(),yf yF Yf y dy有()iyirfyd y iy()1iiyyirfy dye11ln(1),ln.iiiiyryr 也可简化为ir192 离散型随机变量的模拟离散型随机变量的模拟l设随机变量X的分布律为
15、:(1,2,3,),iiP Xxp i 令(0)()()1(1)()0,1,2,3,(0,1)(,).(0,1),nnniinnppp npppRU,将作为分点 将区间分为一系列小区间对于均匀的随机变量则有(1)()()(1)(1)(),1,2,nnnnnnnPpRpppnpRpXx由 此 可 知 事 件和 事 件有相同的发生的概率有相同的发生的概率.因此我们可以用随机变量因此我们可以用随机变量R落在落在小区间内的情况来模拟离散的随机变量小区间内的情况来模拟离散的随机变量X的取值情况的取值情况.202 离散型随机变量的模拟离散型随机变量的模拟l例例 3:3:随机变量随机变量 表示每分钟到达银行
16、柜台的顾客表示每分钟到达银行柜台的顾客数数.X.X的分布列见下表的分布列见下表,试模拟试模拟1010分钟内顾客到达柜台的情况分钟内顾客到达柜台的情况.l 表表1 101 10分钟内顾客到达柜台的情况分钟内顾客到达柜台的情况l Xk 0 1 2Xk 0 1 2l pk 0.4 0.3 0.3 pk 0.4 0.3 0.3l分析分析:因为每分钟到达柜台的人数是随机的因为每分钟到达柜台的人数是随机的,所以可用计算机所以可用计算机随机生成一组随机生成一组(0,1)(0,1)的数据的数据,由由X X的概率分布情况的概率分布情况,可认为随机可认为随机数在数在(0,0.4)(0,0.4)范围内时没有顾客光顾
17、范围内时没有顾客光顾,在在0.4,0.7)0.4,0.7)时时,有一个有一个顾客光顾顾客光顾,在在0.7,1)0.7,1)时时,有两个顾客光顾有两个顾客光顾.l 从而有从而有MATLABMATLAB程序程序:0,1,2X 212 离散型随机变量的模拟离散型随机变量的模拟lr=rand(1,10);lfor i=1:10;l if r(i)0.4l n(i)=0;l elseif 0.4=r(i)&r(i)0.1)lfor i=1:2:7ld=sqrt(x(i)-x(i+1)2+(x(i+1)-x(i+3)2);lx(i)=x(i)+v*dt*(x(i+2)-x(i)/d;lx(i+1)=x(i
18、+1)+v*dt*(x(i+3)-x(i+1)/d;lplot(x(i),x(i+1),.)lendlx(9)=x(1);x(10)=x(2);lendlhold3 MATLAB实现3002468100123456789103 MATLAB实现31例例9.6 水池含盐量问题水池含盐量问题l某水池有某水池有2000m2000m3 3水水,其中含盐其中含盐2kg,2kg,以以6m6m3 3/min/min的速率向水池的速率向水池内注入含盐为内注入含盐为0.5kg/m0.5kg/m3 3的盐水的盐水,同时又以同时又以4m4m3 3/min/min的速率从的速率从水池流出搅拌均匀的盐水水池流出搅拌均匀
19、的盐水.试用计算机仿真该水池内盐水试用计算机仿真该水池内盐水的变化过程的变化过程,并每隔并每隔10min10min计算水池中水的体积计算水池中水的体积,含盐量含盐量,含含盐率盐率.欲使池中盐水含盐率达到欲使池中盐水含盐率达到0.2kg/m0.2kg/m3 3,需经过多长时间需经过多长时间?l分析分析:这是一个连续系统这是一个连续系统,首先要将系统离散化首先要将系统离散化,在一些离在一些离散点上进行考察散点上进行考察,这些离散点的间隔就是时间步长这些离散点的间隔就是时间步长.可取步可取步长为长为1min,1min,即隔即隔1min1min考察一次系统的状态考察一次系统的状态,并相应地记录和并相应
20、地记录和分析分析.在注入和流出的作用下在注入和流出的作用下,池中水的体积与含盐量池中水的体积与含盐量,含含盐率均随时间变化盐率均随时间变化,初始时刻含盐率为初始时刻含盐率为0.001kg/m0.001kg/m3 3,以后每以后每分钟注入含盐率为分钟注入含盐率为0.5kg/m0.5kg/m3 3的水的水6m6m3 3,流出混合均匀的盐水流出混合均匀的盐水为为4m4m3 3,当池中水的含盐率达到当池中水的含盐率达到0.2kg/m0.2kg/m3 3时时,仿真过程结束仿真过程结束.32例例9.6 水池含盐量问题水池含盐量问题l记记T T时刻的体积为时刻的体积为w(w(m m3 3),水的含盐量为,水
21、的含盐量为s(kg)s(kg),水的,水的含盐率为含盐率为r=s/w(kg/r=s/w(kg/m m3 3),每隔,每隔1min1min池水的动态变化过池水的动态变化过程如下:每分钟水的体积增加程如下:每分钟水的体积增加6-4=2(6-4=2(m m3 3);每分钟向;每分钟向池内注入盐池内注入盐6 60.5=3(kg)0.5=3(kg);每分钟向池外流出盐;每分钟向池外流出盐4 4r(kg)r(kg);每分钟池内增加盐;每分钟池内增加盐3-43-4r(kg).r(kg).l本例还可以用微分方程建立数学模型,并求出它的解本例还可以用微分方程建立数学模型,并求出它的解析解,这个解析解就是问题的精
22、确解,有兴趣的读者析解,这个解析解就是问题的精确解,有兴趣的读者可以按照这个思路求出该问题的精确解,考察相应时可以按照这个思路求出该问题的精确解,考察相应时刻精确解与仿真解的差异,还可以进一步调整仿真过刻精确解与仿真解的差异,还可以进一步调整仿真过程的时间步长,通过与精确解的比较来研究时间步长程的时间步长,通过与精确解的比较来研究时间步长的大小对仿真度的影响。的大小对仿真度的影响。33MATLAB实现实现lclearlh=1;%时间步长为1ls0=2;%初始含盐2kglw0=2000;%初始水池有水2000m3lr0=s0/w0;%初始浓度ls(1)=s0+0.5*6*h-4*h*r0;%一分
23、钟后的含盐量lw(1)=w0+2*h;%一分钟后水池中的盐水体积lr(1)=s(1)/w(1);%一分钟后的浓度 lt(1)=h;ly(1)=(2000000+3000000*h+3000*h2+h3)/(1000+h)2;lfor i=2:200l t(i)=i*h;l s(i)=s(i-1)+0.5*6*h-4*h*r(i-1);%第i步后的含盐量l w(i)=w(i-1)+2*h;%第i步后的盐水体积l r(i)=s(i)/w(i);%第i步后的盐水浓度l y(i)=(2000000+3000000*t(i)+3000*t(i)2+t(i)3)/(1000+t(i)2;l m=floor
24、(i/10);34MATLAB实现实现l if i/10-m0.2%若第i步后的盐水浓度大于0.2l t02=i*h;l r02=r(i);l break l endlendlt02,r02l10*tm,sm,rm%表示逆lsubplot(1,2,1),plot(t,s,blue);lhold onlsubplot(1,2,2),plot(t,y,red);35四四:离散系统的模拟离散系统的模拟-事件步长法事件步长法 l离散系统离散系统(discrete system)(discrete system)是指系统状态只在有是指系统状态只在有限的时间点或可数的时间点上有随机事件驱动的系限的时间点或
25、可数的时间点上有随机事件驱动的系统例如排队系统(统例如排队系统(queue systemqueue system),显然状态量),显然状态量的变化只是在离散的随机时间点上发生假设离散的变化只是在离散的随机时间点上发生假设离散系统状态的变化是在一个时间点上瞬间完成的系统状态的变化是在一个时间点上瞬间完成的 l常用的是事件步长法(下次事件推进法)其过程常用的是事件步长法(下次事件推进法)其过程是:置模拟时钟的初值为是:置模拟时钟的初值为0 0,跳到第一个事件发生,跳到第一个事件发生的时刻,计算系统的状态,产生未来事件并加入到的时刻,计算系统的状态,产生未来事件并加入到队列中去,跳到下一事件,计算系
展开阅读全文