ch12 数字仿真实验
- 格式:doc
- 大小:1.03 MB
- 文档页数:26
实验十二数字仿真实验 (386)12.1数字仿真的基本概念 (386)12.1.1 所谓数字仿真 (386)12.1.2 数字仿真的分类 (387)12.1.3 数字仿真的原理 (387)12.2 数字仿真的方法 (388)12.2.1 解决计算机模拟的一般步骤: (388)12.2.2蒙特卡罗法 (388)12.2.3离散型随机变量的模拟 (392)12.2.4连续型随机变量的模拟 (400)12.3 系统仿真软件SIMULINK (404)12.3.1 SIMULINK简介 (404)12.3.2 SIMULINK建模 (405)12.3.3 SIMULINK仿真 (407)实验任务 (408)1实验十二数字仿真实验学习目的了解计算机模拟仿真在解决实际问题时的重要性,理解使用计算机仿真的原理及方法。
掌握计算机模拟仿真的三大类方法:蒙特卡罗法、连续系统模拟和离散事件系统模拟。
会利用MATLAB进行模拟仿真实验。
实验指导在实际问题中,我们通常会面对一些带随机因素的复杂系统,用分析方法建模常常需要作许多简化假设,这样进行处理过后的模型与我们面临的实际问题可能相差很远,以致求解得到答案根本无法应用,这时,计算机模拟几乎成为唯一的选择。
12.1数字仿真的基本概念我们将一些具有特定的功能、相互之间有一定的内在联系的对象所组成的总体称为一个系统。
模拟就是利用物理的、数学的模型类比、模仿现实系统及其演变过程,以寻求变化规律的一种方法。
模拟的基本思想是建立一个实验的模型,这个模型包含所研究系统的主要特点,这样做的目的就是通过对这个实验模型的运行,获得所要研究系统的必要信息。
12.1.1 所谓数字仿真数字仿真是利用计算机对一个实际系统的结构和行为进行动态演示,以评价或预测该系统的行为效果。
它是解决较复杂的实际问题的一条有效途径。
数字仿真的一般过程是先对研究对象进行数学描述,然后构建仿真算法,最后在计算机中编程并运行实现。
对比于物理模拟通常花费较大、周期较长,且在物理模型上改变系统结构和系数都较困难的诸多缺陷,数字模拟花费较少、周期较短,且易修改、可重用,有更强的系统适应能力。
但是计算机模拟也有缺陷,比如系统数学模型不易建立、程序调试复杂等。
数字仿真可以用于研制产品或设计系统的全过程中,包括方案论证、技术指标确定、设计分析、生产制造、试验测试、维护训练、故障处理等各个阶段。
具体来说,下列情形适用于数字仿真:(1)在一个实际系统还没有建立起来之前,要对系统的行为或结果进行分析研究时,数字仿真是一种行之有效的方法。
(2)在有些真实系统上做实验会影响系统的正常运行,这时进行计算机模拟就是为了避免给实际系统带来不必要的损失。
如在生产中任意改变工艺参数可能会导致废品,在经济活动中随意将一个决策付诸行动可能会引起经济混乱。
(3)当人是系统的一部分时,他的行为往往会影响实验的效果,这时运用系统进行仿真研究,可以排除人的主观因素的影响。
(4)在实际系统上做实验时,由于系统误差和偶然误差的存在,我们很难正确地判断实验结果的好坏,这时运用计算机模拟,就可以保证每次操作的条件相同,排除误差。
38612.1.2 数字仿真的分类计算机模拟分为动态模拟和静态模拟,数值分析中的蒙特卡罗法就是典型的静态模拟,动态模拟可以分为连续系统模拟和离散事件系统模拟。
在连续系统模拟和离散事件系统模拟中时间具有重要作用,我们都是要观察系统在时间过程中的变化。
连续系统模拟研究系统的状态随时间连续变化的情况,在解决实际问题时,一般要建立微分方程模型,先确定系统的连续状态变化量,然后将它在时间上进行适当的离散量化处理,并由此模拟系统的运行状态。
而离散事件系统模拟讨论的是系统状态只在一些离散时间点上,由于随机时间的推进而发生变化,其问题解决模型一般用流程图或网络来表示。
连续系统模拟中虽然有时也考虑一些随机作用,但经常还是把它当作确定性问题去考虑,而在离散事件系统模拟中事件的出现和系统状态变量几乎总都是随机的。
12.1.3 数字仿真的原理现实世界充满不确定性,我们所研究的现实对象往往难以摆脱随机因素的影响。
概率论是用数学的思想和方法处理和研究随机现象的一个有效的工具。
但有时它还难以用来处理复杂系统中的随机性。
数字仿真是使用计算机研究和处理复杂系统的随机性一条重要途径。
对随机现象进行模拟,实质上要给出随机变量的模拟。
随机数的产生方法主要有以下几种:物理方法:一是放射性物质随机蜕变;二是电子管回路的热噪声,其噪声电压的大小表示不同的随机数。
查随机数表(Rand Table)(1955年由美国兰德公司编制,有随机数100万个。
)随机数表中的数字具有均匀的随机性,没有周期性。
按照一定算法在计算机内产生伪随机数:由于第i+1个随机数是由第i个按一定公式推算出来的,故并非真正的随机数。
如表12-1所示,利用MATLAB中命令可生成各种分布下产生随机数。
表12-1 MATLAB中各种分布下随机数生成命令(1)当研究对象视为大量相互独立的随机变量之和,且其中每一种变量对总和的影响都很小时,可以认为该对象服从正态分布。
(2)考试分数的偏差、射击命中点与目标的偏差、人的身高、体重等,都可近似看成服从正态分布。
(3)排队服务系统中顾客到达率为常数时的到达间隔、故障率为常数时零件的寿命都服从指数分布。
指数分布在排队论、可靠性分析中有广泛应用。
(4)涉及到排队系统、产品检验时可用到泊松分布。
38712.2 数字仿真的方法12.2.1 解决计算机模拟的一般步骤:进行数字仿真一般要进过四个步骤:系统分析,模型构造,运行与改进和输出结果。
D图12-1 数字仿真步骤流程图12-1中A表示系统分析,B表示模型构造,C表示运行与改进,D表示输出结果。
第一步:系统分析,明确目标。
就是要明确问题和提出总体方案。
首先要把被仿真系统的内容表达清楚,弄清仿真的目的,然后选择描述这些目标的主要环节和状态变量,明确定义所研究问题的范围、边界和初始条件,并充分估计初始条件对系统主要性能的影响。
第二步:模型构造、采集数据。
包括建立模型、收集数据、编写程序、程序验证和模型确认等。
建立模型就是选择合适的仿真方法,如时间步长法、事件表法等,确定系统的初始状态,设计整个系统的仿真流程。
最后选择合适的通用语言或仿真语言编写、调试程序。
第三步:模型的运行与改进。
首先确定一些具体的运行方案,如初始条件、参数、步长、重复次数等,然后输入数据,运行程序,直到符合实际系统的要求及精度为止。
第四步:模型输出、统计分析。
包括提供文件的清单,记录重要的中间结果,输出格式要有利于用户了解整个仿真过程,分析和使用仿真结果。
12.2.2蒙特卡罗法蒙特卡罗法(Random simulation)又称随机抽样技巧或统计试验方法,它利用随机数进行统计试验,以求得的统计特征值(如均值、概率等)作为待解决问题的数值解。
蒙特卡罗法的基本思想原理是首先建立一个概率模型,使所求问题的解正好是该模型的参数或其他有关的特征量。
然后通过模拟、统计,即多次随机抽样实验,统计出某事件发生的百分比。
只388389要实验次数很大,该百分比便近似于事件发生的概率。
一、蒙特卡罗法的原理根据车比雪夫定理,设1X ,2X ,, ,n X 是相独立的随机变量序列,它们服从相同的分布,且有有限的数学期望a 和方差 ,则1X ,2X ,, ,n X 的算术平均值当时∞→n 按概率1收敛于a ,即对于任意0>ε有:111lim=⎭⎬⎫⎩⎨⎧<-∑=∞→εn i i n a x n P 由中心极限定理得到:⎰∑∞+∞--=∞→=⎪⎪⎭⎪⎪⎬⎫⎪⎪⎩⎪⎪⎨⎧≤-dt e a x n P t n i i n 212211limπεσ即当n 很大时,σa x n ni i -∑=11近似服从标准正态分布。
二、蒙特卡罗法的实例1、浦丰(Buffon)投针问题例12.1如图12-2所示,若干条相互平行线间的距离为2a ,针的长度为2()l l a <,将针投出后其与平行线相交的概率为P ,求出其概率。
模型建立 通过计算可知针与平行线相交的概率为2l N P a nπ=≈ 将针投N 次,若有n 次与平行线相交,则可用n N 作为P 的近似值。
由此可计算出π的近似值为)(22nN a l aP l ≈=π 要使结果更加准确就需使n 尽量大一些。
计算机模拟 如图12-2所示,设针投到地面上的位置可以用一组参数(x ,θ)来描述,x 为针中心的坐标,θ为针与平行线的夹角。
任意投针,就是意味着x 与θ都是任意取的,但x 的范围限于[0,a ],夹角θ的范围限于[0,π]。
假设x 是服从区间[0,a ]上的均匀分布,θ是服从区间[0,π]上的均匀分布。
在此情况下,针与平行线相交的数学条件是θsin ⋅≤l x按照某种抽样法,产生随机变量的可能值,例如进行N 次抽样,得到样本值()i i x θ,,其中1,2i N = ,,,统计出满足不等式()sin i i x l θ≤的次数()n n N <,然后利用MATLAB 进行计算机编程模拟。
%浦丰(Buffon)投针问题程序a=2; % 2a 为平行线间距离图12-2 针在平行线间的位置390 l=1; % 2l 为针长 N=100000; % N 为试验次数 x=a*rand(1,N); % 针中心纵坐标 theta=pi*rand(1,N); % 针倾斜角 n=sum(x<=sin(theta)); % n 为相交次数 P=n/N %相交的概率 C=2*l/a*N/n % 圆周率的近似值当取1=l ,2=d 时,10000=n 时,模拟得到:概率0.3181P =,圆周率 3.1433π=, 这与真实值已经很接近了。
2、定积分计算我们知道在近似计算中Simpson 方法是一种常用的数值积分方法,但对于不规则的被积函数及多维情形这种方法往往无能为力。
而蒙特卡洛方法计算这种积分就较为方便了,虽然其精度较差,但在某些场合往往有其出现的必要性。
考虑计算积分⎰=badx x g I )(,其中b x a c x g ≤≤≤≤,)(0为计算上述积分I ,我们考虑取矩形区域Ω,}0,:),{(c y b x a y x ≤≤≤≤=Ω设),(Y X 为在Ω上均匀分布的随机变量,它有概率密度,1(,)()(,)0X Y x y c b a f x y else ⎧∈Ω⎪-=⎨⎪⎩则),(Y X 落入)}(,:),{(x g y b x a y x S ≤≤≤=的概率p 为)(a b c IS p -=Ω=的面积的面积 即p a b c I )(-=.那么我们只要能估计出p 即可给出I 的近似值。
如图12-3所示,为估计p ,产生N 个相互独立的在Ω上均匀分布的随机数),,(11Y X,),,(22 Y X ),(N N Y X 。