数学建模之计算机仿真.pptx
《数学建模之计算机仿真.pptx》由会员分享,可在线阅读,更多相关《数学建模之计算机仿真.pptx(87页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、一个问题我们做一个实验:把一个硬币掷一万次,统计两个面出现的次数。这样做很简单但却需要大师时间,有没有一咱较快的办法把这个实验完成呢?第1页/共87页第2页/共87页掷硬币仿真流程图掷硬币仿真流程图第3页/共87页概述计算机科学技术的迅猛发展,给许多学科带来了巨大的影响计算计算机科学技术的迅猛发展,给许多学科带来了巨大的影响计算机不但使问题的求解变得更加方便、快捷和精确,而且使得解决实机不但使问题的求解变得更加方便、快捷和精确,而且使得解决实际问题的领域更加广泛计算机适合于解决那些规模大、难以解析际问题的领域更加广泛计算机适合于解决那些规模大、难以解析化以及不确定的数学模型例如对于一些带随机因
2、素的复杂系统,化以及不确定的数学模型例如对于一些带随机因素的复杂系统,用分析方法建模常常需要作许多简化假设,与面临的实际问题可能用分析方法建模常常需要作许多简化假设,与面临的实际问题可能相差甚远,以致解答根本无法应用,这时仿真几乎成为人们的唯一相差甚远,以致解答根本无法应用,这时仿真几乎成为人们的唯一选择在历届的美国和中国大学生的数学建模竞赛(选择在历届的美国和中国大学生的数学建模竞赛(MCM)中,学)中,学生们经常用到计算机仿真方法去求解、检验等计算机仿真生们经常用到计算机仿真方法去求解、检验等计算机仿真(computer simulation)是建模过程中较为重要的一类方法是建模过程中较为
3、重要的一类方法 第4页/共87页第5页/共87页第6页/共87页第7页/共87页第8页/共87页第9页/共87页计算机仿真可以解决以下5类问题:(1)(1)难以用数学公式表示的系统难以用数学公式表示的系统,或者没有建立和求解的有效方法或者没有建立和求解的有效方法.(2)(2)虽然可以用解析的方法解决问题虽然可以用解析的方法解决问题,但数学的分析与计算过于复杂但数学的分析与计算过于复杂,这时这时计算机仿真可能提供简单可行的求解方法计算机仿真可能提供简单可行的求解方法.(3)(3)希望能在较短的时间内观察到系统发展的全过程希望能在较短的时间内观察到系统发展的全过程,以估计某些参数对系以估计某些参数
4、对系统行为的影响统行为的影响.(4)(4)难以在实际环境中进行试验和观察时难以在实际环境中进行试验和观察时,计算机仿真是唯一可行的方法计算机仿真是唯一可行的方法,如太空飞行的研究如太空飞行的研究.(5)(5)需要对系统或过程进行长期运行比较需要对系统或过程进行长期运行比较,从大量方案中寻找最优方案从大量方案中寻找最优方案.第10页/共87页计算机仿真案例1模型建立:模型建立:由于本题要求使从搅拌中心到各个工地运输混凝土由于本题要求使从搅拌中心到各个工地运输混凝土的总的吨公里数最少,所以,该问题的目标函数是的总的吨公里数最少,所以,该问题的目标函数是 第11页/共87页求解方法:求解方法:1、高
5、数中的方法、高数中的方法2、数值计算方法、数值计算方法3、计算机仿真:、计算机仿真:离散化,遍历!离散化,遍历!第12页/共87页计算机仿真案例2例例2(赶火车过程仿真)(赶火车过程仿真)一列火车从一列火车从A站经过站经过B站站开往开往C站,某人每天赶往站,某人每天赶往B站乘这趟火车。已知站乘这趟火车。已知火车从火车从A站到站到B站的运行时间是均值为站的运行时间是均值为30min、标、标准差为准差为2min的正态随机变量。火车大约在下午的正态随机变量。火车大约在下午1点离开站。火车离开时刻的频率分布和这个人点离开站。火车离开时刻的频率分布和这个人到达站时刻的频率分布如下表所示。问他能赶到达站时
6、刻的频率分布如下表所示。问他能赶上火车的概率有多大?上火车的概率有多大?出发时刻出发时刻1:001:051:10到达时刻到达时刻1:281:301:321:34频率频率0.70.20.1频率频率0.30.40.20.1第13页/共87页u仿真过程:仿真过程:u1、生成火车的发车时间、运行时间,从而达得到、生成火车的发车时间、运行时间,从而达得到其到达其到达B站的时间。站的时间。u2、生成此人达到、生成此人达到B站的时间。站的时间。u3、如果此人到达站的时间早于火车到达时间,、如果此人到达站的时间早于火车到达时间,则算赶上火车一次。则算赶上火车一次。u4、将上述过程重复一万次,统计赶上火车的频率
7、、将上述过程重复一万次,统计赶上火车的频率作为所求概率。作为所求概率。分析:这个问题用概率论的方法求解十分困难,分析:这个问题用概率论的方法求解十分困难,它涉及此人到达时刻、火车离开它涉及此人到达时刻、火车离开A站的时刻、火站的时刻、火车运行时间几个随机变量。车运行时间几个随机变量。我们可以用计算机仿真的方法来解决。我们可以用计算机仿真的方法来解决。第14页/共87页第15页/共87页概述计算机仿真在计算机中运行实现计算机仿真在计算机中运行实现,不怕破坏不怕破坏,易修改易修改,可重用可重用,安全经安全经济济,不受外界条件和场地空间的限制不受外界条件和场地空间的限制.仿真仿真分为分为静态静态仿真
8、仿真(static simulation)和和动态动态仿真仿真(dynamic simulation).数值积分中的蒙特卡洛方法是典型的静态数值积分中的蒙特卡洛方法是典型的静态仿真仿真动态动态仿仿真真又分为又分为连续系统连续系统仿真仿真和和离散系统离散系统仿真仿真连续系统是指状态变量随连续系统是指状态变量随着时间连续变化的系统,例如传染病的检测与预报系统着时间连续变化的系统,例如传染病的检测与预报系统.离散系统是离散系统是指系统状态变量只在有限的时间点或可数的时间点上发生变化的系指系统状态变量只在有限的时间点或可数的时间点上发生变化的系统统,例如排队系统例如排队系统.第16页/共87页概述仿真
9、系统,必须设置一个仿真时钟仿真系统,必须设置一个仿真时钟(simulate clock),它能将时间从一个时刻向另一个时刻进行推进,并且它能将时间从一个时刻向另一个时刻进行推进,并且能随时反映系统时间的当前值其中,模拟时间推进能随时反映系统时间的当前值其中,模拟时间推进方式有两种方式有两种:时间步长法时间步长法(均匀间隔时间推进法均匀间隔时间推进法,连续系连续系统常用统常用)和事件步长法和事件步长法(下次事件推进法下次事件推进法,离散系统常用离散系统常用)第17页/共87页主要内容一一:准备知识准备知识:随机数的产生随机数的产生二二:随机变量的模拟随机变量的模拟三三:连续系统的模拟连续系统的模
10、拟-时间步长法时间步长法四四:离散系统的模拟离散系统的模拟-事件步长法事件步长法五:蒙特卡洛方法五:蒙特卡洛方法第18页/共87页一:准备知识:随机数的产生由于仿真研究的实际系统要受到多种随机因素的作用和影响由于仿真研究的实际系统要受到多种随机因素的作用和影响,在在仿真过程中必须处理大量的随机因素仿真过程中必须处理大量的随机因素.要解决此问题的前提是要解决此问题的前提是确确定随机变量的类型定随机变量的类型和选择和选择合适的随机数产生的方法合适的随机数产生的方法.对随机现象进行模拟对随机现象进行模拟,实质是要给出随机变量的模拟实质是要给出随机变量的模拟,也就是说也就是说要利用计算机随机产生一系列
11、数值要利用计算机随机产生一系列数值,使它们使它们服从一定的概率分布服从一定的概率分布服从一定的概率分布服从一定的概率分布,称这些数值为称这些数值为随机数随机数.最基本最基本,最常用的是最常用的是(0,1)(0,1)区间内均匀分布的随机数区间内均匀分布的随机数.其他分布的其他分布的随机数均可利用它来产生随机数均可利用它来产生.第19页/共87页1:1:产生模拟随机数的计算机命令产生模拟随机数的计算机命令在在MATLAB中中,可以直接产生满足各种分布的随机数可以直接产生满足各种分布的随机数,命令如下命令如下:常见的分布函数常见的分布函数 MATLAB语句语句 均匀分布均匀分布U0,1 R=rand
12、(m,n)均匀分布均匀分布Ua,b R=unifrnd(a,b,m,n)指数分布指数分布 E()R=exprnd(,m,n)正态分布正态分布N(mu,sigma)R=normrnd(mu,sigma,m,n)标准正态分布标准正态分布N(0,1)R=randn(m,n)二项分布二项分布B(n,p)R=binornd(n,p,m,n1)泊松分布泊松分布 P()R=poissrnd(,m,n)以上语句均产生以上语句均产生m n 的矩阵的矩阵第20页/共87页2:案例分析例1:unifrnd(2,3)unifrnd(1,32,1,4)normrnd(1,2)normrnd(1,2,2,3)rand(2
13、,3)randn(2,3)lanslanslanslans=lans=lans=l 第21页/共87页2:案例分析例例2:2:敌空战部队对我方港口进行空袭敌空战部队对我方港口进行空袭,其到达规律服从其到达规律服从泊松分布泊松分布,平均每分钟到达平均每分钟到达4 4架飞机架飞机.(1)(1)模拟敌机在模拟敌机在3 3分钟内到达目标区域的数量分钟内到达目标区域的数量,以及在第以及在第1,2,31,2,3分钟内各到达几架飞机分钟内各到达几架飞机;(2)(2)模拟在模拟在3 3分钟内每架飞机的到达时刻分钟内每架飞机的到达时刻.分析分析:(1)n1=poissrnd(4),n2=poissrnd(4),
14、:(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的指数分的指数分布布,故可由指数分布模拟每架飞机的到达时刻故可由指数分布模拟每架飞机的到达时刻.注:如果单位时间发生的次数(如到达的人数)服从参数为r的泊松分布,则任连续发生的两次时间的间隔时间序列服从参数为r的指数分布!泊松分布的期望是,根据到泊松分布和
15、指数分布的关系,可以推出指数分布的期望是1/。第22页/共87页2:案例分析cleart=0;j=0;%到达的飞机数 while t3 j=j+1 t=t+exprnd(1/4)end第23页/共87页二:随机变量的模拟在很多实际问题中,我们需要模拟服从一定分布的随机变量在很多实际问题中,我们需要模拟服从一定分布的随机变量,来进行计算来进行计算和预测。和预测。利用均匀分布的随机数可以产生具有任意分布的随机变量的样本利用均匀分布的随机数可以产生具有任意分布的随机变量的样本,从而可从而可以对随机变量的取值情况进行模拟以对随机变量的取值情况进行模拟.1 1 连续型随机变量的模拟连续型随机变量的模拟具
16、有给定分布的连续型随机变量可以利用在区间具有给定分布的连续型随机变量可以利用在区间(0,1)(0,1)上均匀分布的随机上均匀分布的随机数来模拟数来模拟,最常用的方法是逆变换法最常用的方法是逆变换法.结论结论:若随机变量若随机变量Y Y有连续的分布函数有连续的分布函数F(y),F(y),则则Z Z与与Y Y有相同的分布有相同的分布.第24页/共87页1 连续型随机变量的模拟连续型随机变量的模拟 一般说来,具有给定分布的连续型随机变量可以利用在区间(0,1)上均匀分布的随机数来模拟最常用的方法是反函数法反函数法由概率论的理论可以证明,若随机变量Y有连续的分布函数F(y),而X是区间(0,1)上均匀
17、分布的随机变量,令 ,则Z与Y有相同的分布由此,若已知Y的概率密度为 ,由 可得反函数法反函数法第25页/共87页如果给定区间(0,1)上均匀分布的随机数 ,则具有给定分布Y的随机数 可由方程 解出.例:模拟服从参数为 的指数分布时,由 可得 注:指数分布的密度函数第26页/共87页2 离散型随机变量的模拟设随机变量X的分布律为:有相同的发生的概率有相同的发生的概率.因此我们可以用随机变量因此我们可以用随机变量R落在落在小区间内的情况来模拟离散的随机变量小区间内的情况来模拟离散的随机变量X的取值情况的取值情况.第27页/共87页 因此我们可以用随机变量R落在小区间内的情况来模拟离散的随机变量X
18、的取值情况具体执行的过程是:产生一个(0,1)上均匀分布的随机数 r(简称随机数),若p(n-1)r p(n)则理解为发生事件(X=xn)于是就可以模拟随机变量的取值情况第28页/共87页2 离散型随机变量的模拟例例 3:3:随机变量随机变量 表示每分钟到达银行柜台的表示每分钟到达银行柜台的顾客数顾客数.X.X的分布列见下表的分布列见下表,试模拟试模拟1010分钟内顾客到达柜台分钟内顾客到达柜台的情况的情况.表表1 101 10分钟内顾客到达柜台的情况分钟内顾客到达柜台的情况 Xk 0 1 2Xk 0 1 2 pk 0.4 0.3 pk 0.4 0.3 分析分析:因为每分钟到达柜台的人数是随机
19、的因为每分钟到达柜台的人数是随机的,所以可用计算所以可用计算机随机生成一组机随机生成一组(0,1)(0,1)的数据的数据,由由X X的概率分布情况的概率分布情况,可认可认为随机数在为随机数在(0,0.4)(0,0.4)范围内时没有顾客光顾范围内时没有顾客光顾,在在0.4,0.7)0.4,0.7)时时,有一个顾客光顾有一个顾客光顾,在在0.7,1)0.7,1)时时,有两个顾客光顾有两个顾客光顾.从而有从而有MATLABMATLAB程序程序:第29页/共87页2 离散型随机变量的模拟r=rand(1,10);for i=1:10;if r(i n(i)=0;elseif 0.40.1)for i=
20、1:2:7%循环求每个点的下一个时间点的坐标d=sqrt(x(i)-x(i+2)2+(x(i+1)-x(i+3)2);%与追击点的距离x(i)=x(i)+v*dt*(x(i+2)-x(i)/d;%下一个时间点的x坐标x(i+1)=x(i+1)+v*dt*(x(i+3)-x(i+1)/d;%下一个时间点的y坐标plot(x(i),x(i+1),.)endx(9)=x(1);x(10)=x(2);endhold3 MATLAB实现第44页/共87页3 MATLAB实现第45页/共87页例6 水池含盐量问题某水池有某水池有2000m2000m3 3水水,其中含盐其中含盐2kg,2kg,以以6m6m3
21、 3/min/min的速率向水池内注入含盐为的速率向水池内注入含盐为3 3的盐水的盐水,同时又以同时又以4m4m3 3/min/min的速率从水池流出搅拌均匀的盐水的速率从水池流出搅拌均匀的盐水.试用计算机试用计算机仿真该水池内盐水的变化过程仿真该水池内盐水的变化过程,并每隔并每隔10min10min计算水池中水的体积计算水池中水的体积,含盐量含盐量,含盐率含盐率.欲使池中盐水含盐率达到欲使池中盐水含盐率达到3 3,需经过多长时间需经过多长时间?分析分析:这是一个连续系统这是一个连续系统,首先要将系统离散化首先要将系统离散化,在一些离散点上进行考察在一些离散点上进行考察,这些离散点的间隔就是时
22、间步长这些离散点的间隔就是时间步长.可取步长为可取步长为1min,1min,即隔即隔1min1min考察一次系考察一次系统的状态统的状态,并相应地记录和分析并相应地记录和分析.在注入和流出的作用下在注入和流出的作用下,池中水的体积与池中水的体积与含盐量含盐量,含盐率均随时间变化含盐率均随时间变化,初始时刻含盐率为初始时刻含盐率为3 3,以后每分钟注入含盐率以后每分钟注入含盐率为为3 3的水的水6m6m3 3,流出混合均匀的盐水为流出混合均匀的盐水为4m4m3 3,当池中水的含盐率达到当池中水的含盐率达到3 3时时,仿真过仿真过程结束程结束.第46页/共87页例6 水池含盐量问题记记T T时刻的
23、体积为时刻的体积为w(w(m m3 3),水的含盐量为,水的含盐量为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);每分钟向池内注入盐;每分钟向池内注入盐60.5=3(kg)60.5=3(kg);每分钟向池;每分钟向池外流出盐外流出盐4r(kg)4r(kg);每分钟池内增加盐;每分钟池内增加盐3-4r(kg).3-4r(kg).本例还可以用微分方程建立数学模型,并求出它的解析解,这个解本例还可以
24、用微分方程建立数学模型,并求出它的解析解,这个解析解就是问题的精确解,有兴趣的读者可以按照这个思路求出该问析解就是问题的精确解,有兴趣的读者可以按照这个思路求出该问题的精确解,考察相应时刻精确解与仿真解的差异,还可以进一步题的精确解,考察相应时刻精确解与仿真解的差异,还可以进一步调整仿真过程的时间步长,通过与精确解的比较来研究时间步长的调整仿真过程的时间步长,通过与精确解的比较来研究时间步长的大小对仿真度的影响。大小对仿真度的影响。第47页/共87页MATLAB实现clearh=1;%时间步长为1s0=2;%初始含盐2kgw0=2000;%初始水池有水2000m3r0=s0/w0;%初始浓度s
25、(1)=s0+0.5*6*h-4*h*r0;%一分钟后的含盐量w(1)=w0+2*h;%一分钟后水池中的盐水体积r(1)=s(1)/w(1);%一分钟后的浓度 t(1)=h;y(1)=(2000000+3000000*h+3000*h2+h3)/(1000+h)2;for i=2:200 t(i)=i*h;s(i)=s(i-1)+0.5*6*h-4*h*r(i-1);%第i步后的含盐量 w(i)=w(i-1)+2*h;%第i步后的盐水体积 r(i)=s(i)/w(i);%第i步后的盐水浓度 y(i)=(2000000+3000000*t(i)+3000*t(i)2+t(i)3)/(1000+t
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数学 建模 计算机仿真
限制150内