数学建模与数学实验 计算机模拟
数学建模与数学实验 计算机模拟
实验目的 学习计算机模拟的基本过程与方法. 验内器 1.模拟的概念, 2.产生随机数的计算机命令, 3.计算机模拟实例, 4,实验作业
实验目的 实验内容 学习计算机模拟的基本过程与方法. 1.模拟的概念. 4.实验作业. 3.计算机模拟实例. 2.产生随机数的计算机命令.
计算机模拟实例 离散系统模拟实例排队问题 连续系统模拟实例:追逐问题 用蒙特卡罗法解非线性规划问题 返回
连续系统模拟实例: 追逐问题 离散系统模拟实例: 排队问题 用蒙特卡罗法解非线性规划问题 返回 计算机模拟实例
模拟的概念 模拟就是利用物理的、数学的模型来类比、模仿现实 系统及其演变过程,以寻求过程规律的一种方法 模拟的基本思想是建立一个试验的模型,这个模型包 含所研究系统的主要特点.通过对这个实验模型的运行 获得所要研究系统的必要信息
模拟的概念 模拟就是利用物理的、数学的模型来类比、模仿现实 系统及其演变过程,以寻求过程规律的一种方法. 模拟的基本思想是建立一个试验的模型,这个模型包 含所研究系统的主要特点.通过对这个实验模型的运行, 获得所要研究系统的必要信息
模拟的方法 1.物理模拟: 对实际系统及其过程用功能相似的实物系统去模仿 例如,军事演习、船艇实验、沙盘作业等 物理模拟通常花费较大、周期较长,且在物理模 型上改变系统结构和系数都较困难.而且,许多系统 无法进行物理模拟,如社会经济系统、生态系统等
模拟的方法 1.物理模拟: 对实际系统及其过程用功能相似的实物系统去模仿. 例如,军事演习、船艇实验、沙盘作业等. 物理模拟通常花费较大、周期较长,且在物理模 型上改变系统结构和系数都较困难.而且,许多系统 无法进行物理模拟,如社会经济系统、生态系统等.
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:要模拟的打击次数: k1:没击中敌人火炮的射击总数; k2:击中敌人一门火炮的射击总数;k3:击中敌人两门火炮的射击总数 E:有效射击比率; E1:20次射击平均每次毁伤敌人的火炮数 3.模拟框图初始化0,=0,k=0.k-=0 1=计+1 N <硬币正面 骰子点数? 6 k人+1[k=+1k+1kk 202y (k2+k3) E 20 E1=0×+1 20+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.模拟结果 试验 投硬币 小 指示掷骰子 消灭敌人火炮数 序号结果 确 不正确结果 4 4567 正正反正正反正 2 8 正 10 反反
4. 模拟结果 试验 消灭敌人火炮数 序号 投硬币 结 果 指示 正确 指 示 不正确 掷骰子 结 果 0 1 2 1 正 ∨ 4 ∨ 2 正 ∨ 4 ∨ 3 反 ∨ ∨ 4 正 ∨ 1 ∨ 5 正 ∨ 2 ∨ 6 反 ∨ ∨ 7 正 ∨ 3 ∨ 8 正 ∨ 6 ∨ 9 反 ∨ ∨ 10 反 ∨ ∨