蒙特卡洛模拟_布丰投针实验与蒙特卡洛模拟

当生活中的针遇上数学中的平行线

会撞出什么样的火花呢?

快往下看看吧~

01

布丰投针实验简述

18世纪,法国数学家布丰提出的“投针问题”,记载于布丰1777年出版的著作中:“在平面上画有一组间距为a的平行线,将一根长度为l(l≤a)的针任意掷在这个平面上,求此针与平行线中任一条相交的概率。通过此实验所得概率还可以求出圆周率π。

02

实验具体步骤及结果

1) 取一张白纸,在上面画上许多条间距为a的平行线。

2) 取一根长度为l(l≤a) 的针,随机地向画有平行直线的纸上掷n次,观察针与直线相交的次数,记为m。

3)计算针与直线相交的概率.

结果

布丰本人证明概率是:

9089f2a8da3d545fb70d868b212f8456.png

03

解题思路

前半部分由伯努利大数定律得出,这里不做讨论;后半部分则是笔者要讲的主要内容,需要利用几何概型,同时结合微积分的知识来做。

伯努利大数定律:设fn为n重伯努利实验中事件A发生的次数,p为A在每次实验中发生的概率,则对任意给定的实数ε>0,则成立。

对于投针,我们可以简单分为两种情况。一种是相交,另一种是不相交。他们的特点如下图。

e9d32a6df1a798fadc7d585942952272.png

其中,x是针的中点到离他最近的平行线的距离。这个距离在0到二分之a之间,而针与平行线的夹角θ在0到二分之Π之间。

将这个θ-x函数在平面直角坐标系中画出来,所得如下图。

6d134f3bcfcad458252fe0271104e014.png

阴影部分的面积表示这个θ-x组合是能使针与平行线相交的。所以计算概率的时候,要用阴影部分的面积除以矩形的面积,这样计算可得到针与直线相交的概率。

04

程序解法

利用蒙特卡洛模拟的思想,通过程序可以实现布丰投针实验。由于笔者编程能力有限,这里仅仅使用了matlab进行程序实现,具体程序如下:

l=input(‘输入l的值’)

a=input(‘输入a的值’)

m=1000000         

n=0;

m = 0;    

x = rand(1, n) * a / 2 ;  

phi = rand(1, n) * pi;    

for i=1:n  

    if x(i) <= l / 2 * sin(phi (i))     

        m = m + 1;   

        plot(phi(i), x(i), 'r.')   

        hold on

    end

end

p = m / n;   

mypi = (2 * l) / (a * p);  

disp(['蒙特卡罗方法得到pi为:', num2str(mypi)])

希望能够对同学们有所帮助!

870862f0290d9cb40fccaf2b89771dfa.png d4b942c40670d35b14cc2b75883478c0.png 870862f0290d9cb40fccaf2b89771dfa.png

欢迎关注1班公众号

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值