蒙特卡洛之布丰投针(python实现)

   日期:2020-09-04     浏览:412    评论:0    
核心提示:这里写自定义目录标题Buffon实验介绍实验步骤实验结果证明过程当Buffon遇上python神器代码感谢风哥的数模教学视频,真正的学以致用~弯腰致敬⁄(⁄ ⁄ ⁄ω⁄ ⁄ ⁄)⁄Buffon实验介绍法国数学家Buffon提出一个问题:设我们有一个以平行且等距木纹铺成的地板(如图),随意抛一支长度比木纹之间距离小的针,求针和其中一条木纹相交的概率。经Buffon证明此概率与圆周率pi相关,因此Buffon提出的一种计算圆周率的方法——随机投针法。这就是蒲丰投针问题(又译“布丰投针问题”)。实验步骤

这里写自定义目录标题

  • Buffon实验介绍
    • 实验步骤
    • 实验结果
    • 证明过程
  • 当Buffon遇上python神器
    • 代码
  • 感谢风哥的数模教学视频,真正的学以致用~弯腰致敬⁄(⁄ ⁄ ⁄ω⁄ ⁄ ⁄)⁄

Buffon实验介绍

法国数学家Buffon提出一个问题:设我们有一个以平行且等距木纹铺成的地板(如图),随意抛一支长度比木纹之间距离小的针,求针和其中一条木纹相交的概率。
经Buffon证明此概率与圆周率pi相关,因此Buffon提出的一种计算圆周率的方法——随机投针法。这就是蒲丰投针问题(又译“布丰投针问题”)。

实验步骤

  1. 取一张白纸,在上面画上许多条间距为a的平行线。
  2. 取一根长度为l(l≤a) 的针,随机地向画有平行直线的纸上掷n 次,观察针与直线相交的次数,记为m。
  3. 计算针与直线相交的概率。

实验结果

法国数学家布丰提出的“投针问题”,记载于布丰1777年出版的著作中:“在平面上画有一组间距为a的平行线,将一根长度为l(l≤a)的针任意掷在这个平面上,求此针与平行线中任一条相交的概率。”
布丰本人证明了,这个概率是:
P = 2 L π a P = \frac { 2 L } { \pi a } P=πa2L
(其中π为圆周率)
由于它与π有关,于是人们想到利用投针试验来估计圆周率的值。

证明过程

当Buffon遇上python神器

知道可以通过实验来求出pi,我们就可以用计算机来代替人工手抛啦!
有了numpy生成随机数字,我们就可以解放双手,轻松模拟出上万次实验哇卡卡卡卡卡( ̄▽ ̄)

代码

由于是小白,所以还没习惯写注释,所以可读性有点差,希望各位看官见谅(。ì _ í。)

// # 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 第一篇博客,希望大家指正~

 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服