数学建模第12讲 计算机模拟

上传人:子 文档编号:51713664 上传时间:2018-08-16 格式:PPT 页数:37 大小:568.50KB
返回 下载 相关 举报
数学建模第12讲 计算机模拟_第1页
第1页 / 共37页
数学建模第12讲 计算机模拟_第2页
第2页 / 共37页
数学建模第12讲 计算机模拟_第3页
第3页 / 共37页
数学建模第12讲 计算机模拟_第4页
第4页 / 共37页
数学建模第12讲 计算机模拟_第5页
第5页 / 共37页
点击查看更多>>
资源描述

《数学建模第12讲 计算机模拟》由会员分享,可在线阅读,更多相关《数学建模第12讲 计算机模拟(37页珍藏版)》请在金锄头文库上搜索。

1、数学建模与数学实验后勤工程学院数学教研室计算机模拟实验目的实验内容学习计算机模拟的基本过程与方法。1、模拟的概念。4、实验作业。3、计算机模拟实例。2、产生随机数的计算机命令。连续系统模拟实例: 追逐问题离散系统模拟实例: 排队问题用蒙特卡洛法解非线性规划问题返回计算机模拟实例模拟的概念模拟就是利用物理的、数学的模型来类比、模仿现实 系统及其演变过程,以寻求过程规律的一种方法。 模拟的基本思想是建立一个试验模型,这个模型包含 所研究系统的主要特点通过对这个实验模型的运行,获 得所要研究系统的必要信息模拟的方法1、物理模拟:对实际系统及其过程用功能相似的实物系统去模仿。例如,军事演习、船艇实验、

2、沙盘作业等。物理模拟通常花费较大、周期较长,且在物理模 型上改变系统结构和系数都较困难。而且,许多系统 无法进行物理模拟,如社会经济系统、生态系统等。在实际问题中,面对一些带随机因素的复杂系统, 用分析方法建模常常需要作许多简化假设,与面临的实 际问题可能相差甚远,以致解答根本无法应用。这时, 计算机模拟几乎成为唯一的选择。在一定的假设条件下,运用数学运算模拟系统的运 行,称为数学模拟。现代的数学模拟都是在计算机上进 行的,称为计算机模拟。2、数学模拟计算机模拟可以反复进行,改变系统的结构和系数 都比较容易。蒙特卡洛(Monte Carlo)方法是一种应用随机数来 进行计算机模拟的方法此方法对

3、研究的系统进行随机 观察抽样,通过对样本值的观察统计,求得所研究系统 的某些参数例1 在我方某前沿防守地域,敌人以一个炮排(含两 门火炮)为单位对我方进行干扰和破坏为躲避我方 打击,敌方对其阵地进行了伪装并经常变换射击地点 经过长期观察发现,我方指挥所对敌方目标的指 示有50是准确的,而我方火力单位,在指示正确 时,有1/3的射击效果能毁伤敌人一门火炮,有1/6 的射击效果能全部消灭敌人现在希望能用某种方式把我方将要对敌人实施 的20次打击结果显现出来,确定有效射击的比率及 毁伤敌方火炮的平均值。分析: 这是一个概率问题,可以通过理论计算得到相应的 概率和期望值.但这样只能给出作战行动的最终静

4、态结果,而 显示不出作战行动的动态过程.为了能显示我方20次射击的过程,现采用模拟的方式 。需要模拟出以下两件事: 1. 问题分析2 当指示正确时,我方火力单位的射击结果情况1 观察所对目标的指示正确与否模拟试验有两种结果,每一种结果出现的概率都是1/2因此,可用投掷一枚硬币的方式予以确定,当硬币出现正面时为 指示正确,反之为不正确模拟试验有三种结果:毁伤一门火炮的可能性为1/3(即2/6), 毁伤两门的可能性为1/6,没能毁伤敌火炮的可能性为1/2(即3/6)这时可用投掷骰子的方法来确定: 如果出现的是、三个点:则认为没能击中敌人; 如果出现的是、点:则认为毁伤敌人一门火炮; 若出现的是点:

5、则认为毁伤敌人两门火炮2. 符号假设i:要模拟的打击次数; k1:没击中敌人火炮的射击总数; k2:击中敌人一门火炮的射击总数;k3:击中敌人两门火炮的射击总数 E:有效射击比率; E1:20次射击平均每次毁伤敌人的火炮数3. 模拟框图初始化:i=0,k1=0,k2=0,k3=0i=i+1骰子点数?k1=k1+1k2=k2+1k3=k3+1k1=k1+1i20?E=(k2+k3)/20 E1=0*k1/20+1*k2/20+2*k3/20停止硬币正面?YNNY1,2,34,564. 模拟结果5. 理论计算6. 结果比较返回虽然模拟结果与理论计算不完全一致,但它却能更加真实地表 达实际战斗动态过

6、程 用蒙特卡洛方法进行计算机模拟的步骤:1 设计一个逻辑框图,即模拟模型这个框图要正确反映系统各部 分运行时的逻辑关系。 2 模拟随机现象可通过具有各种概率分布的模拟随机数来模拟随 机现象产生模拟随机数的计算机命令在Matlab软件中,可以直接产生满足各种分布的随机数 ,命令如下:2产生mn阶,均匀分布的随机数矩阵:rand (m, n)产生一个,均匀分布的随机数:rand1产生mn阶a,b均匀分布U(a,b)的随机数矩阵:unifrnd (a,b,m, n)产生一个a,b均匀分布的随机数:unifrnd (a,b)当只知道一个随机变量取值在(a,b)内,但不知道 (也没理由假设)它在何处取值

7、的概率大,在何处取值的 概率小,就只好用U(a,b)来模拟它。例 1的计算机模拟To Matlab (rnd)当研究对象视为大量相互独立的随机变量之和,且其中每 一种变量对总和的影响都很小时,可以认为该对象服从正态 分布。机械加工得到的零件尺寸的偏差、射击命中点与目标的偏差 、各种测量误差、人的身高、体重等,都可近似看成服从正 态分布。若连续型随机变量X的概率密度函数为其中 0为常数,则称X服从参数为 的指数分布。指数分布的期望值为 排队服务系统中顾客到达率为常数时的到达间隔、故障 率为常数时零件的寿命都服从指数分布。指数分布在排队论、可靠性分析中有广泛应用。 注意:Matlab中,产生参数为

8、 的指数分布的命令为 exprnd( )例 顾客到达某商店的间隔时间服从参数为0.1的指数分布指数分布的均值为1/0.1=10。指两个顾客到达商店的平均间隔时间是10个单位时间.即平均10个 单位时间到达1个顾客. 顾客到达的间隔时间可用exprnd(10)模拟。设离散型随机变量X的所有可能取值为0,1,2,且取各个值 的概率为其中 0为常数,则称X服从参数为 的帕松分布。帕松分布在排队系统、产品检验、天文、物理等领域有 广泛应用。帕松分布的期望值为如相继两个事件出现的间隔时间服从参数为 的指数分布, 则在单位时间间隔内事件出现的次数服从参数为 的泊松分 布即单位时间内该事件出现k次的概率为:

9、反之亦然。指数分布与帕松分布的关系:(1)指两个顾客到达商店的平均间隔时间是10个单位时间.即平均 10个单位时间到达1个顾客.(2)指一个单位时间内平均到达0.1个顾客例 (1)顾客到达某商店的间隔时间服从参数为0.1的指数分布(2)该商店在单位时间内到达的顾客数服从参数为0.1的帕松分布 返回例2 敌坦克分队对我方阵地实施突袭,其到达规律服从 泊松分布,平均每分钟到达辆(1)模拟敌坦克在 分钟内到达目标区的数量,以及在第、分钟内各 到达几辆坦克(2)模拟在3分钟内每辆敌坦克的到达时 刻。(1)用poissrnd(4)进行模拟。To Matlab(poiss )(2)坦克到达的间隔时间应服从

10、参数为4的负指数分布 ,用exprnd(1/4)模拟。To Matlab(time )连续系统模拟实例: 追逐问题状态随时间连续变化的系统称为连续系统。对连续系 统的计算机模拟只能是近似的,只要这种近似达到一定的 精度,也就可以满足要求。例 追逐问题: 如图,正方形ABCD的四个顶点 各有一人.在某一时刻,四人同时出发以匀速v=1 米/秒按顺时针方向追逐下一人,如果他们始终保 持对准目标,则最终按螺旋状曲线于中心点O.试 求出这种情况下每个人的行进轨迹.OBCDA1. 建立平面直角坐标系:A(x1,y1), B(x2,y2), C(x3,y3), D(x4,y4).2. 取时间间隔为t,计算每

11、一点在各个时刻的坐标.4. 对每一个点,连接它在各时刻的位置,即得所求运动轨迹.求解过程:To Matlab(chase)返回v=1; dt=0.05; x=0 0 10 10; y=0 10 10 0;for i=1:4plot(x(i),y(i),.),hold on endd=20; while(d0.1)x(5)=x(1);y(5)=y(1);for i=1:4d=sqrt(x(i+1)-x(i)2+(y(i+1)-y(i)2);x(i)=x(i)+v*dt*(x(i+1)-x(i)/d;y(i)=y(i)+v*dt*(y(i+1)-y(i)/d;plot(x(i),y(i),.),h

12、old onendend计算程序:To Matlab(chase)返回离散系统模拟实例: 排队问题排队论主要研究随机服务系统的工作过程。在排队系统中,服务对象的到达时间和服务时间都是随机的。排队 论通过对每个个别的随机服务现象的统计研究,找出反映这些随机现象 平均特性的规律,从而为设计新的服务系统和改进现有服务系统的工作 提供依据。对于排队服务系统, 顾客常常注意排队的人是否太多, 等候的时间是否 长, 而服务员则关心他空闲的时间是否太短. 于是人们常用排队的长度、等 待的时间及服务利用率等指标来衡量系统的性能.1 系统的假设:(1) 顾客源是无穷的;(2) 排队的长度没有限制;( 3) 到达

13、系统的顾客按先后顺序依次进入服务, 即“先到先服务”。单服务员的排队模型:在某商店有一个售货员,顾客陆续来到, 售货员逐个地接待顾客当到来的顾客较多时,一部分顾客便须排队 等待,被接待后的顾客便离开商店设: 1顾客到来间隔时间服从参数为0.1的指数分布 对顾客的服务时间服从,上的均匀分布 排队按先到先服务规则,队长无限制假定一个工作日为8小时,时间以分钟为单位。 1模拟一个工作日内完成服务的个数及顾客平均等待时间t 2模拟100个工作日,求出平均每日完成服务的个数及每日顾客的平均 等待时间。2 符号说明 w:总等待时间;ci:第i个顾客的到达时刻;bi:第i个顾客开始服务时刻; ei:第i个顾

14、客服务结束时刻xi:第i-1个顾客与第i个顾客之间到达的间隔时间yi:对第i个顾客的服务时间c1b1c3c4c5c2e1b2e2b3e3b4e4b5ci=ci-1+ xiei=bi+yibi=max(ci,ei-1)t3 模拟框图初始化:令i=1,ei-1=0,w=0产生间隔时间随机数xi参数为0.1的指数分布 ci=xi , bi=xi 产生服务时间随机数yi4,15的均匀分布 ei=bi+yi累计等待时间:w=w+bi-ci准备下一次服务:i=i+1产生间隔时间随机数xi参数为0.1的指数分布 ci=ci-1+ xi 确定开始服务时间:bi=max(ci,ei-1)bi480?YNi=i-

15、1,t=w/i输出结果:完成服务个数:m=i平均等待时间:t停止1模拟一日 To Matlab(simu1)2模拟100日 To Matlab(simu2)返回用蒙特卡洛法解非线性规划问题基本假设 试验点的第j个分量xj服从aj ,bj内的均匀分布符号假设求解过程先产生一个随机数作为初始试验点,以后则将上一个试验点的第j个分 量随机产生,其它分量不变而产生一新的试验点这样,每产生一个新试 验点只需一个新的随机数分量当KMAXK或PMAXP时停止迭代框 图初始化:给定MAXK,MAXP;k=0,p=0,Q:大整数xj=aj+R(bj-aj) j=1,2,nj=0j=j+1,p=p+1PMAXP?

16、YNxj=aj+R(bj-aj)gi(X)0? i=1,2nYNjMAXK?YN输出X,Q,停止Y N在Matlab软件包中编程,共需三个文件:randlp.m, mylp.m, lpconst.m.主程序为randlp.m.% mylp.m function z=mylp(x) %目标函数 z=2*x(1)2+x(2)2-x(1)*x(2)-8*x(1)-3*x(2); %转化为求最小值问题% randlp.m function sol,r1,r2=randlp(a,b,n) %随机模拟解非线性规划 debug=1; a=0; %试验点下界 b=10; %试验点上界 n=1000; %试验点个数 r

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号