随机模拟Buffon投针试验统计计算实验报告
This model paper was revised by the Standardization Office on December 10, 2024
学生所在学院:理学院 专业:应用数学 班级:091 实验镇凡迪 姓 名 学 号 08 组 五 指导教实验时间 成 龚敏庆 绩 师 实验项目名随机模拟Buffon投针试验 称 实验目的及要求: 掌握Buffon随机模拟的原理及算法 实验(或算法)原理: 理论依据:客观世界的某些现象之间存在着某种相似性,因而可以从一种现象出发研究另一种现象。比如在分析一个系统时,可先构造一个与该系统相似的模型,通过在模型上进行实验来研究原模型,这就是模拟。随机系统可以用概率模型来描述并进行实验,称为随机模拟方法。 步骤分为(1)建立恰当模型 (2)设计实验方法 (3)从一个或者多个概率分布中重复生成随机数 (4)分析模拟结果 实验硬件及软件平台: 计算机 MATLAB VC 网络 实验步骤: 复习第四章有关知识,熟悉Buffon投针试验的原理 运用MATLAB,编写相关程序,输入代码 观察实验结果,进行讨论 撰写实验报告 实验内容(包括实验具体内容、算法分析、源代码等等): (法一)Buffon投针试验求圆周率: function y=Buffon(a,l,N) //a为平行线间的距离;l为针长;N为投针次数 M=0; i=0; while i<=N xi=rand()*a/2; yi=rand()*pi; if xi<=l/2*sin(yi) M=M+1; end i=i+1; end phi=2*l*N/(a*M); y=phi; end 法二: function [p0,pm,pival]=BuffonMonteCarlo(d,h,N) %Buffon投针试验 if h>=d %判断针的长度h与相邻平行线间的距离d是否满足指定条件 error('针的长度应小于平行线间的距离') end p0=2*h/(d*pi); %计算针与任意平行线相交的理论概率 x=0;y=0; %赋变量初值 m=length(N); %求变量N的长度 pm=zeros(1,m); %赋变量初值 pival=pm; %赋变量初值 for i=1:m %通过循环求基于蒙特卡洛方法的模拟概率pm和圆周率pival x=pi*rand(N(i),1); %产生[0,pi]上均匀分布随机数 y=d*rand(N(i),1)/2; %产生[0,d/2]上均匀分布随机数 yb=h*sin(x)/2; pm(i)=sum(y<=yb)/N(i); %求模拟概率 pival(i)=2*h*N(i)/(d*sum(y<=yb)); %求圆周率的模拟值 end