数学建模之计算机仿真

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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
国和中国大学生的数学建模竞赛(MCM)中,学生
们经常用到计算机仿真方法去求解、检验等.计算机
仿真(computer simulation)是建模过程中较为重要的
一类方法.
计算机仿真可以解决以下5类问题:





(1) 难以用数学公式表示的系统,或者没有建立和求解的有
效方法.
(2)虽然可以用解析的方法解决问题,但数学的分析与计算
它们服从一定的概率分布,称这些数值为随机数.
最基本,最常用的是(0,1)区间内均匀分布的随机数.
其他分布的随机数均可利用它来产生.
1:产生模拟随机数的计算机命令










在MATLAB中,可以直接产生满足各种分布的随机
数,命令如下:
常见的分布函数
MATLAB语句
均匀分布U[0,1]
R=rand(m,n)
1:05
1:10
到达时刻
1:28
1:30
1:32
1:34
频率
0.7
0.2
0.1
频率
0.3
0.4
0.2
0.1
分析:这个问题用概率论的方法求解十分困难,
它涉及此人到达时刻、火车离开A站的时刻、火
车运行时间几个随机变量。
我们可以用计Fra Baidu bibliotek机仿真的方法来解决。
仿真过程:
1、生成火车的发车时间、运行时间,从而达得到
过于复杂,这时计算机仿真可能提供简单可行的求解方法.
(3)希望能在较短的时间内观察到系统发展的全过程,以估
计某些参数对系统行为的影响.
(4)难以在实际环境中进行试验和观察时,计算机仿真是唯
一可行的方法,如太空飞行的研究.
(5)需要对系统或过程进行长期运行比较,从大量方案中寻
找最优方案.
计算机仿真案例1
(dynamic simulation).数值积分中的蒙特卡洛方法是
典型的静态仿真.动态仿真又分为连续系统仿真和离
散系统仿真.连续系统是指状态变量随着时间连续变
化的系统,例如传染病的检测与预报系统.离散系统是
指系统状态变量只在有限的时间点或可数的时间点上
发生变化的系统,例如排队系统.
概述

仿真系统,必须设置一个仿真时钟

例2 (赶火车过程仿真)一列火车从A站经过B站开
往C站,某人每天赶往B站乘这趟火车。已知火车从
A站到B站的运行时间是均值为30min、标准差为
2min的正态随机变量。火车大约在下午1点离开A
站。火车离开时刻的频率分布和这个人到达B站时
刻的频率分布如下表所示。问他能赶上火车的概率
有多大?
出发时刻
1:00

ans =
2.7429
2.2756
0.0219 2.7759
0.0992 -0.9560
ans =
0.6038
0.2722
0.1988
0.0153



rand(2,3)




randn(2,3)
5.3056
7.2857
0.2527
0.7468
0.4451

ans =
-0.0945 -1.3089 -0.2440
(simulate clock),它能将时间从一个时刻
向另一个时刻进行推进,并且能随时反映
系统时间的当前值.其中,模拟时间推进
方式有两种:时间步长法(均匀间隔时间推
进法,连续系统常用)和事件步长法(下次事
件推进法,离散系统常用) .
主要内容
一:
准备知识:随机数的产生
二:随机变量的模拟
三:连续系统的模拟-时间步长法
利用数学运算模拟系统的运行过程.连续系统模
型一般是微分方程,它在数值模拟中最基本的算
法是数值积分算法.例如有一系统可用微分方程
dy
f (t , y )
来描述:
已知输出量y的初始条件
,现
dt
在要求出输出量y随时间变化的过程y(t)。
y (t ) y
0
0
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
三:连续系统的模拟-时间步长法

对连续系统的计算机模拟是近似地获取系统状态
在一些离散时刻点上的数值.在一定假设条件下,
-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),
数),若p(n-1)<r≤ p(n)则理解为发生事件(X=xn).
于是就可以模拟随机变量的取值情况.
2 离散型随机变量的模拟






2
例 3 :随机变量 X 0,1,
表示每分钟到达银行柜台的顾客数.X的
分布列见下表,试模拟10分钟内顾客到达柜台的情况.
表1 10分钟内顾客到达柜台的情况
解出.
例 :模拟服从参数为 的指数分布时,由
yi
yi 可得
r
f ( y ) dy 1 e
yi
i
i
yi



1

ln(1 ri ), 也可简化为yi
1

ln ri .
2 离散型随机变量的模拟

设随机变量X的分布律为: P X xi pi (i 1, 2,3, ), 令
hk tk 1 tk
,称为第k步的计算步距(一般
是等间距的),然后按以下算法计算状态变量在各
时刻 tk 1 上的近似值:
y (tk 1 ) yk 1 yk f (tk , yk )(tk 1 tk )

其中初始点 (t0 , y0 ), k 1, 2,
按照这种作法即可
求出整个的曲线.这种最简单的数值积分算法称为
欧拉法.除此之外,还有其他一些算法.
y (tk 1 ) yk 1 yk f (tk , yk )(tk 1 tk )
1 理论介绍

因此,连续系统模拟方法是:首先确定系统的连续
状态变量,然后将它在时间上进行离散化处理,并
由此模拟系统的运行状态.模拟过程分为许多相等
F 1 ( X )
1 连续型随机变量的模拟
反函数法
一般说来,具有给定分布的连续型随机变量
可以利用在区间(0,1)上均匀分布的随机数来模
拟.最常用的方法是反函数法.
由概率论的理论可以证明,若随机变量Y有连续
的分布函数F(y),而X是区间(0,1)上均匀分布的
1
Z

F
( X ) ,则Z与Y有相同的分
其到达B站的时间。
2、生成此人达到B站的时间。
3、如果此人到达B站的时间早于火车到达时间,
则算赶上火车一次。
4、将上述过程重复一万次,统计赶上火车的频率
作为所求概率。
概述


计算机仿真在计算机中运行实现,不怕破坏,易修改,可
重用,安全经济,不受外界条件和场地空间的限制.
仿真分为静态仿真(static simulation)和动态仿真
泊松分布 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 =
均匀分布U[a,b]
R=unifrnd(a,b,m,n)
指数分布 E(λ)
R = exprnd(λ, m , n)
正态分布N(mu,sigma) R=normrnd(mu,sigma,m,n)
标准正态分布N(0,1) R=randn(m,n)
二项分布B(n,p)
R=binornd(n,p,m,n1)
量,来进行计算和预测。
利用均匀分布的随机数可以产生具有任意分布的随机变量
的样本,从而可以对随机变量的取值情况进行模拟.
1 连续型随机变量的模拟
具有给定分布的连续型随机变量可以利用在区间(0,1)上
均匀分布的随机数来模拟,最常用的方法是逆变换法.
结论:若随机变量Y有连续的分布函数F(y),
X U (0,1), 令Z 则Z与Y有相同的分布.

x0
i 1
(( x i


n

f
(
x
,
y
)
0
0



y0
i 1
(( x i

2、数值计算方法
3、计算机仿真:
离散化,遍历!
Qi ( x i x 0 )
x0 ) ( yi y0 )
2
2
Qi ( y i x 0 )
x0 ) ( yi y0 )
2
2
0
0
计算机仿真案例2
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 离散型随机变量的模拟
n3=poissrnd(4),n=n1+n2+n3
(2) 由排队论知识,敌机到达规律服从泊松分布等价于敌
机到达港口的间隔时间服从参数为1/4的指数分布,故可由
指数分布模拟每架飞机的到达时刻.
•注:如果单位时间发生的次数(如到达的人数)服从参数为r的
泊松分布,则任连续发生的两次时间的间隔时间序列服从参数为r
模型建立:由于本题要求使从搅拌中心到各个工地运输混凝土
的总的吨公里数最少,所以,该问题的目标函数是
n
min f ( x 0 , y 0 ) Q i ( x i x 0 ) 2 ( y i y 0 ) 2
i 1
求解方法:
1、高数中的方法
n
f ( x 0 , y 0 )

数学建模之
China Undergraduate Mathematical Contest in Modeling
一个问题
我们做一个实验:把一
个硬币掷一万次, 统计
两个面出现的次数。
这样做很简单但却需
要大师时间,有没有
一咱较快的办法把这
个实验完成呢?
掷硬币仿真流程图
概述

计算机科学技术的迅猛发展,给许多学科带来了巨大
由此可知, 事件 p ( n 1) R p ( n ) 和事件 X xn
有相同的发生的概率.因此我们可以用随机变量R落在
小区间内的情况来模拟离散的随机变量X的取值情况.
因此我们可以用随机变量R落在小区间内的情
况来模拟离散的随机变量X的取值情况.具体
执行的过程是:
产生一个(0,1)上均匀分布的随机数 r(简称随机
随机变量,令
布.由此,若已知Y的概率密度为 f ( y ) ,由
Y F 1 ( X ) 可得
X F (Y )
Y

f ( y )dy
注:指数分布的密度函数



如果给定区间(0,1)上均匀分布的随机数 ri ,则
具有给定分布Y的随机数 yi 可由方程
r
f ( y ) dy
的指数分布!
泊松分布的期望是λ,根据到泊松分布和指数分布的关系,可以
推出指数分布的期望是1/λ。

2:案例分析







clear
t=0;
j=0; %到达的飞机数
while t<3
j=j+1
t=t+exprnd(1/4)
end
二:随机变量的模拟






在很多实际问题中,我们需要模拟服从一定分布的随机变
相关文档
最新文档