数学建模之计算机仿真
例2 (赶火车过程仿真)一列火车从A站经过B站开
往C站,某人每天赶往B站乘这趟火车。已知火车从
A站到B站的运行时间是均值为30min、标准差为
2min的正态随机变量。火车大约在下午1点离开A
站。火车离开时刻的频率分布和这个人到达B站时
刻的频率分布如下表所示。问他能赶上火车的概率
有多大?
出发时刻
1:00
泊松分布 P(λ )
R = poissrnd (λ, m , n)
以上语句均产生m× n 的矩阵.
2:案例分析
例1: unifrnd(2,3)
unifrnd(1,32,1,4)
normrnd(1,2)
normrnd(1,2,2,3)
ans =2.8132
ans =1.3057
ans =
(dynamic simulation).数值积分中的蒙特卡洛方法是
典型的静态仿真.动态仿真又分为连续系统仿真和离
散系统仿真.连续系统是指状态变量随着时间连续变
化的系统,例如传染病的检测与预报系统.离散系统是
指系统状态变量只在有限的时间点或可数的时间点上
发生变化的系统,例如排队系统.
概述
仿真系统,必须设置一个仿真时钟
过于复杂,这时计算机仿真可能提供简单可行的求解方法.
(3)希望能在较短的时间内观察到系统发展的全过程,以估
计某些参数对系统行为的影响.
(4)难以在实际环境中进行试验和观察时,计算机仿真是唯
一可行的方法,如太空飞行的研究.
(5)需要对系统或过程进行长期运行比较,从大量方案中寻
找最优方案.
计算机仿真案例1
r=rand(1,10);
for i=1:10;
if r(i)<0.4
n(i)=0;
elseif 0.4<=r(i)&r(i)<0.7
n(i)=1;
else n(i)=2;
end;
end
r
n
三:连续系统的模拟-时间步长法
对连续系统的计算机模拟是近似地获取系统状态
在一些离散时刻点上的数值.在一定假设条件下,
四: 离散系统的模拟-事件步长法
五:蒙特卡洛方法
一: 准备知识:随机数的产生
由于仿真研究的实际系统要受到多种随机因素的
作用和影响,在仿真过程中必须处理大量的随机因
素.要解决此问题的前提是确定随机变量的类型和
选择合适的随机数产生的方法.
对随机现象进行模拟,实质是要给出随机变量的模
拟,也就是说要利用计算机随机产生一系列数值,使
(simulate clock),它能将时间从一个时刻
向另一个时刻进行推进,并且能随时反映
系统时间的当前值.其中,模拟时间推进
方式有两种:时间步长法(均匀间隔时间推
进法,连续系统常用)和事件步长法(下次事
件推进法,离散系统常用) .
主要内容
一:
准备知识:随机数的产生
二:随机变量的模拟
三:连续系统的模拟-时间步长法
的影响.计算机不但使问题的求解变得更加方便、快
捷和精确,而且使得解决实际问题的领域更加广
泛.计算机适合于解决那些规模大、难以解析化以及
不确定的数学模型.例如对于一些带随机因素的复杂
系统,用分析方法建模常常需要作许多简化假设,与
面临的实际问题可能相差甚远,以致解答根本无法应
用,这时仿真几乎成为人们的唯一选择.在历届的美
n3=poissrnd(4),n=n1+n2+n3
(2) 由排队论知识,敌机到达规律服从泊松分布等价于敌
机到达港口的间隔时间服从参数为1/4的指数分布,故可由
指数分布模拟每架飞机的到达时刻.
•注:如果单位时间发生的次数(如到达的人数)服从参数为r的
泊松分布,则任连续发生的两次时间的间隔时间序列服从参数为r
-0.2141 0.8248 -0.1778
>>
7.1604
2:案例分析
例2:敌空战部队对我方港口进行空袭,其到达规律服从泊松
分布,平均每分钟到达4架飞机.
(1)模拟敌机在3分钟内到达目标区域的数量,以及在第
1,2,3分钟内各到达几架飞机;
(2)模拟在3分钟内每架飞机的到达时刻.
分析:(1) n1=poissrnd(4), n2=poissrnd(4),
随机变量,令
布.由此,若已知Y的概率密度为 f ( y ) ,由
Y F 1 ( X ) 可得
X F (Y )
Y
f ( y )dy
注:指数分布的密度函数
如果给定区间(0,1)上均匀分布的随机数 ri ,则
具有给定分布Y的随机数 yi 可由方程
r
f ( y ) dy
由此可知, 事件 p ( n 1) R p ( n ) 和事件 X xn
有相同的发生的概率.因此我们可以用随机变量R落在
小区间内的情况来模拟离散的随机变量X的取值情况.
因此我们可以用随机变量R落在小区间内的情
况来模拟离散的随机变量X的取值情况.具体
执行的过程是:
产生一个(0,1)上均匀分布的随机数 r(简称随机
hk tk 1 tk
,称为第k步的计算步距(一般
是等间距的),然后按以下算法计算状态变量在各
时刻 tk 1 上的近似值:
y (tk 1 ) yk 1 yk f (tk , yk )(tk 1 tk )
其中初始点 (t0 , y0 ), k 1, 2,
按照这种作法即可
n
p (0) 0, p ( n ) pi , n 1, 2,3 ,将p ( n )作为分点, 将区间(0,1)分为
i 1
一系列小区间( p ( n 1) , p ( n ) ).对于均匀的随机变量R U (0,1), 则有
P p ( n 1) R p ( n ) p ( n ) p ( n 1) , n 1, 2
利用数学运算模拟系统的运行过程.连续系统模
型一般是微分方程,它在数值模拟中最基本的算
法是数值积分算法.例如有一系统可用微分方程
dy
f (t , y )
来描述:
已知输出量y的初始条件
,现
dt
在要求出输出量y随时间变化的过程y(t)。
y (t ) y
0
0
1 理论介绍
最直观的想法是:首先将时间离散化,令
数),若p(n-1)<r≤ p(n)则理解为发生事件(X=xn).
于是就可以模拟随机变量的取值情况.
2 离散型随机变量的模拟
2
例 3 :随机变量 X 0,1,
表示每分钟到达银行柜台的顾客数.X的
分布列见下表,试模拟10分钟内顾客到达柜台的情况.
表1 10分钟内顾客到达柜台的情况
数学建模之
China Undergraduate Mathematical Contest in Modeling
一个问题
我们做一个实验:把一
个硬币掷一万次, 统计
两个面出现的次数。
这样做很简单但却需
要大师时间,有没有
一咱较快的办法把这
个实验完成呢?
掷硬币仿真流程图
概述
计算机科学技术的迅猛发展,给许多学科带来了巨大
F 1 ( X )
1 连续型随机变量的模拟
反函数法
一般说来,具有给定分布的连续型随机变量
可以利用在区间(0,1)上均匀分布的随机数来模
拟.最常用的方法是反函数法.
由概率论的理论可以证明,若随机变量Y有连续
的分布函数F(y),而X是区间(0,1)上均匀分布的
1
Z
F
( X ) ,则Z与Y有相同的分
的指数分布!
泊松分布的期望是λ,根据到泊松分布和指数分布的关系,可以
推出指数分布的期望是1/λ。
2:案例分析
clear
t=0;
j=0; %到达的飞机数
while t<3
j=j+1
t=t+exprnd(1/4)
end
二:随机变量的模拟
在很多实际问题中,我们需要模拟服从一定分布的随机变
求出整个的曲线.这种最简单的数值积分算法称为
欧拉法.除此之外,还有其他一些算法.
y (tk 1 ) yk 1 yk f (tk , yk )(tk 1 tk )
1 理论介绍
因此,连续系统模拟方法是:首先确定系统的连续
状态变量,然后将它在时间上进行离散化处理,并
由此模拟系统的运行状态.模拟过程分为许多相等
Xk 0 1 2
pk 0.4 0.3 0.3
分析:因为每分钟到达柜台的人数是随机的,所以可用计算机随
机生成一组(0,1)的数据,由X的概率分布情况,可认为随机数在
(0,0.4)范围内时没有顾客光顾,在[0.4,0.7)时,有一个顾客光
顾,在[0.7,1)时,有两个顾客光顾.
从而有MATLAB程序:
2 离散型随机变量的模拟
它们服从一定的概率分布,称这些数值为随机数.
最基本,最常用的是(0,1)区间内均匀分布的随机数.
其他分布的随机数均可利用它来产生.