Buffon投针实验的理论证明
Buffon掷针实验的计算机模拟实验的设计与实现
Buffon 掷针实验的计算机模拟实验的设计与实现收稿日期:2018-12-05基金项目:长沙理工大学大学生研究性学习与创新性实验项目(1203058);长沙理工大学教研教改项目(CNJG201808)作者简介:周浙泉,王志宇,张棣妍(女),隆超怡(女),长沙理工大学信息与计算科学专业2014级学生;万勇(1963-),硕士研究生,教授,研究方向:几何分析与偏微分方程。
一、研究背景18世纪,蒲丰(Buffon )提出Buffon 投针问题:(1)取一张白纸,在上面画上许多条间距为a 的平行线。
(2)取一根长度为l (l ≤a/2)的针,随机地向画有平行直线的纸上掷n 次,观察针与直线相交的次数,记为m 。
(3)计算针与直线相交的概率。
蒲丰证明了这个概率是:p=2l πa。
因为它与π有关,人们想到利用投针实验来估计圆周率的值。
历史上,有不少人做过蒲丰掷针实验:这个问题十分有趣,只是人工实验往往耗时、耗力,而用计算机模拟实验,却能迅速获得结果。
自从20世纪90年代美国率先开始数学实验以来,数学实验改变了人们传统的数学思维方式,人们发现数学是可以借助计算机去探索和发现的。
近十年来,国内外已有不少的数学实验教材和一些好的数学实验范例,但是这需要一定的计算机编程能力,如math-ematica 编程、matlab 编程等,才能实现人机对话,因此数学实验只能在具有一定数学知识和较高计算机编程能力的特定人群中使用,不能“飞入寻常百姓家”。
二、系统的设计本系统研发工具为Java 语言。
Java 是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。
Java 看起来设计得很像C++,但是能够自动处理对象的引用和间接引用,实现自动的无用单元收集,使用户不必为存储管理问题烦恼,能将更多的时间和精力花在研发上。
Java 是一个面向对象的语言。
蒲丰(Buffon)投针试验
一、利用Matlab计算机语言验证蒲丰(Buffon)投针试验问题给定a=10,b=5时,模拟100万次投针实验的Matlab程序如下:a=10;b=5;n=1000000;p=10; % a为平行线间距,b为针的长度,n为投掷次数,p为有效数字位数x=unifrnd(0,a/2,[n,1]);phi=unifrnd(0,pi,[n,1]); % 产生均匀分布的随机数,分别模拟针的中点与最近平行线的距离和针的倾斜角y=x<0.5*b*sin(phi); m=sum(y); % 计数针与平行线相交的次数PI=vpa(2*b*n/(a*m),p)运行结果PI =3.138919145二、利用C++计算机语言编程通过大量重复实验验证以下结论:三个阄,其中一个阄内写着“有”字,两个阄内不写字,三人依次抓取,各人抓到“有”字阄的概率均为1/3。
程序如下:#include<stdio.h>#include<stdlib.h>#include<time.h>void main(){int n=500000;int i,a[3]={0};srand(time(NULL));for(i=0;i<n;i++)a[rand()%3]++;printf("共测试%d次,其中有字事件有%d次, 占%.2f%%\n""抓到无字事件1有%d次,占%.2f%%\n""抓到无字事件2有%d次,占%.2f%%\n""抓到无字事件共%d次,占%.2f%%",n,a[0],a[0]*100.0/n,a[1],a[1]*100.0/n,a[2],a[2]*100.0/n,a[1]+a[2],(a[1]+a[2])*100.0/n);return 0;}。
Buffon's needle problem
d ℓ
2 2
) − arcsin
d ) ℓ
以上公式告诉我们在ℓ = d时得出p= 时的概率趋于1。
2
π
,概率依ℓ严格递增,而且当
ℓ→∞
2
π /2
π
∫
0
ℓ sin α 2 ℓ 2 ℓ π /2 dα = [ − cos α ] 0 = d π d π d
d 对于长针,只要 ℓ sin α ≤,即角度在 0 ≤ α ≤ arcsin ℓ 内变化,我们得 到相同的概率。但是,对于更大的角 α ,针就必定穿过横线,于 是其概率一定为1,因此对于 ℓ ≥ d 我们计算可得:
E ( P n ) ≤ E (C ) ≤ E ( P )
n
n
现在 P n和 P 都是多边形,因此两者与直线交叉点的期望均 为“c倍的长度”,又对于圆C的交叉点为2,因此 n c ℓ ( P) <= 2 <=c ℓ ( P )。 (1) n n n lim ℓ ( P n ) = dπ = lim ℓ ( P ) n 其中, → ∞ 时, Pn 和 P 与圆C近似。特别是,→ ∞ n n→∞ n → ∞ 时, cdπ ≤ 2 ≤ cdπ ,得 因此根据(1)可推出当 到c = 2 1 π d
记投掷一根长度为ℓ的直针产生的交叉点的期望个数记 为E(ℓ),若ℓ=x+y,x和y可分别看作是针的前端和后端, 则有E(x+y)=E(x)+E(y),因为交点数总是恰好等于前端 产生的加上后端产生的那些。 由期望的线性性,我们可得到E(rx)=rE(x)对所有的 有理数 r ∈ Q 成立
此外,,E(x)显然在 其中c=E(1)
Buffon’s needles problem 蒲丰投针问题
Buffon投针试验
a
M x
m(G ) G的面积 P ( A) m( S ) S的面积
b 0 2 sin d a π 2 b 2b . a π aπ 2
π
蒲丰投针试验的应用及意义
根据频率的稳定性, 当投针试验次数n很大时, m 算出针与平行直线相交的次数m, 则频率值 即可 n 作为P( A)的近似值代入上式, 那么
定义 当随机试验的样本空间是某个区域,并且任 意一点落在度量 (长度, 面积, 体积) 相同的子区域 是等可能的,则事件 A 的概率可定义为
m( A) P( A) m( S )
(其中m( S ) 是样本空间的度量, m( A) 是构成事件 A 的子区域的度量 ) 这样借助于几何上的度量来合理 规定的概率称为几何概率.
投针试验的所有可能结果 与矩形区域 a S {( x, ) | 0 x , 0 } 2 中的所有点一一对应. 由投掷的任意性可知, 这是一个几何概型问题. 所关心的事件
A {针与任一平行直线相交} 发生的充分必要条件为S中的点满足
b 0 x sin , 0 π 2
蒲丰投针试验
例 1777年,法国科学家蒲丰(Buffon)提出了投针 试验问题.平面上画有等距离为a(>0)的一些平行直 线,现向此平面任意投掷一根长为b(<a)的针,试求 针与任一平行直线相交的概率.
解: 以x表示针投到平面上时, a 针的中点M 到最近的一条平行
M x
直线的距离, 表示针与该平行直线的夹角. 那么针落在平面上的位置可由( x, )完全确定.
几何概型
古典概型是关于试验的结果为有限且每个结果出现的 可能性相同的概率模型。一个直接的推广是:保留等 可能性,而允许试验的所有可能结果为直线上的一线 段,平面上的一区域或空间中的一立体等具有无限多 个结果的情形,称具有这种性质的试验模型为几何概 型.
Buffon投针实验报告
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进行模拟投针,模拟效果较好,随着投针次数模拟的增多,实验结果逼近于π的真实值,但是实验程序有待优化,在较多投针次数的模拟中,实验程序运行速度较慢,可以改进相关算法来做适当调节。
蒲丰投针原理
/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。
可以想象得到,对于这样的圆圈来说,不管怎么扔下,都将和平行线有两个交点。
蒲丰投针问题_概率论论文
Buffon投针问题摘要本文讨论了Buffon投针问题的解法及其不同解法之间的内在联系,同时从投针到投平面图形对Buffon投针问题给出了一些推广,并得到一般的结论,指出了其概率在探矿、近似计算中的应用。
关键词蒲丰投针概率随机试验近似计算一、引言蒲丰投针问题是由法国科学家蒲丰(Buffon)在1777年提出的,它是概率中非常有代表性的问题,它是第一个用几何形式表达概率问题的例子,其结论具有很强的理论与实际意义。
蒲丰针问题的解决不仅较典型的反应了集合概率的特征及处理方法,而且还可以由此领略到从“概率土壤”上开出的一朵瑰丽的鲜花——蒙特卡洛(Monte-Carlo)方法。
二、Buffon投针问题及其解法Buffon投针问题:平面上画有等距离的平行线,每两条平行线之间的距离为2a,向平面任意投掷一枚长为2l(l<a)的针,试求针与平行线相交的概率。
解:以x表示针的中点M到最近一条平行线的距离,以φ表示该针与平行线的夹角。
针与平行线的关系见图1.则有:0≤x≤a,0≤φ≤π,由它们所围成的矩形区域记为G1。
针与平行线相交的充要条件是:0≤x≤lsinφ,记满足这个关系的区域为g1(图2中的阴影部分)。
则所求概率为P1=g1的面积G1的面积=∫lsinφdφπaπ=2laπ三、Buffon投针问题不同解法及其内在联系上述解法是常见解法之一(记为解法一),这里讨论一下蒲丰针问题的其他解法及其之间的联系。
1.其他解法解法二:以x表示针的重点M到最近一条平行线的距离,y表示该针在此平行线上投影和长度,如图3所示。
易知x和y的取值范围是0≤x≤a,0≤y≤2l,这两个不等式确定了xOy平面上的矩形区域G2,针与平行线相交的充要条件是(y2)2+x2≤l2,该不等式确定了矩形区域G2(如图4所示)中的区域g2,从而所求概率为P2=g2的面积G2的面积=14·l·2l·π2l·a=lπ4a解法三:作垂直于平行线的直线,在该直线上选定一方向为正向,用z1,z2分别表示针头与针尾关于某平行线的纵坐标(如图5所示),该平行线的选取应使|z1+z2|≤2a。
蒲丰投针与蒙特卡洛(MonteCarlo)方法
蒲丰投针与蒙特卡洛(Monte —Carlo)方法1777年法国科学家蒲丰(Buffon )提出并解决了如下的投针问题:桌面上画有一些平行线,它们之间的距离都是,一根长为a )(a l l ≤的针随机地投在桌面上。
问:此针与任一直线相交的概率是多少?设表示针的中点到最近的一条平行线的距离,Y 表示针与平行线的夹角(如图),如果X 2sin l Y X <, 或Y lX sin 2<时,针与一条直线相交。
由于向桌面投针是随机的,所以用来确定针在桌面上位置的是二维随机向量。
并且在),(Y X X ⎟⎠⎞⎜⎝⎛2,0a 上服从均匀分布,在Y ⎟⎠⎞⎜⎝⎛2,0π上服从均匀分布,与Y 相互独立。
由此可以写出的联合概率密度函数:X ),(Y X⎪⎩⎪⎨⎧<<<<=其它20,204),(ππy ax ay x f 于是,所求概率为:∫∫∫∫===⎭⎬⎫⎩⎨⎧<<20sin 20sin 224),(sin 2πππal dxdy adxdy y x f Y l X P y ly lx ①由于最后的结果与π有关,因此有些人想利用它来计算π的值。
其方法是向桌面投针次,若针与直线相交次,则针与直线相交的频率为n k n k ,以频率代替概率,则有al n k π2=,所以aknl2=π。
下表列举了这些试验的有关资料。
投针试验的历史资料(折算为1)a 试验者 年份 针长投针次数n 相交次数k π的试验值Wolf 1850 0.85000 2532 3.1596 Smith1855 0.63204 1219 3.1554 De.Morgan 1860 1600 383 3.137 Fox 1884 0.751030 489 3.1595 Lazzerini 1901 0.833408 1801 3.1415929 Reina1925 0.5425208593.1795这个思路已被人们发展成为统计学的一个分支—随机试验法或称为蒙特卡洛(Monte—Carlo )方法,其中随机试验可借助计算机大量重复,以致结果更接近真值。
buffon投针
数学学习真正悲哀的就是,记住了某个神奇而伟大的定理,看懂了其最严密的推导过程,但却始终没能直观地去理解它。
虽然严密的推导是必要的,直观理解往往是不准确的,但如果能悟出一个让定理一瞬间变得很显然的解释,这不但是一件很酷的事,而且对定理更透彻的理解和更熟练的运用也很有帮助。
我惊奇地发现,国内的每一本高数课本上都严格地讲解了微积分基本定理的证明,但几乎没有任何一个课本上讲过积分等于函数下方的图形面积究竟是为什么。
事实上,这几乎是显然的,但还是有不少人学完微积分后仍然没有意识到。
每当谈到这个问题时,我更愿意首先提出一个非常有启发性的事实——圆的周长是2·pi·r,圆的面积就是pi·r^2,后者的导数正好就是前者。
这个现象是很容易理解的,因为圆的半径每增加一点,面积增加的就是周长那么一圈,换句话说面积的变化就等于周长。
类似地,如果你能找到一个函数g(x),它的导数正好就是f(x),那么当x每增加一点,g(x)就增加了一条小竖线段,显然g(x)就应当是f(x)下方的面积。
看清了这一点之后,我们才能欣赏到微积分基本定理真正牛B的地方。
原先大家都是用分割求极限的办法来求函数下方的面积,但Leibniz却把面积看作一个可变的整体,用一种办法“一下子”就把它求了出来。
有趣的是,这种现在看来如此自然的神奇办法,一千多年来居然没有任何人想到。
数学中有很多直观上看很不可思议的东西。
比如,神秘的常数pi就经常出现在一些貌似和它毫无关系的地方,其中最经典的例子莫过于Buffon投针实验。
Buffon投针实验是说,假设地板上画着一组间距为1的平行线。
把一根长度为1的针扔到地上,则这根针与地板上的平行线相交的概率为2/pi。
很多概率论课本上都会用微积分计算可行范围的方法求解Buffon投针问题,计算过程显得相当麻烦。
我一直觉得,这个问题一定有一个异常直观、一目了然的解释,不过我还从来没见到过,自己也没有想到过。
布丰投针数学分析与实验设计(原创)
l 由(1)和(2)我们可以得出一些结论: n 根长度为 的小 n 针仍出去后压线的概率之和与一根长为 l 的针扔出去后压线 l 的概率相等;将 n 根长为 的小针连接成任意形状后扔出去 n 压线的概率与长为 l 的针扔出去压线的概率相等;当 n ,线就是曲线,所以结论可以进一步推广:随机投
k
称作这个连分式的第 k 个渐进分数。同时,
k
它也是所有分母不超过
q 的分数中最接近实数 x 的分数,
k
k
是实数 x 的第 k 个最佳渐进分数。
k
求渐进连分式,当然可以用上面分式求出,下面给出第
p k 个渐进连分式 的递推求法: q p a q 1 p a a 1 q a a p p ( k 2) p q a q q ( k 2 )
如上图所示,AB 针的长度为 2l ,CD 针长度为 l 。在 AB 针 或 AB 针的延长线与直线的夹角为 ,AB 针的中点 M 的取
角 相等,所以 M ' , M ' ' 是 m' , m' ' 的两倍,于是 CD 与直线相交的概率是 AB 与直线相交的概率的一半。对于其 余任意夹角都有这个结论。所以:长度为 l 的针与直线相交 的概率是长度为 2l 的针与直线相交概率的一半。
产生误差原因 1:m/n 的精度问题,这个是数学造 成的误差。解决办法:选取合适的 m 值,使 m/n 的有 效数字达到要求的精度。 产生误差原因 2:如果针的端点与直线非常接近, 例如相距万分之一毫米,用肉眼无法判断针是否与直线 相交,造成误差。解决办法:该次事件无效,不予统计, 继续进行下一次实验。 产生误差原因 3:l/d 的精度问题,这是测量问题。 产生误差的原因 1 和 2,我们都可以解决,使之达
投针试验
投针试验投针问题1777年法国科学家布丰提出的一种计算圆周率的方法——随机投针法,即著名的布丰投针问题。
投针步骤这一方法的步骤是:1)取一张白纸,在上面画上许多条间距为a的平行线。
2)取一根长度为l(l<a)的针,随机地向画有平行直线的纸上掷n次,观察针与直线相交的次数,记为m3)计算针与直线相交的概率.18世纪,法国数学家布丰和勒可莱尔提出的“投针问题”,记载于布丰1777年出版的著作中:“在平面上画有一组间距为a的平行线,将一根长度为l(l<a)的针任意掷在这个平面上,求此针与平行线中任一条相交的概率。
”布丰本人证明了,这个概率是p=2l/(πd) π为圆周率利用这个公式可以用概率的方法得到圆周率的近似值。
下面是一些资料试验者时间投掷次数相交次数圆周率估计值Wolf1850年5000 2532 3.1596Smith 1855年3204 1218.5 3.1554C.De Morgan 1680年600 382.5 3.137Fox1884年1030 489 3.1595Lazzerini 1901年3408 1808 3.1415929Reina 1925年2520 859 3.1795设这三个正数为x,y,z,不妨设x≤y≤z,对于每一个确定的z,则必须满足x+y>z,x²+y²;﹤z²;,容易证明这两个式子即为以这3个正数为边长可以围成一个钝角三角形的充要条件,用线性规划可知满足题设的可行域为直线x+y=z与圆x²+y²=z²;围成的弓形,总的可行域为一个边长为z的正方形,则可以围成一个钝角三角形的概率P=S弓形/S正方形=(πz²/4-z²/2)/z²=(π-2)/4.因为对于每一个z,这个概率都为(π-2)/4,因此对于任意的正数x,y,z,有P=(π-2)/4,命题得证。
数学史上的经典实验:布丰投针实验
布丰投针实验公元1777年的一天,法国科学家D•布丰(D.Buffon1707~1788)的家里宾客满堂,原来他们是应主人的邀请前来观看一次奇特试验的。
试验开始,但见年已古稀的布丰先生兴致勃勃地拿出一张纸来,纸上预先画好了一条条等距离的平行线。
接着他又抓出一大把原先准备好的小针,这些小针的长度都是平行线间距离的一半。
然后布丰先生宣布:“请诸位把这些小针一根一根往纸上扔吧!不过,请大家务必把扔下的针是否与纸上的平行线相交告诉我。
”客人们不知布丰先生要玩什么把戏,只好客随主意,一个个加入了试验的行列。
一把小针扔完了,把它捡起来又扔,而布丰先生本人则不停地在一旁数着、记着,如此这般地忙碌了将近一个钟头。
最后,布丰先生高声宣布:“先生们,我这里记录了诸位刚才的投针结果,共投针2212次,其中与平行线相交的704次。
总数2212与相交数704的比值为3.142。
”说到这里,布丰先生故意停了停,并对大家报以神秘的一笑,接着有意提高声调说:“先生们,这就是圆周率π的近似值!”众客哗然,一时疑议纷纷,大家全部感到莫名期妙:“圆周率π?这可是与圆半点也不沾边的呀!”布丰先生似乎猜透了大家的心思,得意洋洋地解释道:“诸位,这里用的是概率的原理,如果大家有耐心的话,再增加投针的次数,还能得到π的更精确的近似值。
不过,要想弄清其间的道理,只好请大家去看敝人的新作了。
”随着布丰先生扬了扬自己手上的一本《或然算术试验》的书。
π在这种纷纭杂乱的场合出现,实在是出乎人们的意料,然而它却是千真万确的事实。
由于投针试验的问题,是布丰先生最先提出的,所以数学史上就称它为布丰问题,布丰得出的一般结果是:如果纸上两平行线间相距为d,小针长为l,投针的次数为n,所以投的针当中与平行线相交的次数的m,那么当n相当大时有:π≈(2ln)/(dm)在上面故事中,针长l恰等于平行线间距离d的一半,所以代入上面公式简化得:π≈n/m值得一提的是,后来有不少人步布丰先生的后尘,用同样的方法来计算π值。
【数学课件】投针试验
π的试验值
3.159 6 3.155 4 3.137 3.159 5 3.141 592 9 3.17 5
课外冲浪
用计算机实现统计模拟或抽 样,以获得问题的近似解,称为 蒙特卡罗(Monte Carlo)方法, 又称统计模拟法或统计试验法。 它是以概率和统计的理论为基础 的一种计算方法,他将所求解的 问题与一定的概率模型相联系。
好好学习,天天向上。
准确、美观、独特、创新…的制作表1
Just do it!
分工合作:统计全班的试验数据 实验次数 200 400 600 800 1000 1200 1400 1600 1700
相交频数 相交频率
请每组同学利用全班的试验数据制作折线统计图; 通过本次试验、统计的过程,你什么发现和感想吗?
投针试验的历史资料
我的课堂,我做主
小组讨论: 用几句话归纳这节课的几个环节 完成了这节课的学习,对我影响最深的学 习体验是什么?
这节课还存在的疑惑是什么?又将如何去解决?
课外冲浪
最后蒲丰宣布结果:大家共投针2212次, 其中与直线相交的就有704次。用704去除2212, 得数为3.142。他笑了笑说:“这就是圆周率π 的近似值。”这时,众宾客哗然:“圆周率π? 这根本和圆沾不上边呀?”蒲丰先生却好像看透 了众人的心思,斩钉截铁地说:“诸位不用怀 疑,这的确就是圆周率π的近似值。你们看,连 圆规也不要,就可以求出π的值来。只要你有耐 心,投掷的次数越多,求出的圆周率就越精 确。”这就是数学史上有名的“投针试验”。
试验者
Wolf Smitn C.Dg morgan Fox Lazzerini Reina
时间
1850年 1855年 1860年 1884年 1901年 1925年
蒲丰投针试验---------概率论与数理统计
蒲丰资料
1777年,法国科学家蒲丰(Buffon)提ห้องสมุดไป่ตู้了投针 试验问题.平面上画有等距离为a(a>0)的一些平行直 线,现向此平面任意投掷一根长为b( b<a )的针,试求 针与某一平行直线相交的概率. 解 以 x表示针投到平面上时,
针的中点M到最近的一条平行
a
M x
直线的距离, 表示针与该平行直线的夹角.
1.0
0.75 0.83 0.5419
600
1030 3408 2520
382
489 1808 859
3.137
3.1595 3.1415929 3.1795
利用蒙特卡罗(Monte Carlo)法进行计算机模拟. 单击图形播放/暂停 ESC键退出 取a 1, b 0.85.
利用上式可计算圆周率π 的近似值.
历史上一些学者的计算结果(直线距离a=1)
试验者 Wolf Smith 时间 1850 1855 针长 0.8 0.6 投掷次数 相交次数 π的近似值 5000 3204 2532 1218 3.1596 3.1554
De Morgan 1860
Fox Lazzerini Reina 1884 1901 1925
那么针落在平面上的位置可由( x , )完全确定.
投针试验的所有可能结果与 矩形区域
a S {( x , ) 0 x ,0 π} 2 中的所有点一一对应 . 由投掷的任意性可知 这是一个几何概型问题.
a
M x
所关心的事件
o
A { 针与某一平行直线相交} 发生的充分必要条件为S 中的点满足 b 0 x sin , 0 π . 2
蒲丰(Buffon)投针随机试验的讨论 (修改稿)
(2006-3-7, 2009-9-18再修改)例 ( 蒲丰(Buffon )投针随机试验的讨论 ) 在平面上画有相互距离均为2a 的平行线束,向平面上随机投一枚长为2l 的针,为了避免针与两平行线同时相交的复杂情况,假定0>>l a , 设M 为针的中点,y 为M 与最近平行线的距离,φ为针与平行线的交角(如图1)a y ≤≤0, πϕ≤≤0. 于是,很明显,针与平行线相交的充要条件是ϕsin l y ≤(如图2),故相交的概率为ald l a dy d a p l πϕϕπϕπϕππ2 sin 1 1sin 000===⎰⎰⎰ (1) 我们用n 表示投针次数, n S 表示针与平行线相交次数,由大数定理知,当n 充分大时,频率接近于概率,即aln S n π2≈ 于是有naS nl2≈π (2)这就是上面所说的用随机试验求π值的基本公式。
根据公式(2),19—20世纪,曾有不少学者做了随机投针试验,并得到了π的估计值 . 其中最详细的有如下两个 :其中π的估计值就是利用π的近似公式(8)得到的,即1596.363320002532455000362≈=⨯⨯⨯≈π (Wolf )1415929.31133551808334085.22≈=⨯⨯⨯≈π (Lazzarini )一般情况下,随机抽样试验的精度是不高的,Wolf 的试验结果是π≈3.1596,只准确两位有效数字 .精度是由方差n p p n S D n )1(-=⎪⎭⎫⎝⎛决定的,为了确定概率p ,不妨取l =a 这一极限情况,这时π2≈p =0.6366,n n S D n 2313.0≈⎪⎭⎫⎝⎛,由积分极限定理, dx n p p p n S P x n n ⎰-∞→=⎪⎪⎭⎪⎪⎬⎫⎪⎪⎩⎪⎪⎨⎧≤--λλπλ221-e21)1(lim即频率n S n /近似地服从正态分布律()n p p p N /)1(,- . 如果要求以大于95%的概率(96.1=λ),保证以频率n S n /作为p 的近似值精确到三位有效数字,001.0≤-=p nS nε 即≈⎪⎪⎭⎫⎝⎛≤-001,0p n S P n 95.021/)1(001.0)1(001.0212≥⎰----np p np p x dx eπ则必须有96.1/)1(001.0=≥-λnp p根据上式,要求试验次数7.88001.0/231.096.122≈⨯≥n 万次 .至于Lazzarini 的试验,为什么实验次数少反而精确度却很高呢?这是由于这一试验结果恰好和祖冲之密率355/113相合,而祖冲之密率为无理数π的连分式,属于π的最佳有理逼近 . 很明显,作为一种具有随机性质的试验,其结果恰好与最佳有理逼近的结果一致是非常偶然的;顾及到上述讨论,故Lazzarini 的试验结果是不大可能的 .注:以上的讨论是第6章“假设检验”方法的一个有实际意义的例子。
Buffon投针实验的理论证明
Buffon投针实验的理论证明我们知道,当正多边形的边数无限增多时,它的极限是圆。
所以“圆”这种图形可以代表弯曲得最厉害的小针。
现在假定圆形小针的直径恰好与纸上两条相邻的平行线间的距离相等,那末这个圆形小针投掷下来时,不是和一条直线相交两次,就是和两条相邻的平行线相切。
不管怎样,它的相交次数是2。
因此,当投掷的次数为n时,碰线的次数便是2n。
现在小针的长度只有两条相邻平行线间距离的一半,所以针的长度只有上述圆形小针长度(即圆周长)的。
但是可能碰线的次数是与针的长度成正比的,因此小针的可能碰线的次数k就必须满足下面的比例式:1:(1/2π) =2n: k于是就得到π=n/k,也就是π=投掷总次数/碰线次数这就是上面“投针实验”的理论根据。
它又叫莆丰氏实验,在概率论中是很出名的,也可以说是近代的“统计试验法”(又叫“蒙特卡罗法”)的滥觞。
蒲丰(Buffon)投针求π蒲丰(Buffon)投针问题:在平面上画有等距离的一些平行线,平行线间的距离为a(a>0),向平面上随机投一长为l (l<a)的针,针与平行线相交的概率P,结果发现π=2*l/(a*p)。
一、实验目的蒲丰实验是采用投针来计算π的值,历史上也有许多的学者曾亲自做过这个实验,如下表:我们也可以来做这个实验,而且希望做更多次,但是投针又比较费时费力,于是,可以采用另一种设计随机实验的方法,随机模拟的办法来模拟蒲丰投针实验。
从而求得π的近似值。
二、实验方法可以采用MatLAB软件进行模拟实验,即用MATLAB编写程序来进行“蒲丰投针实验”。
1.基本原理:由于针投到纸上的时候,有各种不同的方向和位置(图a),但是,每一次投针时,其位置和方向都可以由两个量唯一确定,那就是针的中点和偏离水平的角度(图b)。
随机投针图针的某一特定位置于是,我们可以生成两个n*1随机矩阵,分别设为x和y,x 表示此时针的中点的位置,y表示此时针偏离水平方向的角度。
蒙特卡洛方法MC方法
首先给定初始电磁场和初始粒子,在电场和磁场的作用下按照牛顿力学及洛伦滋方程处理碰撞粒子对的位置和速度,得到一个时间步长后的粒子的新位置和速度。然后根据粒子运动前后的位置和速度,在空间网格上分配电荷、电流密度,最后利用Maxwell方程组求解新的电场和磁场。再在新的电场和磁场下更新粒子位置和速度,如此循环下去,模拟出等离子体的动态物理过程。并采用蒙特卡罗模型得到碰撞后的位置和速度.
假设在N次试验中事件A出现v次,那么观察频数v也是一个随机变量,其数学期望 ,方差 .令 ,表示观察频率,那么按照加强大数定理,当N充分大时,式 =p成立的概率等于1。因此由上述模型得到的频率 近似地等于所求量p。这就说明了频率收敛于概率,而且可以用样本方差
作为理论方差 的估计值[13]。
碰撞问题
等离子体中存在大量运动着的电子、离子、中性粒子,它们之间不断发生着各种类型的碰撞.
具体来说:
假设所要求的量x是随机变量 的数学期望 ,那么近似确定x的方法是对 进行N次重复抽样,产生相互独立的 值的序列 、 、……、 ,并计算其算术平均值:
根据大数定理有
因此,当N充分大时,下式
成立的概率为1,亦即可以用 作为所求量x的估计值。
用蒙特卡罗方法求解时,最简单的情况是模拟一个发生概率为P的随机事件A.考虑一个随机变量 ,若在一次试验中事件A出现,则 取值为1;若事件A不出现,则 取值为0.令q=1-p,那么随机变量 的数学期望 ,此即一次试验中事件A出现的概率。 的方差 。
图3。4碰撞截面示意图(摘自[12])
布丰投针实验原理
布丰投针实验原理在张远南先生的著作《偶然中的必然》里,有关于“布丰投针实验”的故事。
为了增加阅读的趣味性,我稍微做了一点改动。
1777年的一天,法国科学家布丰的家里宾客满堂,原来他们是应主人的邀请前来观看一次奇特试验的。
试验开始,但见年已古稀的布丰先生兴致勃勃地拿出一张纸来,纸上预先画好了一条条等距离的平行线。
接着他又抓出一大把原先准备好的小针。
然后布丰先生宣布:“请诸位把这些小针一根一根往纸上扔吧!不过,请大家务必把扔下的针是否与纸上的平行线相交,以及相交的次数告诉我。
客人们不知布丰先生要玩什么把戏,只好客随主意,一个个加入了试验的行列。
一把小针扔完了,把它捡起来再扔。
而布丰先生本人则不停地在一旁数着、记着,如此这般地忙碌了将近一个钟头。
最后,布丰先生高声宣布:“先生们,我这里记录了诸位刚才的投针结果,共投针2212次,其中与平行线相交的有704次。
总次数2212与相交次数704的比值为3.142。
”说到这里,布丰先生故意停了停,并对大家报以神秘的一笑,接着有意提高声调说:“先生们,这就是圆周率π的近似值!”客人们一片哗然,议论纷纷,大家全都感到莫名其妙:“圆周率π?这可跟投针半点也不沾边呀!”布丰先生似乎猜透了大家的心思,得意洋洋地解释道:“诸位,这里用的是概率的原理,如果大家有耐心的话,再增加投针的次数,还能得到π的更精确的近似值呢。
”那么,“布丰投针实验”的依据究竟是什么呢?下面就是书中简单而巧妙的证明。
为了便于理解,我把证明过程说得稍微详细一点。
假设那组平行线的间距等于d。
如果把一个直径为d的铁丝圆圈,扔到平行线组上,因为它的周长等于πd,所以,不论怎样扔,每个圆圈都会与平行线有两个交点。
因此,如果扔下的次数为n,交点的总数为m,必定有m=2n。
还用那组平行线,不过这回把圆圈剪开拉直,变成长度为πd的直铁丝。
显然,直铁丝与平行线相交的情形要比圆圈复杂,最多可能有4个交点,也可能有3个、2个、1个交点,也可能不相交,没有交点。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Buffon投针实验的理论证明
我们知道,当正多边形的边数无限增多时,它的极限是圆。
所以“圆”这种图形可以代表弯曲得最厉害的小针。
现在假定圆形小针的直径恰好与纸上两条相邻的平行线间的距离相等,那末这个圆形小针投掷下来时,不是和一条直线相交两次,就是和两条相邻的平行线相切。
不管怎样,它的相交次数是2。
因此,当投掷的次数为n时,碰线的次数便是2n。
现在小针的长度只有两条相邻平行线间距离的一半,所以针的长度只有上述圆形小针长度(即圆周长)的。
但是可能碰线的次数是与针的长度成正比的,因此小针的可能碰线的次数k就必须满足下面的比例式:
1:(1/2π) =2n: k
于是就得到π=n/k,也就是
π=投掷总次数/碰线次数
这就是上面“投针实验”的理论根据。
它又叫莆丰氏实验,在概率论中是很出名的,也可以说是近代的“统计试验法”(又叫“蒙特卡罗法”)的滥觞。
蒲丰(Buffon)投针求π
蒲丰(Buffon)投针问题:在平面上画有等距离的一些平行线,平行线间的距离为a(a>0),向平面上随机投一长为l (l<a)的针,针与平行线相交的概率P,结果发现π=2*l/(a*p)。
一、实验目的
蒲丰实验是采用投针来计算π的值,历史上也有许多的学者曾亲自做过这个实验,如下表:
我们也可以来做这个实验,而且希望做更多次,但是投针又比较费时费力,于是,可以采用另一种设计随机实验的方法,随机模拟的办法来模拟蒲丰投针实验。
从而求得π的近似值。
二、实验方法
可以采用MatLAB软件进行模拟实验,即用MATLAB编写程序来进行“蒲丰投针实验”。
1.基本原理:由于针投到纸上的时候,有各种不同的方向和位置(图a),但是,每一次投针时,其位置和方向都可以由两个量唯一确定,那就是针的中点和偏离水平的角度(图b)。
随机投针图
针的某一特定位置
于是,我们可以生成两个n*1随机矩阵,分别设为x和y,x 表示此时针的中点的位置,y表示此时针偏离水平方向的角度。
如图b,当x< 0.5*l*sin(y)的时候,即可认为此时的针与横线相交;只要随机生成n对这样的x和y,就可以模拟n次的投针实验,然后统计满足x< 0.5*l*sin(y)的x的个数,就可以认为这是相交的次数。
然后利用公式求得π值。
2.MATLAB编程
这是名字为P_Buffon的m文件:…………………………………………………………………………function PI=P_Buffon(a,l,n,p) %蒲丰投针实验求π,其中a 为横线间距,l为针的长度,n为投掷次数,p为有效位数
if l>a
error('针的长度不能超过横线间距,请确定l<a');
return;end
x=unifrnd(0,a/2,[n,1]);
f=unifrnd(0,pi,[n,1]);
y=x<0.5*l*sin(f);
m=sum(y) %显示相交次数
PI=vpa(2*l*n/(a*m),p); …………………………………………………………………………
三、实验数据(见附表)
四、数据分析
1)由数据可以看出,当l和a为定值,而次数改变时,相交次数也会改变,相交次数与投掷次数有个近似的线性关系,这个关系就是P,即相交的概率,但是n越大,对结果只是变化减小,n越大,并不会使得结果越准确。
2)由上面的实验数据第二部分可知,当间距和n(投掷次数)不变时,针长越大或是越小,都会越偏离π的真实值,一般来说,a可能在[0.6*l,0.8*l]之间时,会接近真实结果一些。