当生活中的针遇上数学中的平行线
会撞出什么样的火花呢?
快往下看看吧~
01
布丰投针实验简述
18世纪,法国数学家布丰提出的“投针问题”,记载于布丰1777年出版的著作中:“在平面上画有一组间距为a的平行线,将一根长度为l(l≤a)的针任意掷在这个平面上,求此针与平行线中任一条相交的概率。通过此实验所得概率还可以求出圆周率π。
02
实验具体步骤及结果
1) 取一张白纸,在上面画上许多条间距为a的平行线。
2) 取一根长度为l(l≤a) 的针,随机地向画有平行直线的纸上掷n次,观察针与直线相交的次数,记为m。
3)计算针与直线相交的概率.
结果:
布丰本人证明概率是:
03
解题思路
前半部分由伯努利大数定律得出,这里不做讨论;后半部分则是笔者要讲的主要内容,需要利用几何概型,同时结合微积分的知识来做。
伯努利大数定律:设fn为n重伯努利实验中事件A发生的次数,p为A在每次实验中发生的概率,则对任意给定的实数ε>0,则成立。
对于投针,我们可以简单分为两种情况。一种是相交,另一种是不相交。他们的特点如下图。
其中,x是针的中点到离他最近的平行线的距离。这个距离在0到二分之a之间,而针与平行线的夹角θ在0到二分之Π之间。
将这个θ-x函数在平面直角坐标系中画出来,所得如下图。
阴影部分的面积表示这个θ-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)])
希望能够对同学们有所帮助!
欢迎关注1班公众号