当前位置:文档之家› 数学建模《计算机随机模拟》教材

数学建模《计算机随机模拟》教材

方法一 可以使用软件(excel、C等实现)
• 利用软件产生一组[0,24]上的随机数xi: 10.4 5.3 0.3 9.0 20.1 6.8 7.8 …… 5.4 分别代表甲船到达码头时间;
• 再产生一组[0,24]上的随机数yi: 6.0 3.4 8.1 17.5 0.8 13.4 ……14.0 分别代表乙船到达码头时间;
船能相遇的条件就是:x y x 2且y x y 1
两船到达的时刻x和y可以随机生成,生成一组到 达时刻,可以确定是否能相遇。 如果重复很多次,统计相遇的比例就可近似为相 遇的概率。 这也是Monte Carlo思想.
云南师范大学数学学院
两船到达码头时刻服从[0,24]上的均匀分布,甲 船停留2小时,乙船停留1小时,相遇概率?
2 计算函数:z = norminv(p,mu,sigma)
云南师范大学数学学院
统计直方图matlab函数hist
2000
• 直方图绘图函数: hist(data,n) 1000
其中,data是需要处理的数据块,
0 1 234 5
绘图原理:利用data中最小数和最大数构成一区间,
将区间等分为n个小区间,统计落入每个小区间的
云南师范大学数学学院
三、一些随机模拟的例子
[例1](相遇问题) 甲、乙两船在24小时内独立 地随机到达码头. 设两船到达码头时刻都服从 [0,24]上的均匀分布,如果甲船到达码头后停 留2小时,乙船到达码头后停留1小时.问两船相 遇的概率有多大?(可用几何概率,此处略)
分析:如果知道甲、乙两船到达的时刻x和y,两
购进数量n=510份 需求量X 500 510 520
概率P 0.34 0.36 0.30
按照需求量的分布规律,随机生成N=20个数据:
510 520 500 510 520 500 500 500 500
510 500 500 500 520 510 520 510 510 代表20天的需求量,计算出报童在这20天的总利 润和平均利润,用平均利润来近似报童的平均收 入。这也是Monte Carlo方法.
说明 [0,1]上均匀分布 [a,b]上均匀分布 1,…,N的等概率分布 标准正态分布N(0,1) 均值为λ 的指数分布 均值为λ 的泊松分布 正态分布N(μ ,σ 2)
云南师范大学数学学院
有关正态分布matlab计算函数
• 正态分布变量X的数学期望,方差 2 ,密度函数
f ( x) 1 exp[ ( x )2 / 2 2 ) x (, ) 2
问 •如何按分布规律产生随机数据? 题 •随机数据很多时,如何编程?
云南师范大学数学学院
报童诀窍的简化版
问题1:如何产生以下分布规律的随机数据?
需求量X 500 510 520 注:rand(m,n)可以生成 概率P 0.34 0.36 0.30 [0,1]上均匀分布随机数
注意:每次运行的结果一般都不一样
云南师范大学数学学院
报童诀窍的简化版
[例2] (报童诀窍的简化版)报童每天清晨从 报社购进报纸零售,晚上退回没有卖掉的报纸.
ห้องสมุดไป่ตู้
若每份报纸的购进价为b=0.75元,售出价为a=1
元,退回价为c=0.6元.每天需求量X是离散型随
机变量,其分布为 X 500 510 520
云南师范大学数学学院
计算机随机模拟(Monte Carlo)
(建模培训)
张洪波 主讲
云南师范大学数学学院
一、简介
有些问题,由于随机因素很多,用概率论 的方法进行求解可能很难和复杂,这时就需要 借助随机模拟方法得到近似解答。
随机模拟法也叫蒙特卡罗(Monte Carlo) 方法,也称为计算机随机模拟方法。
由于Monte Carlo法计算量大,精度不高, 因而需要借助计算机,并仅适合一些用解析方 法或常规数值方法难以解决问题的低精度求解 和验证
云南师范大学数学学院
二、Matlab中的部分随机数产生命令
注:以下都是产生不同分布m×n 阶随机矩阵
命令 rand(m,n) unifrnd(a,b,m,n) unifrnd(N,m,n) randn(m,n) exprnd(λ,m,n) poissrnd(λ,m,n) normrnd(μ,σ,m,n)
P 0.34 0.36 0.30
问:如果报童每天购进报纸为n=510份,每天的 平均利润是多少?
方法一:概率方法(略)
方法二:如果我们知道每天的需求量,可直接计算利润。 而每天需求量可以按分布生成(随机模拟思想)
云南师范大学数学学院
报童诀窍的简化版
售出价a=1,购进价b=0.75,退回价c=0.6,
for i=1:N
%重复N次到达时间
x=unifrnd(0,24,1,1); %甲船到达时间x(随机数)
y=unifrnd(0,24,1,1); %乙船到达时间y(随机数)
if((x<=y & y<=x+2) |(y<=x & x<=y+1))
c=c+1;
%如果能相遇,则计数器加1
end
end P=c/N %显示相遇的概率近似值
数据量,以数据量为高度绘小矩形,形成直方图。
如果省略参数n,MATLAB将n的默认值取为10。
• 直方图统计计算函数:N=hist(data,n) 计算结果N是n个数的一维数组,分别表示data中各 个小区间的数据量。这种方式只计算而不绘图。
• 其他用法:hist(data,x)或 N= hist(data,x)
• 把(xi,yi)(i=1,2…)当作一天中甲船乙 船到达的时间,统计出能相遇的频数,计算 出相遇的频率做为相遇的概率。
云南师范大学数学学院
两船到达码头时刻服从[0,24]上的均匀分布,甲
船停留2小时,乙船停留1小时,相遇概率?
方法二 %计算机模拟程序
clc; N=1000; c=0; %模拟次数N,相遇次数c清零
计算密度值函数:normpdf(x,mu,sigma) • 累积分布函数,即积分上限函数
P{ X x} 1 x exp[ (t )2 / 2 2 ]dt
2
计算概率值函数:normcdf(x,mu,sigma)
• 逆累积分布函数值,即已知概率值p,求z使得
P{ X z} 1 z exp[ (t )2 / 2 2 ]dt p
相关主题