2.数学模拟 在一定的假设条件下,运用数学运算模拟系统的运 行,称为数学模拟.现代的数学模拟都是在计算机上进 行的,称为计算机模拟. 计算机模拟可以反复进行,改变系统的结构和系数 都比较容易 在实际问题中,面对一些带随机因素的复杂系统, 用分析方法建模常常需要作许多简化假设,与面临的实 际问题可能相差甚远,以致解答根本无法应用.这时, 计算机模拟几乎成为唯一的选择. 蒙特卡罗(Monte Carlo)方法是一种应用随机数来 进行计算机模拟的方法.此方法对研究的系统进行随机 观察抽样,通过对样本值的观察统计,求得所研究系统 的某些参数
在实际问题中,面对一些带随机因素的复杂系统, 用分析方法建模常常需要作许多简化假设,与面临的实 际问题可能相差甚远,以致解答根本无法应用.这时, 计算机模拟几乎成为唯一的选择. 在一定的假设条件下,运用数学运算模拟系统的运 行,称为数学模拟.现代的数学模拟都是在计算机上进 行的,称为计算机模拟. 2.数学模拟 计算机模拟可以反复进行,改变系统的结构和系数 都比较容易. 蒙特卡罗(Monte Carlo)方法是一种应用随机数来 进行计算机模拟的方法.此方法对研究的系统进行随机 观察抽样,通过对样本值的观察统计,求得所研究系统 的某些参数.
例1在我方某前沿防守地域,敌人以一个炮排(含两 门火炮)为单位对我方进行干扰和破坏.为躲避我方 打击,敌方对其阵地进行了伪装并经常变换射击地 点. 经过长期观察发现,我方指挥所对敌方目标的指 示有50%是准确的,而我方火力单位,在指示正确 时,有1/3的射击效果能毁伤敌人一门火炮,有1/6 的射击效果能全部消灭敌人, 现在希望能用某种方式把我方将要对敌人实施 的20次打击结果显现出来,确定有效射击的比率及 毁伤敌方火炮的平均值. 分析:这是一个概率问题,可以通过理论计算得到相应的概 率和期望值.但这样只能给出作战行动的最终静态结果,而显 示不出作战行动的动态过程, 为了能显示我方20次射击的过程,现采用模拟的方式
例1 在我方某前沿防守地域,敌人以一个炮排(含两 门火炮)为单位对我方进行干扰和破坏.为躲避我方 打击,敌方对其阵地进行了伪装并经常变换射击地 点. 经过长期观察发现,我方指挥所对敌方目标的指 示有50%是准确的,而我方火力单位,在指示正确 时,有1/3的射击效果能毁伤敌人一门火炮,有1/6 的射击效果能全部消灭敌人. 现在希望能用某种方式把我方将要对敌人实施 的20次打击结果显现出来,确定有效射击的比率及 毁伤敌方火炮的平均值. 分析:这是一个概率问题,可以通过理论计算得到相应的概 率和期望值.但这样只能给出作战行动的最终静态结果,而显 示不出作战行动的动态过程. 为了能显示我方20次射击的过程,现采用模拟的方式.
1.问题分析 需要模拟出以下两件事: [1]观察所对目标的指示正确与否 模拟试验有两种结果,每种结果出现的概率都是1/2. 因此,可用投掷1枚硬币的方式予以确定,当硬币出现正面时为 指示正确,反之为不正确。 [2]当指示正确时,我方火力单位的射击结果情况 模拟试验有三种结果:毁伤1门火炮的可能性为1/3(即2/6),毁 伤两门的可能性为1/6,没能毁伤敌火炮的可能性为1/2(即3/6). 这时可用投掷骰子的方法来确定: 如果出现的是1、2、3点:则认为没能击中敌人: 如果出现的是4、5点:则认为毁伤敌人一门火炮: 若出现的是6点:则认为毁伤敌人两门火炮
需要模拟出以下两件事: 1. 问题分析 [2] 当指示正确时,我方火力单位的射击结果情况 [1] 观察所对目标的指示正确与否 模拟试验有两种结果,每种结果出现的概率都是1/2. 因此,可用投掷1枚硬币的方式予以确定,当硬币出现正面时为 指示正确,反之为不正确. 模拟试验有三种结果:毁伤1门火炮的可能性为1/3(即2/6),毁 伤两门的可能性为1/6,没能毁伤敌火炮的可能性为1/2(即3/6). 这时可用投掷骰子的方法来确定: 如果出现的是1、2、3点:则认为没能击中敌人; 如果出现的是4、5点:则认为毁伤敌人一门火炮; 若出现的是6点:则认为毁伤敌人两门火炮.
2.符号假设 i:要模拟的打击次数; k:没击中敌人火炮的射击总数; 2:击中敌人一门火炮的射击总数;:击中敌人两门火炮的射击总数. E:有效射击比率; E1:20次射击平均每次毁伤敌人的火炮数 3.模拟框图 初始化:=0,k1=0,k2=0,k3=0 i=i计1 y硬币正面 N 1,2:3骰子点数 4,5 6 k=k+1k2=k2+1 k3=k3+1 k=k1+1 i<202 Y NI E- (k2+k3) 20 0分1×给2×易 20 停止
2. 符号假设 i:要模拟的打击次数; k1:没击中敌人火炮的射击总数; k2:击中敌人一门火炮的射击总数;k3:击中敌人两门火炮的射击总数. E:有效射击比率; E1:20次射击平均每次毁伤敌人的火炮数. 3. 模拟框图 初始化:i=0, k1=0, k2=0, k3=0 i=i+1 骰子点数? k1=k1+1 k2=k2+1 k3=k3+1 k1=k1+1 i<20? E= E1= 0× +1 × +2 × 停止 硬币正面? Y N N Y 1,2,3 4,5 6 1 20 k 2 20 k 3 20 k 2 3 ( ) 20 k k +
4.模拟结果 试验 投硬币 指示 指示 掷骰子 消灭敌人火炮数 序号 结果 正确 不正确 结果 2 1 正 4 2 正 V 4 3 反 V V 4 正 1 正 V 6 反 7 正 3 正 6 9 反 V 10 反
4. 模拟结果 试验 消灭敌人火炮数 序号 投硬币 结 果 指示 正确 指 示 不正确 掷骰子 结 果 0 1 2 1 正 ∨ 4 ∨ 2 正 ∨ 4 ∨ 3 反 ∨ ∨ 4 正 ∨ 1 ∨ 5 正 ∨ 2 ∨ 6 反 ∨ ∨ 7 正 ∨ 3 ∨ 8 正 ∨ 6 ∨ 9 反 ∨ ∨ 10 反 ∨ ∨