布丰投针实验模拟

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

系统建模与仿真

基于MATLAB的布丰实验模拟

*名:***

学号: ********

指导教师:**

2022年4月26日

目录

基于MATLAB的布丰实验模拟 .................................................................... - 1 -

一、实验原理......................................................................................... - 1 -

二、编程模拟......................................................................................... - 1 -

1、程序流程图............................................................................... - 1 -

2、程序代码................................................................................... - 2 -

三、实验结果......................................................................................... - 2 -

基于MATLAB 的布丰实验模拟

一、实验原理

找一根铁丝弯成一个圆圈,使其直径恰恰等于平行线间的距离a 。可以想象得到,对于这样的圆圈来说,不管怎么扔下,都将和平行线有两个交点。因此,如果圆圈扔下的次数为n 次,那么相交的交点总数必为n 2。现在设想把圆圈拉直,变成一条长为a π的铁丝。显然,这样的铁丝扔下时与平行线相交的情形要比圆圈复杂些,可能有4个交点,3个交点,2个交点,1个交点,甚至于都不相交。由于圆圈和直线的长度同为a π,根据机会均等的原理(即等概率事件),当它们投掷次数较多,且相等时,两者与平行线组交点的总数期望也是一样的。这就是说,当长为a π的铁丝扔下n 次时,与平行线相交的交点总数应大致为n 2。现在转而讨论铁丝长为l 的情形。当投掷次数n 增大的时候,这种铁丝跟平行线相交的交点总数k 应当与长度l 成正比,因而有:l k λ=,式中λ是比例系数。为了求出λ来,只需注意到,对于a l π=的特殊情形,有n k 2=。于是求得a n πλ2=。代入前式就有:a m πln 2≈从而ak

nl 2≈π。 二、编程模拟

1、程序流程图

其中,判断是否相交是看条件θsin 2

l y <是否成立,如果成立则说明相交。判断是否结束,是看计算精度(本次结果与上次结果差的绝对值)有没有达到要求。

2、程序代码

%%布丰实验模拟

clear all ;clc

format long

%初始化参数

tic

a=50; %平行线间隔

l=30; %针长

k=0; %相交次数

n=0; %投针次数

e=1e-8;%计算精度

pai=0;

r=abs(pi-pai);

while r>e

y=25*rand(1); %位置坐标

theta=pi*rand(1); %角度

if y < abs(0.5*l*sin(theta)) %判断是否相交

k=k+1;

n=n+1;

pai=(2*n*l)/(a*k);

r=abs(pi-pai);

else %不相交

n=n+1;

end

end

disp('实验情况:')

disp('投针次数:')

disp(n)

disp('相交次数:')

disp(k)

disp('实验结果π=:')

disp(pai)

toc

三、实验结果

用上述程序进行模拟,可以得到如下图所示的结果:

可以看出,计算精度达到8

10 时,计算速度还是比较快的。但存在的问题是,个别情况下会出现计算迟迟达不到精度要求,耗时过长。

另外,用MATLAB GUI对本次模拟实验做了可视化窗口,如下图所示:

使用过程中发现,其计算速度有进一步提高。但是有较大的偶然性,根据随机数产生的不同,计算速度会有明显的差异。

相关文档
最新文档