“投针实验 ”求圆周率的方法
- 格式:doc
- 大小:30.50 KB
- 文档页数:2
布丰用投针法得出圆周率的故事1777年的一天,法国科学家布丰的家里宾客满堂,原来他们是应主人的邀请前来观看一次奇特试验的。
试验开始,但见年已古稀的布丰先生兴致勃勃地拿出一张纸来,纸上预先画好了一条条等距离的平行线。
接着他又抓出一大把原先准备好的小针。
然后布丰先生宣布:“请诸位把这些小针一根一根往纸上扔吧!不过,请大家务必把扔下的针是否与纸上的平行线相交,以及相交的次数告诉我。
客人们不知布丰先生要玩什么把戏,只好客随主意,一个个加入了试验的行列。
一把小针扔完了,把它捡起来再扔。
而布丰先生本人则不停地在一旁数着、记着,如此这般地忙碌了将近一个钟头。
最后,布丰先生高声宣布:“先生们,我这里记录了诸位刚才的投针结果,共投针2212次,其中与平行线相交的有704次。
总次数2212与相交次数704的比值为3.142。
”说到这里,布丰先生故意停了停,并对大家报以神秘的一笑,接着有意提高声调说:“先生们,这就是圆周率π的近似值!”客人们一片哗然,议论纷纷,大家全都感到莫名其妙:“圆周率π?这可跟投针半点也不沾边呀!”布丰先生似乎猜透了大家的心思,得意洋洋地解释道:“诸位,这里用的是概率的原理,如果大家有耐心的话,再增加投针的次数,还能得到π的更精确的近似值呢。
”那么,“布丰投针实验”的依据究竟是什么呢?假设那组平行线的间距等于d。
如果把一个直径为d的铁丝圆圈,因为它的周长等于πd。
所以,不论怎样扔,圆圈落到那组平行线上,都会和平行线有两个交点。
因此,如果圆圈扔下的次数为n,交点的总数为m,必定有m=2n。
还用那组平行线,不过这回把圆圈剪开,变成长度是πd的直铁丝。
显然,直铁丝与平行线相交的情形要比圆圈复杂,最多可能有4个交点,也可能有3个交点、2个交点、1个交点,也可能不相交,没有交点。
不过,由于圆圈和直铁丝的长度相同,根据概率学的“机会均等原理”,当圆圈和直铁丝投掷的次数较多并且相等时,它们与平行线组的交点总数可望也是一样的。
教材提到了“投针实验”求圆周率的方法。
1777年,法国数学家蒲丰取一根针,量出它的长度,然后在纸上画上一组间距相等的平行线,这根针的长度是这些平行线的距离是的一半。
把这根针随机地往画满了平行线的纸面上投去。
小针有的与直线相交,有的落在两条平行直线之间,不与直线相交。
这次实验共投针2212次,与直线相交的有704次,2212÷704≈3.142。
得数竟然是π的近似值。
这就是著名的蒲丰投针问题。
后来他把这个试验写进了他的论文《或然性算术尝试》中。
蒲丰证明了针与任意平行线相交的概率为p= 2l/πd 。
这个公式中l为小针的长,d为平行线的间距。
由这个公式,可以用概率方法得到圆周率的近似值。
当实验中投的次数相当多时,就可以得到π的更精确的值。
蒲丰实验的重要性并非仅仅是为了求得比其它方法更精确的π值。
而在于它是第一个用几何形式表达概率问题的例子。
计算π的这一方法,不但因其新颖,奇妙而让人叫绝,而且它开创了使用随机数处理确定性数学问题的先河,是用偶然性方法去解决确定性计算的前导。
找一根粗细均匀,长度为 d 的细针,并在一张白纸上画上一组间距为l 的平行线(方便起见,常取l = d/2),然后一次又一次地将小针任意投掷在白纸上。
这样反复地投多次,数数针与任意平行线相交的次数,布丰(Comte de Buffon)设计出他的著名的投针问题(needleproblem)。
依靠它,可以用概率方法得到π的近似值。
假定在水平面上画上许多距离为a的平行线,并且,假定把一根长为l<a的同质均匀的针随意地掷在此平面上。
布丰证明:该针与此平面上的平行线之一相交的概率为:p=2l/(api) 把这一试验重复进行多次,并记下成功的次数,从而得到P的一个经验值,然后用上述公式计算出π的近似值,用这种方法得到的最好结果是意大利人拉泽里尼(Lazzeri ni)于1901年给出的。
用C语言计算蒲丰氏投针计算圆周率#include <stdio.h>#include <time.h>main(){int n1=0,n,i;double rand_num1,rand_num2;printf(" input the n:");printf("%d");for(i=0;i<n;i++){rand_num1=(double)time(0)*rand();while(rand_num1>1)rand_num1-=2;rand_num2=(double)time(0)*rand();while(rand_num2>1)rand_num2-=2;if(rand_num1*rand_num1+rand_num2*rand_num2<1)n1++;}printf("π=%f\n",4*n1/n);/* n1/n=π/4 距离小于1就是在圆里,取点范围在(-1,-1)到(1,1)的正方形里*/}MATLAB计算蒲丰氏投针计算圆周率(蒙特卡罗方法)cleara=1; l=0.6;counter=0;n=10000000;% 投掷次数x=unifrnd(0,a/2,1,n);%产生n个(0,a/2)之间均匀分布的随机数,这里a/2是投针的中点到最近的平行线的距离phi=unifrnd(0,pi,1,n);% 产生n个(0,pi)之间均匀分布的随机数,这里pi是投针到最近的平行线的角度for i=1:nif x(i)<l*sin(phi(i))/2 % 只要x小于l*sin(phi(i))/2,则相交counter=counter+1;endendfrequency=counter/n; % 计算相交的频率,即相交次数比总次数Pi=2*l/(a*frequency) % 从相交的频率总求的pi%运行结果>> testPi =3.1416一个蒲峰问题的蒙特卡罗方法实现的C语言程序。
一、问题的提出在人类数学文化史中,对圆周率π精确值的追求吸引了许多学者的研究兴趣。
在众多的圆周率计算方法中,最为奇妙的是法国物理学家布丰(Boffon)在1777年提出的“投针实验”。
与传统的“割圆术”等几何计算方法不同的是,“投针实验”是利用概率统计的方法计算圆周率的值,进而为圆周率计算开辟了新的研究途径,也使其成为概率论中很有影响力的一个实验。
本节我们将借助于MATLAB仿真软件,对“投针实验”进行系统仿真,以此来研究类比的系统建模方法和离散事件系统仿真。
二、系统建模“投针实验”的具体做法是:在一个水平面上画上一些平行线,使它们相邻两条直线之间的距离都为a;然后把一枚长为l(0<l<a)的均匀钢针随意抛到这一平面上。
投针的结果将会有两种,一种是针与这组平行线中的一条直线相交,一种是不相交。
设n为投针总次数,k为相交次数,如果投针次数足够多,就会发现公式2lnak计算出来的值就是圆周率π。
当然计算精度与投针次数有关,一般情况下投针次数要到成千上万次,才能有较好的计算精度。
有兴趣的读者可以耐心地做一下这个实验。
90)相交为了能够快速的得到实验结果,我们可以通过编写计算机程序来模拟这个实验,即进行系统仿真。
所谓的系统仿真是指以计算机为工具,对具有不确定性因素的、可模型化的系统的一种研究方法。
建立能够反映实验情况的数学模型是系统仿真的基础。
系统建模中需解决两个问题,一个是如何模拟钢针的投掷结果,另一个是如何判断钢针与平行线的位置关系。
这里,设O 为钢针中点,y 为O 点与最近平行线之间的距离,θ为钢针与平行线之间的夹角(0180θ≤<)。
首先,由于人的投掷动作是随机的,钢针落下后的具体位置也是随机的,因此可用按照均匀分布的两个随机变量y 和θ来模拟钢针投掷结果。
其次,人工实验时可以用眼睛直接判断出钢针是否与平行线相交,而计算机仿真实验则需要用数学的方法来判别。
如下图所示,如果y 、l 和θ满足关系式1sin 2y l θ≤,那么钢针就与平行线相交,否则反之,进而可以判断钢针与平行线的位置关系。
蒲丰投针最简单的代码
蒲丰投针是一种概率统计实验,可以用来求圆周率。
这里介绍一下最简单的蒲丰投针代码。
首先,需要导入Python中的random模块来生成随机数。
然后,定义需要用到的变量和常数,如针长(L)和两根地板板缝之间的距离(d)。
接下来,生成两个随机数,分别表示针的中心点距离地板板缝的距离(x)和针与竖直方向的夹角(theta)。
利用这两个随机数可以计算出针与地板板缝相交的情况。
再用一个计数器变量count来记录针与地板板缝相交的次数,重复这个实验若干次后,圆周率的近似值就可以通过下面的公式计算出来:
pi = 2 * L / (d * p)
其中,p为相交次数与总次数之比。
代码如下:
import random
L = 1 # 针长
d = 2 # 地板板缝间距
n = 10000000 # 实验次数
count = 0 # 相交次数
for i in range(n):
x = random.uniform(0, d) # 针中心距地板板缝距离
theta = random.uniform(0, 180) # 针与竖直方向的夹角
if x <= L * 0.5 * math.sin(theta / 180 * math.pi): # 判断是否相交
count += 1
p = count / n # 相交次数与总次数之比
pi = 2 * L / (d * p) # 计算圆周率
print(pi)
需要注意的是,模拟次数越多,计算出的圆周率越接近真实值。
但是过多的模拟次数会导致程序运行时间增长,因此需要根据实际情况来选择合适的实验次数。
投针问题概率计算
投针问题是一个著名的概率问题,其本质是求解一个针落在两个平行线之间的概率。
在这个问题中,我们假设有一根长度为L的针,在两个平行线之间随机投掷,求解针与线相交的概率。
假设这两条平行线的距离为D,那么可以通过几何分析,推导出针与线相交的概率为:
P=2L/πD
其中,π是圆周率。
通过这个公式,我们可以计算出针与线相交的概率。
不过需要注意的是,这个公式只适用于针的长度小于等于两条平行线之间的距离,否则会出现无法相交的情况。
投针问题是一个典型的几何概率问题,它不仅具有理论研究的价值,还有很多实际应用。
例如在统计物理中,可以通过投针问题来推导出理想气体状态方程,或者用于模拟随机游走等过程。
- 1 -。
小学趣味数学:比丰投针问题
比丰投针问题(Buffon'sneedleproblem)是第一个用几何形式表达概率问题的例子。
这问题是十八世纪法国数学家比丰和勒克莱尔提出的,并记载于比丰1777年出版的著作中──“在一平面上画有一组间距为d的并行线,将一根长度为L(L<d)的针任意投掷这个平面上,求此针与任一并行线相交的概率。
”。
比丰证明了该针与任意并行线相交的概率为p=2L/(dπ)。
利用这公式,将这一试验重复进行多次,并记下相交的次数,便得到p的经验值,即可算出圆周率π的近似值。
1850年沃尔夫在投掷五千多次后,得到π的近似值为3.1596.1855年英国人史密斯投了3200次,得到π的值为3.1533.
另一英国人福克斯只投了1100次,却得到了精确的三位小数的π值3.1419.直到目前,用这方法得到最好π值的是意大利人拉泽里尼,他在1901年投了3408次,得到的圆周率近似值精确到6位小数。
比丰投针问题开创了使用随机数处理确定性数学问题的先河,对概率论的发展有一定贡献。
——来源网络,仅供个人学习参考1 / 1。
Buffon投针实验一、实验目的:在计算机上用试验方法求圆周率的近似值。
二、实验原理:假设平面上有无数条距离为1的等距平行线,现向该平面随机投掷长度为L(L≤1)的针,则针与平行线相交的概率 P=。
设针的中心M与最近一条平行线的距离为x,则x~U(0,1);针与平行线的夹角为(不管相交与否),则~U(0,)如图:()在矩阵上均匀分布,且针与平行线相交的充要条件为x≤=;P=P{ x=}。
记录≤成立的次数,记为由-大数定理:≈,则=2。
在计算机上产生则=~U(0,),i=1,2,…,n;再产生,则, i=1,2,…,n三、实验方法及代码:在计算机上进行模拟实验,求出的实验值。
给定L,在计算机上利用MFC独立随机产生x和,然后判断≤是否成立.代码如下:#include "stdafx.h"#include "buffon.h"#include "ChildView.h"#include "ChoiceDlg.h"#include <ctime>#include <cmath>#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE[] = __FILE__;#endif// CChildViewCChildView::CChildView(){Trynum=1000;}CChildView::~CChildView(){}BEGIN_MESSAGE_MAP(CChildView,CWnd )//{{AFX_MSG_MAP(CChildView)ON_WM_PAINT()ON_COMMAND(ID_TOOL_NUM, OnToolNum)ON_COMMAND(ID_TOOL_RETRY, OnToolRetry)//}}AFX_MSG_MAPEND_MESSAGE_MAP()// CChildView message handlersBOOL CChildView::PreCreateWindow(CREATESTRUCT& cs){if (!CWnd::PreCreateWindow(cs))return FALSE;cs.dwExStyle |= WS_EX_CLIENTEDGE;cs.style &= ~WS_BORDER;cs.lpszClass = AfxRegisterWndClass(CS_HREDRAW|CS_VREDRAW|CS_DBLCLKS,::LoadCursor(NULL, IDC_ARROW), HBRUSH(COLOR_WINDOW+1), NULL);return TRUE;}void CChildView::OnPaint(){CPaintDC dc(this),*pDC;pDC=&dc;CFont font, *pOldFont;font.CreatePointFont(200,"宋体");pOldFont=pDC->SelectObject(&font);pDC->SetTextColor(RGB(255,0,0));pDC->TextOut(100,5,"蒲丰投针试验");pDC->SelectObject(pOldFont);CPen myPen1,myPen2, *pOldPen1,*pOldPen2;CRect rect1(30,30,920,620);pDC->Rectangle(rect1);myPen1.CreatePen(PS_SOLID, 1, RGB(0,0,255));pOldPen1=pDC->SelectObject(&myPen1);for(int i=100;i<600;i+=50){pDC->MoveTo(50,i);pDC->LineTo(900, i);}pDC->SelectObject(pOldPen1);myPen2.CreatePen(PS_SOLID, 1, RGB(0,255,0));pOldPen2=pDC->SelectObject(&myPen2);srand(time(0));int a,b,q,a1,b1,su,flag;np=0;for(int j=0;j<Trynum;j++){a=rand()%850+50;b=rand()%450+100;q=rand()%180;a1=25*cos(q);b1=25*sin(q);su=pow(-1,rand()%2);pDC->MoveTo((a-su*a1),(b-su*b1));pDC->LineTo((a+su*a1),(b+su*b1));if( (b%50) >= 25 )flag =50-b%50;elseflag = b%50;if( 25*sin(q) >= flag )np++;}pDC->SelectObject(pOldPen2);CString str;int c=Trynum/(np*1.0);int d=(int)((Trynum/(np*1.0)*100000))%100000;str.Format("投针次数:%d;\n相交次数:%d;\nπ的估算值:%d.%d",Trynum,np,c,d);MessageBox(str,"实验数据信息");}void CChildView::OnToolNum(){CChoiceDlg mydlg;if(mydlg.DoModal()==IDOK){this->Trynum = mydlg.m_Trynum ;this->RedrawWindow();}}void CChildView::OnToolRetry(){// TODO: Add your command handler code herethis->RedrawWindow();}四、实验数据处理与分析:根据实验数据,得到近似值为3.2313,可得相对误差为δ=(3.2313-π)/π≈0.02856;运行截图:五、实验小结:本次实验,通过MFC进行模拟投针,模拟效果较好,随着投针次数模拟的增多,实验结果逼近于π的真实值,但是实验程序有待优化,在较多投针次数的模拟中,实验程序运行速度较慢,可以改进相关算法来做适当调节。
投针法计算圆周率原理今天来聊聊投针法计算圆周率原理的事。
你说这圆周率,大家都知道是圆周长和直径的比值,一般用希腊字母π表示。
那它和投针能有啥关系呢?这可就有趣了。
我先给你讲个生活中的小现象。
你看,下雨天地上会有好多小水洼。
假如你有一些直直的小树枝,你随便往水洼里扔这些树枝。
这时候就会有个很神奇的情况,树枝落在水洼里的情况各不相同,有的可能就横跨了水洼的某条直径,有的可能就是斜着在水洼中的某个位置,有的可能和水洼里一些想象的线条平行或者有夹角。
再来聊聊这个投针法算圆周率。
这就好比我们把这个地面、水洼看成一个有好多等距平行线的大平面。
那针就相当于是那些小树枝。
这里呢,我们得了解一些专业术语,像针和平行线的长度都是有具体要求的。
这里有个专业理论,假如我们设针的长度是l,平行线之间的距离为d (l <= d),投针的次数为n,针与平行线相交的次数为m。
根据概率论,就有这样一个神奇的公式:π= 2ln / dm。
为啥会这样呢?打个比方吧,就像是在抽奖,针落在不同的位置就像是不同的抽奖结果。
每一次投针就像抽一次奖,针与平行线相交或者不相交都是可能的结果。
老实说,我一开始也不明白,为啥投针能和圆周率联系起来呢?后来我慢慢地学习才发现,这背后其实是利用了概率和几何之间的奇妙关系。
这个投针法呢,在实际中就算我们不像专业数学家那么精确地去做实验,也能大概理解它的原理。
比如说我们可以在一张画满等距平行线的纸上,拿长度合适的针来模拟这个实验,多扔几次针,然后按照公式去估算圆周率呢。
说到这里,你可能会问,如果针和线很粗会怎么样呢?这就是个很好的思考方向哦。
在实际应用中,我们就必须要考虑针的粗细以及线条的宽度等因素对结果的影响。
这就告诉我们,这个投针法看似简单但是有很多需要注意的地方。
我觉得这个投针法真的很有趣,它让我们看到了看似毫不相关的事情之间奇妙的联系。
不知道你对这个投针法有没有自己的想法呢?欢迎一起讨论呀。
/4.因为对于每一个z,这个概率都为(π-2)/4,因此对于任意的正数x,y,z,有P=(π-2)/4,命题得证。
为了估算π的值,我们需要通过实验来估计它的概率,这一过程可交由计算机编程来实现,事实上x+y>z,x²+y²;﹤z²;等价于(x+y-z)(x²+y²-z²;)﹤0,因此只需检验这一个式子是否成立即可。
若进行了m 次随机试验,有n次满足该式,当m足够大时,n/m趋近于(π-2)/4,令n/m=(π-2)/4,解得π=4n/m+2,即可估计出π值。
值得注意的是这里采用的方法:设计一个适当的试验,它的概率与我们感兴趣的一个量(如π)有关,然后利用试验结果来估计这个量,随着计算机等现代技术的发展,这一方法已经发展为具有广泛应用性的蒙特卡罗方法。
计算π最稀奇方法之一计算π的最为稀奇的方法之一,要数18世纪法国的博物学家C·布丰和他的投针实验:在一个平面上,用尺画一组相距为d的平行线;一根长度小于d的针,扔到画了线的平面上;如果针与线相交,则该次扔出被认为是有利的,否则则是不利的.布丰惊奇地发现:有利的扔出与不利的扔出两者次数的比,是一个包含π的表示式.如果针的长度等于d,那么有利扔出的概率为2/π.扔的次数越多,由此能求出越为精确的π的值.公元1901年,意大利数学家拉兹瑞尼作了3408次投针,给出π的值为3.1415929——准确到小数后6位.不过,不管拉兹瑞尼是否实际上投过针,他的实验还是受到了美国犹他州奥格登的国立韦伯大学的L·巴杰的质疑.通过几何、微积分、概率等广泛的范围和渠道发现π,这是着实令人惊讶的!证明下面就是一个简单而巧妙的证明。
找一根铁丝弯成一个圆圈,使其直径恰恰等于平行线间的距离d。
可以想象得到,对于这样的圆圈来说,不管怎么扔下,都将和平行线有两个交点。
[投针法测圆周率] 详细设计文档填写时间二零一四年四月十二日目录1引言 (3)1.1 编写目的 (3)1.2 背景 (3)1.3 定义 (3)1.4 参考资料 (3)2程序系统的结构 (4)3程序设计说明 (4)3.1 概述 (5)3.2 功能 (5)3.3 输入项 (5)3.4 输出项 (6)3.5 算法 (6)3.6 流程逻辑 (7)3.7 限制条件 (8)3.8 实施方案 (8)3.9 尚未解决的问题 (8)3.10 运行环境及配置说明 (8)4程序2设计说明 (9)1引言1.1编写目的编写本书的目的在于让用户能够清楚地看懂、理解本程序的代码,了解设计原理,更好的使用本程序。
1.2背景(1)软件系统名称:投针法测圆周率(2)任务提出者:魏海坤老师(3)开发者:蒋荣星(4)用户:对圆周率计算感兴趣的C++编程爱好者(5)系统逻辑:树状结构1.3定义列出本文件中用到专门术语的定义和外文首字母组词的原词组。
#include<iostream>#include<conio.h>#include<stdio.h>#include<time.h>#include<graphics.h>#include<math.h>#include<iostream>#include<windows.h>using namespace std;1.4参考资料列出有关的参考资料,如:属于本项目的其他已发表的文件;本文件中各处引用到的文件资料,包括所要用到的软件开发标准。
列出这些文件的标题、文件编号、发表日期和出版单位,说明能够取得这些文件的来源。
《C++程序设计》吴乃陵况迎辉2程序系统的结构用一系列图表列出本程序系统内的每个程序(包括每个模块和子程序)的名称和它们之间的层次结构关系。
3程序设计说明从本章开始,逐个地给出各个层次中的每个程序的设计考虑。
投针实验计算圆周率的数学分析王向东投针实验计算圆周率的数学证明方法,初中一般是采取假设针弯成直径等于平行线距离的方法巧妙证明。
这个方法是基于不管针弯成什么形状,针上的每一个部位与平行线相交的概率相同,但这是感观上的认识,要把其中原因解释清楚不是很容易。
笔者从纯数学的角度来推导这个公式。
一、投针问题的由来1777年法国科学家布丰提出的一种计算圆周率的方法——随机投针法,即著名的蒲丰投针问题。
这一方法的步骤是:1) 取一张白纸,在上面画上许多条间距为d 的平行线。
2) 取一根长度为()l l d <的针,随机地向画有平行直线的纸上掷n 次,观察针与直线相交的次数,记为m3)计算针与直线相交的概率.18世纪,法国数学家布丰和勒可莱尔提出的“投针问题”,记载于布丰1777年出版的著作中:“在平面上画有一组间距为d 的平行线,将一根长度为()l l d <的针任意掷在这个平面上,求此针与平行线中任一条相交的概率。
”布丰本人证明了,这个概率是:2lp d π=,π为圆周率。
二、投针实验的数学证明投针这个动作是由两个事件构成的。
事件1:针投下后与平行线构成一定的夹角。
我们来分析一下针投下后与平行线之间的成某一特定夹角时的概率。
设针投下后与平行线之间的夹角为θ,则θ在0与π之间。
针与平行线之间的夹角在θ到θ+θ∆之间的概率为1p θπ∆=,当0θ∆→时,可看作针投下后与平行线之间成某一特定夹角为θ的概率。
事件2:针投下后会在平行线垂直的方向形成一个投影,针与平行线相交等于它的垂直投影与平行线相交。
这个投影的长度'l 在0到l 之间。
此时针在水平方向的投影为'sin()l l θ=。
再分析'l 与平行线相交的概率。
等于我们将问题转化成长度为'l 的针,并且只允许它处在与平行线垂直的方向上,这时它与平行线相交的概率显然为:2'sin()l l p d d θ==因为每一次投掷都是由上述两个事件组成的,因而对于针与平行线之间的夹角在θ到θ+θ∆之间时,针与平行线相交的概率()p θ为这两个事件概率的乘积,即:12sin()().l p p p d θθθπ∆== 因为针与平行线之间构成的夹角在0-π之间每个角度的机会都是均等的,因此针与平行线相交的概率相当于针落在每个θ附近θ∆范围内,当0θ∆→时与平行线相交的所有概率之和。
蒲丰投针问题1777年法国科学家布丰提出的一种计算圆周率的方法——随机投针法,即著名的蒲丰投针问题。
投针步骤这一方法的步骤是:1) 取一张白纸,在上面画上许多条间距为d的平行线。
2) 取一根长度为l(l<d)的针,随机地向画有平行直线的纸上掷n次,观察针与直线相交的次数,记为m3)计算针与直线相交的概率.18世纪,法国数学家布丰和勒可莱尔提出的“投针问题”,记载于布丰1777年出版的著作中:“在平面上画有一组间距为d的平行线,将一根长度为l (l<d)的针任意掷在这个平面上,求此针与平行线中任一条相交的概率。
”布丰本人证明了,这个概率是p=2l/(πd) π为圆周率利用这个公式可以用概率的方法得到圆周率的近似值。
下面是一些资料实验者年代投掷次数相交次数圆周率估计值沃尔夫 1850 5000 2531 3.1596 L/D=0.8史密斯 1855 3204 1219 3.1554 L/D=0.6德摩根 1680 600 383 3.137 L/D=1福克斯 1884 1030 489 3.1595 L/D=0.75拉泽里尼 1901 3408 1808 3.1415929 L/D=0.8赖纳 1925 2520 859 3.1795 L/D=0.5布丰投针实验是第一个用几何形式表达概率问题的例子,他首次使用随机实验处理确定性数学问题,为概率论的发展起到一定的推动作用。
像投针实验一样,用通过概率实验所求的概率来估计我们感兴趣的一个量,这样的方法称为蒙特卡罗方法(Monte Carlo method)。
蒙特卡罗方法是在第二次世界大战期间随着计算机的诞生而兴起和发展起来的。
这种方法在应用物理、原子能、固体物理、化学、生态学、社会学以及经济行为等领域中得到广泛利用。
法国数学家布丰(1707-1788)最早设计了投针试验。
并于1777年给出了针与平行线相交的概率的计算公式P=2L/πd(其中L是针的长度,d是平行线间的距离,π是圆周率)。
教材提到了“投针实验”求圆周率的方法。
1777年,法国数学家蒲丰取一根针,量出它的长度,然后在纸上画上一组间距相等的平行线,这根针的长度是这些平行线的距离是的一半。
把这根针随机地往画满了平行线的纸面上投去。
小针有的与直线相交,有的落在两条平行直线之间,不与直线相交。
这次实验共投针2212次,与直线相交的有704次,2212÷704≈3.142。
得数竟然是π的近似值。
这就是著名的蒲丰投针问题。
后来他把这个试验写进了他的论文《或然性算术尝试》中。
蒲丰证明了针与任意平行线相交的概率为 p = 2l/πd 。
这个公式中l为小针的长,d为平行线的间距。
由这个公式,可以用概率方法得到圆周率的近似值。
当实验中投的次数相当多时,就可以得到π的更精确的值。
蒲丰实验的重要性并非仅仅是为了求得比其它方法更精确的π值。
而在于它是第一个用几何形式表达概率问题的例子。
计算π的这一方法,不但因其新颖,奇妙而让人叫绝,而且它开创了使用随机数处理确定性数学问题的先河,是用偶然性方法去解决确定性计算的前导。
找一根粗细均匀,长度为d 的细针,并在一张白纸上画上一组间距为l 的平行线(方便起见,常取l = d/2),然后一次又一次地将小针任意投掷在白纸上。
这样反复地投多次,数数针与任意平行线相交的次数,
布丰(Comte de Buffon)设计出他的著名的投针问题(needle problem)。
依靠它,可以用概率方法得到π的近似值。
假定在水平面上画上许多距离为a的平行线,并且,假定把一根长为l<a的同质均匀的针随意地掷在此平面上。
布丰证明:该针与此平面上的平行线之一相交的概率为:p=2l/(api) 把这一试验重复进行多次,并记下成功的次数,从而得到P的一个经验值,然后用上述公式计算出π的近似值,用这种方法得到的最好结果是意大利人拉泽里尼(Lazzerini)于1901年给出的。
他只掷了3408次针,就得到了准确到6位小数的π的值。
他的试验结果比其他试验者得到的结果准确多了,甚至准确到使人们对它有点怀疑。
还有别的计算π的概率方法。
例如,1904年,查尔特勒斯(R·Chartres)就写出了应用下列实例的报告:如果写下任意两个整数测它们互素的概率为6/π2。
下面就是一个简单而巧妙的证明。
找一根铁丝弯成一个圆圈,使其直径恰恰等于平行线间的距离d。
可以想象得到,对于这样的圆圈来说,不管怎么扔下,都将和平行线有两个交点。
因此,如果圆圈扔下的次数为n次,那么相交的交点总数必为2n。
现在设想把圆圈拉直,变成一条长为πd的铁丝。
显然,这样的铁丝扔下时与平行线相交的情形要比圆圈复杂些,可能有4个交点,3个交点,2个交点,1个交点,甚至于都不相交。
由于圆圈和直线的长度同为πd,根据机会均等的原理,当它们投掷次数较多,且相等时,两者与平行线组交点的总数可望也是一样的。
这就是说,当长为πd的铁丝扔下n次时,与平行线相交的交点总数应大致为2n。
现在转而讨论铁丝长为l的情形。
当投掷次数n增大的时候,这种铁丝跟平行线相交的交点总数m应当与长度l成正比,因而有:m=kl,式中k是比例系数。
为了求出k来,只需注意到,对于l=πk的特殊情形,有m=2n。
于是求得k=(2n)/(πd)。
代入前式就有:m≈(2ln)/(πd)从而π≈(2ln)/(dm)属于连续型随机变量。
概率为2/π = 64%。