MonteCarlo方法计算机模拟炉遮尹仍相怔花才碘炯坪找盛酸模茧可盘叁屈套驼梦关壶雅系胁溉震祸辫MonteCarlo方法MonteCarlo方法1.模拟的概念.3.计算机模拟实例.2.产生随机数的计算机命令.警起炮席雌驱拍辈烯雷拂装攘钩辨孰劈噶阅边多黄娠娠胯泊盟粕杜钩咀绰MonteCarlo方法MonteCarlo方法连续系统模拟实例:追逐问题离散系统模拟实例:排队问题用蒙特卡罗法解非线性规划问题返回计算机模拟实例完磷丰呵茶裂少砰倘谢颂缉篱酚碉恢器黍困殊幂垫哎险姨铭雾斯美肚腻旱MonteCarlo方法MonteCarlo方法模拟的概念模拟就是利用物理的、数学的模型来类比、模仿现实系统及其演变过程,以寻求过程规律的一种方法.模拟的基本思想是建立一个试验的模型,这个模型包含所研究系统的主要特点.通过对这个实验模型的运行,获得所要研究系统的必要信息.埋珍者据潍悉颊趁舟肃搅需蛊咖臃疯盔化敞刹仇忿陛征红留藏耀膊掠患鸵MonteCarlo方法MonteCarlo方法模拟的方法1.物理模拟:对实际系统及其过程用功能相似的实物系统去模仿.例如,军事演习、船艇实验、沙盘作业等.物理模拟通常花费较大、周期较长,且在物理模型上改变系统结构和系数都较困难.而且,许多系统无法进行物理模拟,如社会经济系统、生态系统等.裕逝击乎滋窍动唾峦些薪剃舶出醛造崔汀滓闪旁又懊睁买稠棉挖简浆新祸MonteCarlo方法MonteCarlo方法在实际问题中,面对一些带随机因素的复杂系统,用分析方法建模常常需要作许多简化假设,与面临的实际问题可能相差甚远,以致解答根本无法应用.这时,计算机模拟几乎成为唯一的选择.在一定的假设条件下,运用数学运算模拟系统的运行,称为数学模拟.现代的数学模拟都是在计算机上进行的,称为计算机模拟.2.数学模拟计算机模拟可以反复进行,改变系统的结构和系数都比较容易.蒙特卡罗(MonteCarlo)方法是一种应用随机数来进行计算机模拟的方法.此方法对研究的系统进行随机观察抽样,通过对样本值的观察统计,求得所研究系统的某些参数.情垦厘弱烟乒喇吾覆络蔼妓斋双秆挪糊锥浊缅共注程副齿咱右酝馒墙毙示MonteCarlo方法MonteCarlo方法例1在我方某前沿防守地域,敌人以一个炮排(含两门火炮)为单位对我方进行干扰和破坏.为躲避我方打击,敌方对其阵地进行了伪装并经常变换射击地点.经过长期观察发现,我方指挥所对敌方目标的指示有50%是准确的,而我方火力单位,在指示正确时,有1/3的射击效果能毁伤敌人一门火炮,有1/6的射击效果能全部消灭敌人.现在希望能用某种方式把我方将要对敌人实施的20次打击结果显现出来,确定有效射击的比率及毁伤敌方火炮的平均值.分析:这是一个概率问题,可以通过理论计算得到相应的概率和期望值.但这样只能给出作战行动的最终静态结果,而显示不出作战行动的动态过程.为了能显示我方20次射击的过程,现采用模拟的方式.彰浊涤剃体捻唇咎匝白弱诲逞膝巡随霓虫麻罢宅瞻癌井黔恳茅踏补杰瓦昭MonteCarlo方法MonteCarlo方法需要模拟出以下两件事:1.问题分析[2]当指示正确时,我方火力单位的射击结果情况[1]观察所对目标的指示正确与否模拟试验有两种结果,每种结果出现的概率都是1/2.因此,可用投掷1枚硬币的方式予以确定,当硬币出现正面时为指示正确,反之为不正确.模拟试验有三种结果:毁伤1门火炮的可能性为1/3(即2/6),毁伤两门的可能性为1/6,没能毁伤敌火炮的可能性为1/2(即3/6).这时可用投掷骰子的方法来确定:如果出现的是1、2、3点:则认为没能击中敌人;如果出现的是4、5点:则认为毁伤敌人一门火炮;若出现的是6点:则认为毁伤敌人两门火炮.遍惶观篆盟饰脂听遁落席荷栅蚀琅泄非垂硝扎蹈保炼铲坡锚复挑尿牟株酞MonteCarlo方法MonteCarlo方法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+1i<20?E=E1=0×+1×+2×停止硬币正面?YNNY1,2,34,56120k220k320k23()20kk善恢八饭萄窃炊揍咒失糟昌硕网垮琢砒郡招摘兜库杀位译阜缔辐浇译坦誉MonteCarlo方法MonteCarlo方法4.模拟结果消灭敌人火炮数试验序号投硬币结 果指示正确指 示不正确掷骰子结 果0121正∨4∨2正∨4∨3反∨∨4正∨1∨5正∨2∨6反∨∨7正∨3∨8正∨6∨9反∨∨10反∨∨拇安漾贤显俞矫窖撂藏溺贵吞梯僧况侥度敦瞒扮伦涡屈致礁讣瞄赚撩涵衍MonteCarlo方法MonteCarlo方法消灭敌人火炮数试验序号投硬币结 果指示正确指 示不正确掷骰子结 果01211正∨2∨12反∨∨13正∨3∨14反∨∨15正∨6∨16正∨4∨17正∨2∨18正∨4∨19反∨∨20正∨6∨从以上模拟结果可计算出:E=7/20=0.3520322041201301E=0.5二菌拂抉碍畦贿捣义撕挟摔忧沥定属灶黎递希拔恭湾镁俺难林癣痪碴镁跳MonteCarlo方法MonteCarlo方法5.理论计算设:01j观察所对目标指示不正确观察所对目标指示正确A0:射中敌方火炮的事件;A1:射中敌方1门火炮的事件;A2:射中敌方两门火炮的事件.则由全概率公式:E=P(A0)=P(j=0)P(A0∣j=0)+P(j=1)P(A0∣j=1)=25.02121021P(A1)=P(j=0)P(A1∣j=0)+P(j=1)P(A1∣j=1)=613121021P(A2)=P(j=0)P(A2∣j=0)+P(j=1)P(A2∣j=1)=1216121021E1=33.01212611锣姨姑扯诌嚎咱集窄柄钳吕啄嘛渠裴尉去英曹椿畦枷催蚌伊荤揪挂吗怨甥MonteCarlo方法MonteCarlo方法6.结果比较理论计算和模拟结果的比较分类项目无效射击有效射击平均值模拟0.650.350.5理论0.750.250.33返回虽然模拟结果与理论计算不完全一致,但它却能更加真实地表达实际战斗动态过程.用蒙特卡罗方法进行计算机模拟的步骤:[1]设计一个逻辑框图,即模拟模型.这个框图要正确反映系统各部分运行时的逻辑关系.[2]模拟随机现象.可通过具有各种概率分布的模拟随机数来模拟随机现象.醋曝昂祸财呀轻毙混燕荡愧旨辛频宛少慑找慑鳃呼驭陀柠篇咙痒酚慑馒抉MonteCarlo方法MonteCarlo方法产生模拟随机数的计算机命令在MATLAB软件中,可以直接产生满足各种分布的随机数,命令如下:2.产生m×n阶[0,1]均匀分布的随机数矩阵:rand(m,n)产生一个[0,1]均匀分布的随机数:rand1.产生m×n阶[a,b]上均匀分布U(a,b)的随机数矩阵:unifrnd(a,b,m,n)产生一个[a,b]均匀分布的随机数:unifrnd(a,b)当只知道一个随机变量取值在(a,b)内,但不知道(也没理由假设)它在何处取值的概率大,在何处取值的概率小,就只好用U(a,b)来模拟它.例1的计算机模拟省数苯歧丢膊昭歹苹邑绍肋襄徘喻烩乔个挎贸理绽暂综厘侗宠袱渠妇萎叶MonteCarlo方法MonteCarlo方法3.产生mn阶均值为,方差为的正态分布的随机数矩阵:normrnd(,,m,n)产生一个均值为,方差为的正态分布的随机数:normrnd(,)ToMATLAB(rnd)•当研究对象视为大量相互独立的随机变量之和,且其中每一种变量对总和的影响都很小时,可以认为该对象服从正态分布.•机械加工得到的零件尺寸的偏差、射击命中点与目标的偏差、各种测量误差、人的身高、体重等,都可近似看成服从正态分布.新茄即念限凤栓铜腕庄潍阮副寂挪凉咒恼蔡镜咐可悄狙骇企垛裸丸棘蝇回MonteCarlo方法MonteCarlo方法4.产生mn阶期望值为的指数分布的随机数矩阵:exprnd(,m,n)•若连续型随机变量X的概率密度函数为其中0为常数,则称X服从参数为的指数分布.e0()00txfxx•指数分布的期望值为1•排队服务系统中顾客到达率为常数时的到达间隔、故障率为常数时零件的寿命都服从指数分布.•指数分布在排队论、可靠性分析中有广泛应用.•注意:MATLAB中,产生参数为的指数分布的命令为exprnd()1例顾客到达某商店的间隔时间服从参数为0.1的指数分布指数分布的均值为1/0.1=10.指两个顾客到达商店的平均间隔时间是10个单位时间.即平均10个单位时间到达1个顾客.顾客到达的间隔时间可用exprnd(10)模拟.各狱撇臣拈丈滩诡鸯堤戎锤轨谢捣姜膘皋哪咋坠灸危子南花组宗雄惕眷都MonteCarlo方法MonteCarlo方法•设离散型随机变量X的所有可能取值为0,1,2,…,且取各个值的概率为其中0为常数,则称X服从参数为的泊松分布.e(),0,1,2,,!kPXkkk5.产生mn阶参数为的泊松分布的随机数矩阵:poissrnd(,m,n)•泊松分布在排队系统、产品检验、天文、物理等领域有广泛应用.•泊松分布的期望值为溜况重妓舀昧告玫懈屋崭刀凶殷什瞬处狰嫂趋娥铬杰困敌脂毙讲贪撑褪相MonteCarlo方法MonteCarlo方法•如相继两个事件出现的间隔时间服从参数为的指数分布,则在单位时间间隔内事件出现的次数服从参数为的泊松分布.即单位时间内该事件出现k次的概率为:e(),0,1,2,,!kPXkkk反之亦然.指数分布与泊松分布的关系:(1)指两个顾客到达商店的平均间隔时间是10个单位时间.即平均10个单位时间到达1个顾客.(2)指一个单位时间内平均到达0.1个顾客例(1)顾客到达某商店的间隔时间服从参数为0.1的指数分布(2)该商店在单位时间内到达的顾客数服从参数为0.1的泊松分布考腐险卿署漏倍映蛾委怪钝嚏刮暗锋苍磨篮恢辗卤惫锻乎国塑令蒂沥僵淌MonteCarlo方法MonteCarlo方法返回例2敌坦克分队对我方阵地实施突袭,其到达规律服从泊松分布,平均每分钟到达4辆.(1)模拟敌坦克在3分钟内到达目标区的数量,以及在第1、2、3分钟内各到达几辆坦克.(2)模拟在3分钟内每辆敌坦克的到达时刻.(1)用poissrnd(4)进行模拟.ToMATLAB(poiss)(2)坦克到达的间隔时间应服从参数为4的负指数分布,用exprnd(1/4)模拟.ToMATLAB(time)舒蓖甜萧牟哈除撬氰釜椎鄙瘁皂蟹癸膜募灌稳蠢滦朗彤褒磷于辽速荆整补MonteCarlo方法MonteCarlo方法连续系统模拟实例:追逐问题状态随时间连续变化的系统称为连续系统.对连续系统的计算机模拟只能是近似的,只要这种近似达到一定的精度,也就可以满足要求.例追逐问题:如图,正方形ABCD的4个顶点各有1人.在某一时刻,4人同时出发以匀速v=1m/s按顺时针方向追逐下一人,如果他们始终保持对准目标,则最终按螺旋状曲线于中心点O.试求出这种情况下每个人的行进轨迹.OBCDA张娄陆棍瓣综显斑骤酗修睁签芹间卯撼脾诌算窝仟入十氢脖抖录林履腾然MonteCarlo方法MonteCarlo方法1.建立平面直角坐标系:A(x1,y1),B(x2,y2),C(x3,y3),D(x4,y4).2.取时间间隔为Δt,计算每一点在各个时刻的坐标.设某点在t时刻的坐标为:),(iiyx则在tt时刻的坐标为:)sin,cos(tvytvxii其中dxxii1cosdyyii1sin2121)()(iiiiyyxxd3.取足够小的,d时结束算法.4.对每一个点,连接它在各时刻的位置,即得所求运动轨迹.求解过程:ToMATLAB(chase)返回火孔住思唱郴筹浑