2014数学建模之计算机仿真.ppt
《2014数学建模之计算机仿真.ppt》由会员分享,可在线阅读,更多相关《2014数学建模之计算机仿真.ppt(64页珍藏版)》请在三一办公上搜索。
1、数学建模之,计算机仿真,天目学院基础部 帅昌浩,China Undergraduate Mathematical Contest in Modeling,概述,计算机科学技术的迅猛发展,给许多学科带来了巨大的影响计算机不但使问题的求解变得更加方便、快捷和精确,而且使得解决实际问题的领域更加广泛计算机适合于解决那些规模大、难以解析化以及不确定的数学模型例如对于一些带随机因素的复杂系统,用分析方法建模常常需要作许多简化假设,与面临的实际问题可能相差甚远,以致解答根本无法应用,这时仿真几乎成为人们的唯一选择在历届的美国和中国大学生的数学建模竞赛(MCM)中,学生们经常用到计算机仿真方法去求解、检验等
2、计算机仿真(computer simulation)是建模过程中较为重要的一类方法,计算机仿真的基本概念,计算机仿真,是根据已知的信息和知识(如数学、物理规律),利用计算机模拟现实情况和系统的演变过程,发现新的知识或规律,从而解决问题的一种方法,计算机仿真的基本概念,独立于理论研究与实验研究的认识世界的第三中方法,计算机仿真的基本概念,计算机仿真的特点,代价小、时间短、可重复、参数设置灵活,计算机仿真可以解决以下5类问题:,(1)难以用数学公式表示的系统,或者没有建立和求解的有效方法.(2)虽然可以用解析的方法解决问题,但数学的分析与计算过于复杂,这时计算机仿真可能提供简单可行的求解方法.(3
3、)希望能在较短的时间内观察到系统发展的全过程,以估计某些参数对系统行为的影响.(4)难以在实际环境中进行试验和观察时,计算机仿真是唯一可行的方法,如太空飞行的研究.(5)需要对系统或过程进行长期运行比较,从大量方案中寻找最优方案.,计算机仿真的分类,计算机仿真在计算机中运行实现,不怕破坏,易修改,可重用,安全经济,不受外界条件和场地空间的限制.仿真分为静态仿真(static simulation)和动态仿真(dynamic simulation).数值积分中的蒙特卡洛方法(统计模拟方法)是典型的静态仿真动态仿真又分为连续系统仿真和离散系统仿真连续系统是指状态变量随着时间连续变化的系统,例如传染
4、病的检测与预报系统.离散系统是指系统状态变量只在有限的时间点或可数的时间点上发生变化的系统,例如排队系统.,仿真系统,必须设置一个仿真时钟(simulate clock),它能将时间从一个时刻向另一个时刻进行推进,并且能随时反映系统时间的当前值其中,模拟时间推进方式有两种:时间步长法(均匀间隔时间推进法,连续系统常用)和事件步长法(下次事件推进法,离散系统常用),主要内容,一:准备知识:随机数的产生二:随机变量的模拟三:连续系统的模拟-时间步长法四:离散系统的模拟-事件步长法五:蒙特卡洛方法,一:准备知识:随机数的产生,由于仿真研究的实际系统要受到多种随机因素的作用和影响,在仿真过程中必须处理
5、大量的随机因素.要解决此问题的前提是确定随机变量的类型和选择合适的随机数产生的方法.对随机现象进行模拟,实质是要给出随机变量的模拟,也就是说要利用计算机随机产生一系列数值,使它们服从一定的概率分布,称这些数值为随机数.最基本,最常用的是(0,1)区间内均匀分布的随机数.其他分布的随机数均可利用它来产生.,1:产生模拟随机数的计算机命令,在MATLAB中,可以直接产生满足各种分布的随机数,命令如下:常见的分布函数 MATLAB语句 均匀分布U0,1 R=rand(m,n)均匀分布Ua,b R=unifrnd(a,b,m,n)指数分布E()R=exprnd(,m,n)正态分布N(mu,sigma)
6、R=normrnd(mu,sigma,m,n)标准正态分布N(0,1)R=randn(m,n)二项分布B(n,p)R=binornd(n,p,m,n)泊松分布 P()R=poissrnd(,m,n)以上语句均产生m n 的矩阵,2:案例分析,例1:unifrnd(2,3)unifrnd(1,32,1,4)normrnd(1,2)normrnd(1,2,2,3)rand(2,3)randn(2,3),2:案例分析,ans=2.8132ans=1.3057 5.3056 7.2857 7.1604ans=0.2527ans=2.7429 0.0219 2.7759 2.2756 0.0992-0.
7、9560ans=0.6038 0.1988 0.7468 0.2722 0.0153 0.4451ans=-0.0945-1.3089-0.2440-0.2141 0.8248-0.1778,2:案例分析,例2:敌空战部队对我方港口进行空袭,其到达规律服从泊松分布,平均每分钟到达4架飞机.(1)模拟敌机在3分钟内到达目标区域的数量,以及在第1,2,3分钟内各到达几架飞机;(2)模拟在3分钟内每架飞机的到达时刻.分析:(1)n1=poissrnd(4),n2=poissrnd(4),n3=poissrnd(4),n=n1+n2+n3(2)由排队论知识,敌机到达规律服从泊松分布等价于敌机到达港口的
8、间隔时间服从参数为1/4的指数分布,故可由指数分布模拟每架飞机的到达时刻.,2:案例分析,cleart=0;j=0;%到达的飞机数 while t3 j=j+1 t=t+exprnd(1/4)end,二:随机变量的模拟,利用均匀分布的随机数可以产生具有任意分布的随机变量的样本,从而可以对随机变量的取值情况进行模拟.1 连续型随机变量的模拟具有给定分布的连续型随机变量可以利用在区间(0,1)上均匀分布的随机数来模拟,最常用的方法是逆变换法.结论:若随机变量Y有连续的分布函数F(y),则Z与Y有相同的分布.,1 连续型随机变量的模拟,若已知Y的概率密度为如果给定区间(0,1)上均匀分布的随机数,则
9、具有给定分布Y的随机数 可由方程 解出.例:模拟服从参数为 的指数分布时,由 可得,2 离散型随机变量的模拟,设随机变量X的分布律为:,有相同的发生的概率.因此我们可以用随机变量R落在小区间内的情况来模拟离散的随机变量X的取值情况.,2 离散型随机变量的模拟,例 3:随机变量 表示每分钟到达银行柜台的顾客数.X的分布列见下表,试模拟10分钟内顾客到达柜台的情况.表1 10分钟内顾客到达柜台的情况 Xk 0 1 2 pk 0.4 0.3 0.3分析:因为每分钟到达柜台的人数是随机的,所以可用计算机随机生成一组(0,1)的数据,由X的概率分布情况,可认为随机数在(0,0.4)范围内时没有顾客光顾,
10、在0.4,0.7)时,有一个顾客光顾,在0.7,1)时,有两个顾客光顾.从而有MATLAB程序:,2 离散型随机变量的模拟,r=rand(1,10);for i=1:10;if r(i)0.4 n(i)=0;elseif 0.4=r(i)end r n,三:连续系统的模拟-时间步长法,对连续系统的计算机模拟是近似地获取系统状态在一些离散时刻点上的数值在一定假设条件下,利用数学运算模拟系统的运行过程连续系统模型一般是微分方程,它在数值模拟中最基本的算法是数值积分算法例如有一系统可用微分方程来描述:已知输出量y的初始条件,现在要求出输出量y随时间变化的过程y(t)。,1 理论介绍,最直观的想法是:
11、首先将时间离散化,令,称为第k步的计算步距(一般是等间距的),然后按以下算法计算状态变量在各时刻 上的近似值:其中初始点 按照这种作法即可求出整个的曲线这种最简单的数值积分算法称为欧拉法除此之外,还有其他一些算法,1 理论介绍,因此,连续系统模拟方法是:首先确定系统的连续状态变量,然后将它在时间上进行离散化处理,并由此模拟系统的运行状态模拟过程分为许多相等的时间间隔,时间步长的长度可以根据实际问题分别取为秒,分,小时,天等.仿真时钟按时间步长等距推进,每次推进都要扫描系统中所有活动,按预定计划和目标进行分析,计算,记录系统状态的变化,直到满足某个终止条件为止.,例:追逐问题1问题提出假设正方形
12、ABCD的四个顶点处各站一人在某一时刻,四人同时以匀速v沿顺时针方向追逐下一个人,并且在任意时刻他们始终保持追逐的方向是对准追逐目标,例如,A追逐B,任意时刻A始终向着B追可以证明四人的运动轨迹将按螺旋曲线状汇合于中心O 怎样证明呢?有两种证明方法一是分别求出四人的运动轨迹曲线解析式,求证四条曲线在某时刻相交于一点另一方法则是用计算机模拟将四人的运动轨迹直观地表示在图形上.,2 应用举例,2建立模型及模拟方法,模拟步骤:1)建立平面直角坐标系 2)以时间间隔t进行采样,在每一时t计算每个人在下一时t+t时的坐标 3)不妨设甲的追逐对象是乙,在时间t时,甲,2建立模型及模拟方法,4)选取足够小的
13、,模拟到 时为止5)连接四人在各时刻的位置,就得到所求的轨迹根据以上模拟步骤,编出MATLAB程序(simu2.m)如下:,%取v=1,t=12,A,B,C,D点的坐标分另为(0,10),(10,10),(10,0),(0,0)v=1;dt=0.05;d=20;x=0 0 0 10 10 10 10 0;x(9)=x(1);x(10)=x(2);holdaxis(equal)axis(0 10 0 10);,3 MATLAB实现,for k=1:2:7plot(x(k),x(k+1),.)endwhile(d0.1)for i=1:2:7d=sqrt(x(i)-x(i+1)2+(x(i+1)-
14、x(i+3)2);x(i)=x(i)+v*dt*(x(i+2)-x(i)/d;x(i+1)=x(i+1)+v*dt*(x(i+3)-x(i+1)/d;plot(x(i),x(i+1),.)endx(9)=x(1);x(10)=x(2);endhold,3 MATLAB实现,3 MATLAB实现,例9.6 水池含盐量问题,某水池有2000m3水,其中含盐2kg,以6m3/min的速率向水池内注入含盐为0.5kg/m3的盐水,同时又以4m3/min的速率从水池流出搅拌均匀的盐水.试用计算机仿真该水池内盐水的变化过程,并每隔10min计算水池中水的体积,含盐量,含盐率.欲使池中盐水含盐率达到0.2k
15、g/m3,需经过多长时间?分析:这是一个连续系统,首先要将系统离散化,在一些离散点上进行考察,这些离散点的间隔就是时间步长.可取步长为1min,即隔1min考察一次系统的状态,并相应地记录和分析.在注入和流出的作用下,池中水的体积与含盐量,含盐率均随时间变化,初始时刻含盐率为0.001kg/m3,以后每分钟注入含盐率为0.5kg/m3的水6m3,流出混合均匀的盐水为4m3,当池中水的含盐率达到0.2kg/m3时,仿真过程结束.,例9.6 水池含盐量问题,记T时刻的体积为w(m3),水的含盐量为s(kg),水的含盐率为r=s/w(kg/m3),每隔1min池水的动态变化过程如下:每分钟水的体积增
16、加6-4=2(m3);每分钟向池内注入盐60.5=3(kg);每分钟向池外流出盐4r(kg);每分钟池内增加盐3-4r(kg).本例还可以用微分方程建立数学模型,并求出它的解析解,这个解析解就是问题的精确解,有兴趣的读者可以按照这个思路求出该问题的精确解,考察相应时刻精确解与仿真解的差异,还可以进一步调整仿真过程的时间步长,通过与精确解的比较来研究时间步长的大小对仿真度的影响。,MATLAB实现,clearh=1;%时间步长为1s0=2;%初始含盐2kgw0=2000;%初始水池有水2000m3r0=s0/w0;%初始浓度s(1)=s0+0.5*6*h-4*h*r0;%一分钟后的含盐量w(1)
17、=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(i)2;m=floor(i/10);,MATLAB实现,if i/1
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2014 数学 建模 计算机仿真

链接地址:https://www.31ppt.com/p-5404756.html