Buffon实验介绍
法国数学家Buffon提出一个问题:设咱们有一个以平行且等距木纹铺成的地板(如图),随意抛一支长度比木纹之间距离小的针,求针和其中一条木纹相交的几率。
经Buffon证实此几率与圆周率pi相关,所以Buffon提出的一种计算圆周率的方法——随机投针法。这就是蒲丰投针问题(又译“布丰投针问题”)。
javascript
实验步骤
- 取一张白纸,在上面画上许多条间距为a的平行线。
- 取一根长度为l(l≤a) 的针,随机地向画有平行直线的纸上掷n 次,观察针与直线相交的次数,记为m。
- 计算针与直线相交的几率。
实验结果
法国数学家布丰提出的“投针问题”,记载于布丰1777年出版的著做中:“在平面上画有一组间距为a的平行线,将一根长度为l(l≤a)的针任意掷在这个平面上,求此针与平行线中任一条相交的几率。”
布丰本人证实了,这个几率是:
P = 2 L π a P = \frac { 2 L } { \pi a } P=πa2L
(其中π为圆周率)
因为它与π有关,因而人们想到利用投针试验来估计圆周率的值。
java
证实过程
当Buffon赶上python神器
知道能够经过实验来求出pi,咱们就能够用计算机来代替人工手抛啦!
有了numpy生成随机数字,咱们就能够解放双手,轻松模拟出上万次实验哇卡卡卡卡卡( ̄▽ ̄)
python
代码
因为是小白,因此还没习惯写注释,因此可读性有点差,但愿各位看官见谅(。ì _ í。)dom
// # Created with Python AI import numpy as np def buffon(a,l,n): xl = np.pi*np.random.random(n) yl = 0.5*a*np.random.random(n) m = 0 for x,y in zip(xl,yl): if y < 0.5*l*np.sin(x): m+=1 result = 2*l/a*n/m print(f'pi的估计值是{result}') buffon(2,1,100000)
感谢风哥的数模教学视频,真正的学以至用~弯腰致敬⁄(⁄ ⁄ ⁄ω⁄ ⁄ ⁄)⁄
ps 第一篇博客,但愿你们指正~spa