蒙特卡罗与计算机模拟有代码
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
在一个边长为a的正方形内随机投点,该点落 在此正方形的内切圆中的概率应为该内切圆与正
方形的面积比值,即 a / 22 : a2 / 4
n=10000; a=2; m=0;
for i=1:n
x=rand(1)*a; y=rand(1)*a;
y
if ( (x-a/2)^2+(y-a/2)^2 <= (a/2)^2 )
常见分布的随机数产生语句 9
与第
计六
算讲
机 模 拟
蒙 特 卡
罗
方
法
MATLAB可以直接产生满足各种分布的随机数 具体命令如下: ① 产生m×n阶[0,1]上均匀分布的随机数矩阵
rand(m,n) 产生一个[0,1]上均匀分布的随机数
rand ② 产生m×n阶[a,b]上均匀分布的随机数矩阵
unifrnd (a,b,m, n) 产生一个[a,b]上均匀分布的随机数
蒙特卡罗方法的基本思想很早以前就被人们所 发现和利用。早在17世纪,人们就知道用事件发 生的“频率”来决定事件的“概率”。19世纪人 们用蒲丰投针的方法来计算圆周率π,上世纪40年 代电子计算机的出现,特别是近年来高速电子计 算机的出现,使得用数学方法在计算机上大量、
蒲丰投针实验近似计算圆周率π3
(a/2,a/2)
m=m+1;
end end
ຫໍສະໝຸດ Baiduox
disp(['投点法近似计算的π为: ',num2str(4*m/n)]);
常见分布的随机数产生语句 8
与第
计六
算讲
机 模 拟
蒙 特 卡
罗
方
法
蒙特卡罗方法的关键步骤在于随机数的产生,
计算机产生的随机数都不是真正的随机数(由算法 确定的缘故),如果伪随机数能够通过一系列统计 检验,我们也可以将其当作真正的随机数使用:
蒲丰投针实验可归结为下面的数学问题:平面 上画有距离为a的一些平行线,向平面上任意投一 根长为l(l<a)的针,假设针落在任意位置的可能性 相同,试求针与平行线相交的概率P(从而求π)
蒲丰投针实验近似计算圆周率π4
与第
计六
算讲
机 模 拟
蒙 特 卡
罗
方
法
蒲丰投针实验:
如右图所示,以M
表示针落下后的中点,
for i=1:n if x(i)<l*sin(phi(i))/2 %满足此条件表示针与线的相交 plot(phi(i),x(i),'r.'); frame(i)=getframe; %描点并取帧 counter=counter+1; %统计针与线相交的次数
end
end
fren=counter/n; pihat=2*l/(a*fren) %用频率近似计算π
unifrnd(a,b) ③ 产生一个1:n的随机排列(元素均出现且不重复)
p=randperm(n) 注意: randperm(6)与unifrnd (1,6,1, 6)的区别
常见分布的随机数产生语句 10
与第
计六
算讲
机 模 拟
蒙 特 卡
罗
方
法
④ 产生m×n阶均值为mu方差为sigma的正态分布 的随机数矩阵
以x表示M到最近一条
平行线的距离,以φ表示针与此线的交角:
针落地的所有可能结果满足:0 x a 2,0 其样本空间视作矩形区域Ω, 面积是: S() a 2
针与平行线相交的条件: 0 x sinl 2,0
它是样本空间Ω子集A,面积是:S
(
A)
%movie(frame,1)
%播放帧动画1次
蒲丰投针实验近似计算圆周率π6
蒲丰投针实验的计算机模拟:
与第
计六
算讲
机 模 拟
蒙 特 卡
罗
方
法
意大利数学家拉泽里尼得到了准确到6位小数 的π值,不过他的实验因为太准确而受到了质疑
蒲丰投针实验计算圆周率π 7
与第
计六
算讲
机 模 拟
蒙 特 卡
罗
方
法
蒙特卡罗投点法是蒲丰投针实验的推广:
了解蒙特卡罗方法的起源和基本思想 掌握离散系统和连续系统计算机模拟实例 掌握随机函数 rand unifrnd normrnd exprnd 了解Matlab仿真模块 Simulink
蒙特卡罗方法的起源和基本思想2
与第
计六
算讲
机 模 拟
蒙 特 卡
罗
方
法
蒙特卡罗方法(Monte Carlo method),或称计 算机随机模拟方法,是一种基于“随机数”的计 算方法。源于美国在第二次世界大战研制原子弹 的“曼哈顿计划”,该计划的主持人之一数学家 冯·诺伊曼用驰名世界的赌城—摩纳哥的Monte Carlo—来命名这种方法,为它蒙上了一层神秘色 彩。
第六讲 蒙特卡罗与计算机模拟1
与第
计六
算讲
机 模 拟
蒙 特 卡
罗
方
法
内容:计算机模拟(或称仿真)是一种广义数值计算 方法,适合解决一些规模大、难以解析化 以及受随机因素影响的不确定数学模型
目的:了解蒙特卡罗方法的基本思想,掌握利用 Matlab对离散/连续系统进行模拟的方法
要求:掌握Matlab随机数函数,处理应用问题
0
sin
l
2d
l
syms l phi; int('l/2*sin(phi)',phi,0,pi); %ans=l
因此,针与平行线相交的概率为:p S(A) / S() 2l / a
从而有: 2l ap 特别当 a 2l 时 1 p
蒲丰投针实验近似计算圆周率π5
与第
计六
算讲
机 模 拟
蒙 特 卡
罗
方
法
蒲丰投针实验: 法国科学家蒲丰(Buffon)在1777年提
出的蒲丰投针实验是早期几何概率一个 非常著名的例子。蒲丰投针实验的重要 性并非是为了求得比其它方法更精确的 π值,而是它开创了使用随机数处理确定性数学问 题的先河,是用偶然性方法去解决确定性计算的 前导,由此可以领略到从“概率土壤”上开出的 一朵瑰丽的鲜花——蒙特卡罗方法(MC)
与第
计六
算讲
机 模 拟
蒙 特 卡
罗
方
法
蒲丰投针实验的计算机模拟:
format long; %设置15位显示精度
a=1; l=0.6; %两平行线间的宽度和针长 figure; axis([0,pi,0,a/2]); %初始化绘图板 set(gca,'nextplot','add'); %初始化绘图方式为叠加 counter=0; n=2010; %初始化计数器和设定投针次数 x=unifrnd(0,a/2,1,n); phi=unifrnd(0,pi,1,n); %样本空间Ω