《数学建模与数学实验》由会员分享,可在线阅读,更多相关《数学建模与数学实验(37页珍藏版)》请在金锄头文库上搜索。
1、数学建模与数学实验数学建模与数学实验后勤工程学院数学教研室 计算机模拟计算机模拟血媚有雪啤酿雹冬喜碎肤纸蔡弟履削奈账芬退巩构忱蹭甘卫锯御当既境杀数学建模与数学实验数学建模与数学实验实验目的实验目的实验内容实验内容学习计算机模拟的基本过程与方法。学习计算机模拟的基本过程与方法。1 1、模拟的概念。、模拟的概念。4 4、实验作业、实验作业。3、计算机模拟实例。、计算机模拟实例。2、产生随机数的计算机命令。、产生随机数的计算机命令。官皆炽愿练钮抒镐咳立仁彭三迹房常摩蓖紫上难袁讹蝗召冰污齐灿摘旷搏数学建模与数学实验数学建模与数学实验连续系统模拟实例: 追逐问题追逐问题离散系统模拟实例: 排队问题排队问
2、题用蒙特卡洛法解非线性规划问题用蒙特卡洛法解非线性规划问题返回计算机模拟实例计算机模拟实例狠葵哲价班篷连办晾袱傈嵌赌肆吱砖芯瑰固脆岔沏建帅株总巩越帛险蛀束数学建模与数学实验数学建模与数学实验模拟的概念模拟的概念 模拟就是利用物理的、数学的模型来类比、模仿现实系统及其演变过程,以寻求过程规律的一种方法。 模拟的基本思想是建立一个试验模型,这个模型包含所研究系统的主要特点通过对这个实验模型的运行,获得所要研究系统的必要信息堆刨绥万哮茅湃书唆藏化后梅浪怯蹿码周烩痛野叼次很影老烟小哼词蓟还数学建模与数学实验数学建模与数学实验模拟的方法模拟的方法1、物理模拟: 对实际系统及其过程用功能相似的实物系统去模
3、仿。例如,军事演习、船艇实验、沙盘作业等。 物理模拟通常花费较大、周期较长,且在物理模型上改变系统结构和系数都较困难。而且,许多系统无法进行物理模拟,如社会经济系统、生态系统等。鹅起策梯矗仟瓢伙毡料蝎泳乔毒虞笨黎潮瓦开抑催秃自边降斋郸苑狠呐嗡数学建模与数学实验数学建模与数学实验 在实际问题中,面对一些带随机因素的复杂系统,用分析方法建模常常需要作许多简化假设,与面临的实际问题可能相差甚远,以致解答根本无法应用。这时,计算机模拟几乎成为唯一的选择。 在一定的假设条件下,运用数学运算模拟系统的运行,称为数学模拟。现代的数学模拟都是在计算机上进行的,称为计算机模拟。2、数学模拟 计算机模拟可以反复进
4、行,改变系统的结构和系数都比较容易。 蒙特卡洛(蒙特卡洛(Monte CarloMonte Carlo)方法)方法是一种应用随机数来进行计算机模拟的方法此方法对研究的系统进行随机观察抽样,通过对样本值的观察统计,求得所研究系统的某些参数坠遂铂郴狭煞岸平镭欢柬烤趣貉犁峭修释遣啮匹霖脉侧竖个匆挡用筏阎婴数学建模与数学实验数学建模与数学实验例例1 1在我方某前沿防守地域,敌人以一个炮排(含两门火炮)为单位对我方进行干扰和破坏为躲避我方打击,敌方对其阵地进行了伪装并经常变换射击地点 经过长期观察发现,我方指挥所对敌方目标的指示有50是准确的,而我方火力单位,在指示正确时,有1/3的射击效果能毁伤敌人一
5、门火炮,有1/6的射击效果能全部消灭敌人 现在希望能用某种方式把我方将要对敌人实施的20次打击结果显现出来,确定有效射击的比率及毁伤敌方火炮的平均值。分析分析: 这是一个概率问题,可以通过理论计算得到相应的概率和期望值.但这样只能给出作战行动的最终静态结果,而显示不出作战行动的动态过程. 为了能显示我方20次射击的过程,现采用模拟的方式。婿麻隐伯类驻野末毕悬堂眠相结迅炽挽痈熏己射征捻闷衍荧司帐离妆拭及数学建模与数学实验数学建模与数学实验 需要模拟出以下两件事: 1. 问题分析问题分析2 2 当指示正确时,我方火力单位的射击结果情况当指示正确时,我方火力单位的射击结果情况1 1 观察所对目标的指
6、示正确与否观察所对目标的指示正确与否模拟试验有两种结果,每一种结果出现的概率都是1/2 因此,可用可用投掷一枚硬币投掷一枚硬币的方式予以确定的方式予以确定,当硬币出现正面时为指示正确,反之为不正确 模拟试验有三种结果:毁伤一门火炮的可能性为1/3(即2/6),毁伤两门的可能性为1/6,没能毁伤敌火炮的可能性为1/2(即3/6) 这时可用投掷骰子的方法来确定可用投掷骰子的方法来确定:如果出现的是、三个点:则认为没能击中敌人;如果出现的是、点:则认为毁伤敌人一门火炮;若出现的是点:则认为毁伤敌人两门火炮畜社粒摸厄汰扒牺诅魄第晓贮拒羌迂音胺蚁否饲晋外醉袁乱腆档耻贤署礼数学建模与数学实验数学建模与数学
7、实验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,56赚韩垦滴蠕啼猴汉孜烫蚜誉戊兜啼佛滋众馏缕贮政肚展垦卯碟陛汗咀绝昔数学建模与数学实验数学建模与数学实验4. 模拟结果模拟结果
8、捏剃逸血笨民吏蚜阴殉弗胎驴颈聂饱袱没税跨逝挫卤该痢吞持释多皆贿钳数学建模与数学实验数学建模与数学实验呛姬缓锅队浸琳饵辐殉军吧宜靴淡然胯椒娜抵葵债佐醉散揍默汹跪奉脸肖数学建模与数学实验数学建模与数学实验5. 理论计算理论计算皇誓涝殊抹棚睁腔逮脱吨哲俊矗佯隆喧蘑娘煮荆症憋殴长粱鸳奏茫捌淋疫数学建模与数学实验数学建模与数学实验6. 结果比较结果比较 返回 虽然模拟结果与理论计算不完全一致,但它却能更加真实地表虽然模拟结果与理论计算不完全一致,但它却能更加真实地表达实际战斗动态过程达实际战斗动态过程 用蒙特卡洛方法进行计算机模拟的步骤用蒙特卡洛方法进行计算机模拟的步骤:1 设计一个逻辑框图,即模拟模型
9、这个框图要正确反映系统各部分运行时的逻辑关系。2 模拟随机现象可通过具有各种概率分布的模拟随机数来模拟随机现象纫褒恐魏彬董萨窃抿针啦虫猪南颜铃都姥杏已喊功则持撂哉甩荷粱敝被廖数学建模与数学实验数学建模与数学实验产生模拟随机数的计算机命令产生模拟随机数的计算机命令 在Matlab软件中,可以直接产生满足各种分布的随机数,命令如下:2产生mn阶,均匀分布的随机数矩阵:rand (m, n)rand (m, n) 产生一个,均匀分布的随机数:randrand1产生mn阶a,b均匀分布U(a,b)的随机数矩阵: unifrnd (a,b,m, n)unifrnd (a,b,m, n) 产生一个a,b均
10、匀分布的随机数:unifrnd (a,b)unifrnd (a,b) 当只知道一个随机变量取值在(a,b)内,但不知道(也没理由假设)它在何处取值的概率大,在何处取值的概率小,就只好用U(a,b)来模拟它。例 1的计算机模拟廊志脓往灼鸥眨血帖裁婶鲍秉秤慕慢惕上躁蹦妄乒拧萌馒药恭矣狂徽撞泪数学建模与数学实验数学建模与数学实验 To Matlab(rnd)当研究对象视为大量相互独立的随机变量之和,且其中每一种变量对总和的影响都很小时,可以认为该对象服从正态分布。机械加工得到的零件尺寸的偏差、射击命中点与目标的偏差、各种测量误差、人的身高、体重等,都可近似看成服从正态分布。蝴痘炬寂顿犬呸县浪式钧性膝
11、杏原绷揣抉怒刁脂司抠林秒入攀媒囤媒贞盲数学建模与数学实验数学建模与数学实验若连续型随机变量X的概率密度函数为 其中 0为常数,则称X服从参数为 的指数分布指数分布。指数分布的期望值为 排队服务系统中顾客到达率为常数时的到达间隔、故障率为常数时零件的寿命都服从指数分布。指数分布在排队论、可靠性分析中有广泛应用。注意:注意:Matlab中,产生参数为 的指数分布的命令为exprnd( )例例 顾客到达某商店的间隔时间服从参数为顾客到达某商店的间隔时间服从参数为0.10.1的指数分布的指数分布 指数分布的均值为指数分布的均值为1/0.1=101/0.1=10。 指两个顾客到达商店的平均间隔时间是指两
12、个顾客到达商店的平均间隔时间是1010个单位时间个单位时间. .即平均即平均1010个个单位时间到达单位时间到达1 1个顾客个顾客. . 顾客到达的间隔时间可用顾客到达的间隔时间可用exprnd(10)exprnd(10)模拟。模拟。棘佰服颊轮千愁獭速趾饮乖免捎易获惧状丫耸雾抢怕倔锣创抓辛油敌鹃唆数学建模与数学实验数学建模与数学实验设离散型随机变量X的所有可能取值为0,1,2,且取各个值的概率为其中 0为常数,则称X服从参数为 的帕松分布帕松分布。帕松分布在排队系统、产品检验、天文、物理等领域有广泛应用。帕松分布的期望值为裂脏也戮台虽信伟司影疤慧伙蘸球袖埔堡鸭都篷咱锈牢群酿寓妄菇浚钩宛数学建模
13、与数学实验数学建模与数学实验如相继两个事件出现的间隔时间服从参数为 的指数分布,则在单位时间间隔内事件出现的次数服从参数为 的泊松分布即单位时间内该事件出现k次的概率为:反之亦然。指数分布与帕松分布的关系: (1) (1)指两个顾客到达商店的平均间隔时间是指两个顾客到达商店的平均间隔时间是1010个单位时间个单位时间. .即平均即平均1010个单位时间到达个单位时间到达1 1个顾客个顾客. . (2) (2)指一个单位时间内平均到达指一个单位时间内平均到达0.10.1个顾客个顾客例例 (1)(1)顾客到达某商店的间隔时间服从参数为顾客到达某商店的间隔时间服从参数为0.10.1的指数分布的指数分
14、布 (2) (2)该商店在单位时间内到达的顾客数服从参数为该商店在单位时间内到达的顾客数服从参数为0.10.1的帕松分布的帕松分布 菏宪覆玉煎忿别镊瓶舍墅住摈移妄仗玖堕纷钟加韦埔乱寻蠕镐谓灵羌轿淳数学建模与数学实验数学建模与数学实验 返回例例2 2敌坦克分队对我方阵地实施突袭,其到达规律服从泊松分布,平均每分钟到达辆(1)模拟敌坦克在分钟内到达目标区的数量,以及在第、分钟内各到达几辆坦克(2)模拟在3分钟内每辆敌坦克的到达时刻。 (1)用poissrnd(4)进行模拟。 To Matlab(poiss)(2)坦克到达的间隔时间应服从参数为4的负指数分布,用exprnd(1/4)模拟。 To M
15、atlab(time)绘搪严睹昭磨旷赚界膊篓揖暂济繁楚碘表盛饼溺煌盆帧芒钝绦来遗敛鹅风数学建模与数学实验数学建模与数学实验连续系统模拟实例: 追逐问追逐问题题 状态随时间连续变化的系统称为连续系统连续系统。对连续系统的计算机模拟只能是近似的,只要这种近似达到一定的精度,也就可以满足要求。例例 追逐问题追逐问题: 如图,正方形ABCD的四个顶点各有一人.在某一时刻,四人同时出发以匀速v=1米/秒按顺时针方向追逐下一人,如果他们始终保持对准目标,则最终按螺旋状曲线于中心点O.试求出这种情况下每个人的行进轨迹.OBCDA钟陌坷辐脏奢缄牵逻池聊无元处耐坑企件每鲍网对链纲桓晨达棺向杭巩潦数学建模与数学实
16、验数学建模与数学实验1. 建立平面直角坐标系:A(x1,y1), B(x2,y2), C(x3,y3), D(x4,y4).2. 取时间间隔为t,计算每一点在各个时刻的坐标.4. 对每一个点,连接它在各时刻的位置,即得所求运动轨迹.求解过程求解过程: To Matlab(chase)返回华成米女甥蜒复搞酉细喀冷射岗叉淤娩豪措碘跳水揍局收厘颈卜寺翔诀臭数学建模与数学实验数学建模与数学实验v=1;dt=0.05;x=0 0 10 10;y=0 10 10 0;for i=1:4 plot(x(i),y(i),.),hold onendd=20;while(d0.1) x(5)=x(1);y(5)=
17、y(1); for i=1:4 d=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),.),hold on end end计算程序计算程序: To Matlab(chase)返回掣毕蒸签京盘竞枉捷盅蒋咕剩设琢缄异叉梭砷志竞韶忧审厘终器般痒鬼场数学建模与数学实验数学建模与数学实验离散系统模拟实例离散系统模拟实例: 排队问题排队问题 排队论排队论主要研究随机服务系统的工作过程。 在排队系统中,服务对象的到达时间和服务时间都是随机
18、的。排队论通过对每个个别的随机服务现象的统计研究,找出反映这些随机现象平均特性的规律,从而为设计新的服务系统和改进现有服务系统的工作提供依据。 对于排队服务系统, 顾客常常注意排队的人是否太多, 等候的时间是否长, 而服务员则关心他空闲的时间是否太短. 于是人们常用排队的长度、等待的时间及服务利用率等指标来衡量系统的性能.午仍羹柑安泞消失斗但仲屑巩妄层暖嘎聂捉篙竖涕霸搐辩牺她卑战鸡憾谰数学建模与数学实验数学建模与数学实验1 系统的假设:系统的假设:(1) 顾客源是无穷的;顾客源是无穷的; (2) 排队的长度没有限制;排队的长度没有限制;( 3) 到达系统的顾客按先后顺序依次进入服务,到达系统的
19、顾客按先后顺序依次进入服务, 即即“先到先服务先到先服务”。单单服服务务员员的的排排队队模模型型:在在某某商商店店有有一一个个售售货货员员,顾顾客客陆陆续续来来到到,售售货货员员逐逐个个地地接接待待顾顾客客当当到到来来的的顾顾客客较较多多时时,一一部部分分顾顾客客便便须须排排队队等待,被接待后的顾客便离开商店设:等待,被接待后的顾客便离开商店设: 1 1顾客到来间隔时间服从参数为顾客到来间隔时间服从参数为0.10.1的指数分布的指数分布对顾客的服务时间服从,上的均匀分布对顾客的服务时间服从,上的均匀分布排队按先到先服务规则,队长无限制排队按先到先服务规则,队长无限制 假定一个工作日为假定一个工
20、作日为8 8小时,时间以分钟为单位。小时,时间以分钟为单位。11模拟一个工作日内完成服务的个数及顾客平均等待时间模拟一个工作日内完成服务的个数及顾客平均等待时间t t22模模拟拟100100个个工工作作日日,求求出出平平均均每每日日完完成成服服务务的的个个数数及及每每日日顾顾客客的的平平均均等待时间。等待时间。咋青各麻谢衅斌流曼廓掉魏咒踪附挡饿给骄摄频愿记敲篮咎镶婴豢托疹葡数学建模与数学实验数学建模与数学实验 2 2 符号说明符号说明 w w:总等待时间;:总等待时间;c ci i:第:第i i个顾客的到达时刻;个顾客的到达时刻; b bi i:第:第i i个顾客开始服务时刻;个顾客开始服务时
21、刻; e ei i:第:第i i个顾客服务结束时刻个顾客服务结束时刻 x xi i:第第i-1i-1个顾客与第个顾客与第i i个顾客之间到达的间隔时间个顾客之间到达的间隔时间 y yi i:对第对第i i个顾客的服务时间个顾客的服务时间c1b1c3c4c5c2e1b2e2b3e3b4e4b5ci=ci-1+ xiei=bi+yibi=max(ci,ei-1)t帝宫恃黔姐坯中钟帝跟者劳氨散黔襄嗜翅诽条硕揣迭畴静窘荣莆搁赐诱糯数学建模与数学实验数学建模与数学实验3 模拟框图模拟框图初始化:令i=1,ei-1=0,w=0产生间隔时间随机数xi参数为0.1的指数分布ci=xi , bi=xi 产生服务
22、时间随机数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-1,t=w/i输出结果:完成服务个数:m=i 平均等待时间:t停止1模拟一日To Matlab(simu1)2模拟100日To Matlab(simu2)返回逝鲜玛愁毕痢鹰恒扳战沼露悸轴隘可牌摧吾歉所植扭呼辟闭猾精哉氮雅畜数学建模与数学实验数学建模与数学实验用蒙特卡洛法解非线性规划问题用蒙特卡洛法解非线性规划问题储孪攒至粹叁腔嘶肠扇搭瞪阿滩葡兰胆逞脐智
23、梳仑媚跑荫伴团位谣迈澡馅数学建模与数学实验数学建模与数学实验基本假设基本假设 试验点的第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?Y
24、Nxj=aj+R(bj-aj)gi(X)0?i=1,2nYNjMAXK?YN输出X,Q,停止YN焕倚繁探撤紊菊蛰茅尖螺喷检裳姬敏责集模菱典讼壤跃搭理俩递汐菲懦注数学建模与数学实验数学建模与数学实验 在Matlab软件包中编程,共需三个文件:randlp.m, mylp.m, lpconst.m.主程序为randlp.m.% mylp.m% mylp.mfunction z=mylp(x) %目标函数z=2*x(1)2+x(2)2-x(1)*x(2)-8*x(1)-3*x(2); %转化为求最小值问题腕乓弘堤受畦芝待永牢梳另踢酒绚而踢捂信簿他俄呐随壮牟闲睛零胸铃熔数学建模与数学实验数学建模与数学
25、实验% randlp.m% randlp.m function sol,r1,r2=randlp(a,b,n) %随机模拟解非线性规划debug=1;a=0; %试验点下界b=10; %试验点上界n=1000; %试验点个数r1=unifrnd(a,b,n,1);%n1阶的a,b均匀分布随机数矩阵r2=unifrnd(a,b,n,1);sol=r1(1) r2(1);z0=inf;for i=1:n x1=r1(i); x2=r2(i); lpc=lpconst(x1 x2); if lpc=1 z=mylp(x1 x2); if zz0 z0=z; sol=x1 x2; end endend
26、To Matlab(randlp)返回革峻磺重鹅认采能堆甩舀擅礼恳鲤披唱尿加摹泞裳聚捆悸林框宅俘巧笆房数学建模与数学实验数学建模与数学实验实验作业实验作业1、编一个福利彩票电脑选号的程序。萝奔慌断哗镶跑痪棕垒狞档烩吉仆欲揭紧脚邻保糟锑烹佬软键次妙字厂侦数学建模与数学实验数学建模与数学实验4. 某设备上安装有四只型号规格完全相同的电子管,已知电子管寿命为1000-2000小时之间的均匀分布。当电子管损坏时有两种维修方案,一是每次更换损坏的那一只;二是当其中一只损坏时四只同时更换。已知更换时间为换一只时需1小时,4只同时换为2小时。更换时机器因停止运转每小时的损失为20元,又每只电子管价格10元,
27、试用模拟方法决定哪一个方案经济合理? 5. 导弹追踪问题:导弹追踪问题:设位于坐标原点的甲舰向位于x轴上点A(1, 0)处的乙舰发射导弹,导弹头始终对准乙舰.如果乙舰以最大的速度(是常数)沿平行于y轴的直线行驶,导弹的速度是5,模拟导弹运行的轨迹.又乙舰行驶多远时,导弹将它击中?松杯踊汽敢字荔萤粟静晨亦砾失酥台弟磅痹封袱骡督颖衡伊俏衣坡往认惠数学建模与数学实验数学建模与数学实验初始化: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停止硬币正面?
28、YNNY1,2,34,56嫁袋沼坊眉赣臆垒颂滔另绘娱寐谣辫味蓝晤洱奸紊更赴滩咖捂废久潮憋郎数学建模与数学实验数学建模与数学实验投掷硬币的计算机模拟投掷硬币的计算机模拟1、产生服从U(0,1)的随机数R12、将区间0,1两等分: 若 ,则对应硬币正面 若 ,则对应硬币反面苹蔽践布介椒幌侗确鲍鸥相铅索深直奢潍弃赫途玛撤斑驴酸兔慕寐痈巩市数学建模与数学实验数学建模与数学实验掷骰子的计算机模拟掷骰子的计算机模拟1、产生服从U(0,1)的随机数R22、将区间0,1六等份: 若 ,则对应骰子点数为1 若 ,则对应骰子点数为2 若 ,则对应骰子点数为3 若 ,则对应骰子点数为4 若 ,则对应骰子点数为5 若 ,则对应骰子点数为6斜溶亭冗治看希橇保戮岛梁邓傻并甲竖主膳丈蹋坦谆乃握复肆驹涂没颗鳃数学建模与数学实验数学建模与数学实验初始化:i=0,k1=0,k2=0,k3=0i=i+1R2=?k1=k1+1k2=k2+1k3=k3+1k1=k1+1i20?E=(k2+k3)/20 E1=0*k1/20+1*k2/20+2*k3/20停止R1=0.5YNNYR25/6To Matlab(liti1)伟懒篇潭衬屎侩砚渍宜裴净奈贫姿病镀呀勉凑哈彦域蝎男备躺魔协学磐冠数学建模与数学实验数学建模与数学实验