即着名的蒲丰投针问题
- 格式:ppt
- 大小:188.00 KB
- 文档页数:21
蒲丰投针 ―― Monte Carlo 算法背景:蒙特卡罗方法(Monte Carlo ),也称统计模拟方法,是在二次世界大战期间随着科学技术的发展和电子计算机的发明,而被提出的一种以概率统计理论为基础的一类非常重要的数值计算方法。
蒙特卡罗方法在应用物理、原子能、固体物理、化学、生态学、社会学以及经济行为等领域中得到广泛利用。
蒙特卡罗方法的名字来源于世界著名的赌城 —— 摩纳哥的蒙特卡罗。
其历史起源可追溯到1777年法国科学家蒲丰提出的一种计算圆周的方法 —— 随机投针法,即著名的蒲丰投针问题。
问题:设在平面上有一组平行线,间距为d ,把一根长L 的针随机投上去,则这根针和平行线相交的概率是多少?(其中 L < d )分析:由于 L < d ,所以这根针至多只能与一条平行线相交。
设针的中点与最近的平行线之间的距离为 y ,针与平行线的夹角为 θ (0 ≤ θ ≤ π)。
相交情形 不相交情形易知针与平行线相交的充要条件是:sin 2Ly x θ≤=由于1[0,], [0, ]2y d θπ∈∈,且它们的取值均满足平均分布。
建立直角坐标系,则针与平行线的相交条件在坐标系下就是曲线所围成的曲边梯形区域(见右图)。
所以有几何概率可知针与平行线相交的概率是sin d 2212LL p d d πθθππ==⎰Monte Carlo 方法:随机产生满足平均分布的 y 和 θ,其中1[0,], [0, ]2y d θπ∈∈,判断 y 是否在曲边梯形内。
重复上述试验,并统计 y 在曲边梯形内的次数 m ,其与试验次数 n 的比值即为针与平行线相交的概率的近似值。
clear;n = 100000; L = 1; d = 2; m = 0;for k = 1 : ntheta = rand(1)*pi; y = rand(1)*d/2;if y < sin(theta)*L/2m = m + 1; end endfprintf('针与平行线相交的概率大约为 %f\n', m/n)计算π的近似值利用该方法可以计算 π 的近似值:sin d 22 22 1n LL m p d m d L d n πθθπππ⇒≈==≈⎰下面是一些通过蒲丰投针实验计算出来的 π 的近似值:蒲丰投针问题的重要性并非是为了求得比其它方法更精确的π值,而是在于它是第一个用几何形式表达概率问题的例子。
蒲丰投针问题1.蒲丰简介蒲丰有的时候翻译成布丰,是18世纪法国著名的博物学家。
他喜欢研究数学和生物学。
主要的贡献有:(1)翻译了牛顿的《流数法》,流数法按现在的说法就叫微积分。
(2)写了一本巨著,这部巨著的名字叫《自然史》,因为他特别喜欢研究生物。
这个自然史一共有44卷,其中他生前写了36卷,后来他学生又完成了。
这本书对后来的世界有很大的影响,尤其影响到一个人叫达尔文,所以蒲丰这个人其实是很厉害的。
2.蒲丰投针1777年,在蒲丰晚年的时候,他有一次举行了一个家庭宴会。
邀请了一大堆他的朋友来帮他做实验。
做什么实验呢,就“投针”。
那朋友来了之后发现,就是桌子上有很多根间距相等的平行线。
然后蒲丰就说了,给你们同样大的针,你把这些针随机扔到这个桌子上。
然后宾客就随便扔吗,有可能这样,有可能这样……,随便扔是吧,这都有可能,什么情况都有可能。
有的针就没有跟平行线相交,比如这个,这个,这个,就没有相交,也有相交的,比如这个,这个,这个,这是相交的,对吧,然后他就数,他说这个针一共投了多少个呢?一共投了n =2212个。
其中与这个平行线相交的针有多少个,数了一下有m =704个。
然后他说,我现在可以计算圆周率了,别人都不信,他说你看我圆周率怎么算,我只要把这两个数相除就行了。
我用n 除以m ,这个数除完了大概是3.142,这个就是圆周率了。
别人说好神奇,这怎么回事儿,蒲丰说我给你解释解释这个原理是什么?其实这个原理并不复杂,我们来看一下它的原理是什么。
3. 蒲丰投针原理(1)首先,它这个平行线是严格平行的,那平行线之间的距离是固定的,是a 。
然后我随意地把一根针投上去,也许相交,也许不相交,这不一定。
比如说这个针投上去了,投上去了之后,针的总长是b ,针有一个中点叫M ,对吧,这个M 到它比较近的平行线之间的距离我们设为x ,大家注意,这个是针的中点到比较近的平行线的距离是x ,所以我们应该知道x 的范围。
x 的最小值就是这个终点正好落在平行线上,那最小值是0,对吧。
一、利用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;}。
一、蒲丰投针问题在平面上画有等距离的一些平行线,平行线间的距离为a(a>0) ,向平面上随机投一长为l(l<a)的针,针与平行线相交的概率p,结果发现π =2*l/(a*p).二、试验方法能够采纳MATLAB软件进行模拟实验,即用MATLAB编写程序来进行“蒲丰投针实验”。
1、基来源理因为针投到纸上的时候,有各样不一样方向和地点,但是,每一次投针时,其地点和方向都能够由两个量独一确立,那就是针的中点和偏离水平的角度。
以 x 表示针的中点到近来的一条平行线的距离,β表示针与平行线的交角。
明显有0<=x<=a/2 ,0<=β <=Pi 。
用边长为 a/2 及 Pi 的长方形表示样本空间。
为使针与平行线相交,一定x<=l*sinβ * ,知足这个关系的地区面积是从0 到Pi的l*sinβ对β的积分,可计算出这个概率值是(2l)/(Pi*a)。
只需随机生成n 对这样的x 和β,就能够模拟 n 次的投针实验,而后统计知足 x<=l*sin β * 的 x 的个数,就能够以为这是订交的次数。
而后利用公式求得π值。
2、MATLAB编程clear ('n')clear('a')clear('x')clear('f')clear ('y')clear ('m')disp(' 本程序用来进行投针实验的演示, a 代表两线间的宽度,针的长度 l=a/2 ,n 代表实验次数 '); a=input(' 请输入 a:');n=input(' 请输入 n:');x=unifrnd(0,a/2,[n,1]);f=unifrnd(0,pi,[n,1]);y=x<*a*sin(f);m=sum(y);PI=vpa(a*n/(a*m))三、实验数据 ( 部分程序截屏见后 )a n PI第一次310000第二次310000第三次3100000第四次3100000第五次31000000第六次31000000第七次3第八次3第九次3第十次3四、实验结论从上述数据剖析可知,跟着模拟次数的愈来愈多, PI 的值渐渐稳固在π值邻近,即愈来愈趋近于π,故蒲丰投针实验的确能够模拟出π的值。
蒲丰投针问题
1.有一只小猫,抓到20只老鼠,他准备每次吃掉奇数位置的老鼠,直到最后一只老鼠就把它放生,有一只很聪明的老鼠听到这里,就站到了一个位置上,最后它果然是那只被放生的老鼠,请问它站的是第几个位置?
2.伟大的数学家蒲丰,他邀请了他的很多朋友到他家,他在纸上画了很多间距相同的平行线,他给了他朋友很多长度是平行线间距一半的针,经过几千次的数据收集,针与平行线相交的数量与总数量的比值是
3.14,与π接近,各位知道是什么原因吗?。
/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。
实验说明1:蒲丰投针一、 实验目的1、 运用基本采样技术计算积分;2、 体会用随机模拟方法解决实际问题。
二、 问题描述在历史上人们对π的计算非常感兴趣性,发明了许多求π的近似值的方法。
1777年法国科学家蒲丰(Buffon )提出并解决了如下的投针问题来近似求解π。
蒲丰投针问题如图1所示。
桌面上画有间隔为a (a >0) 的一些平行线,向平面任意投一枚长为l (l <a )的针,可以通过求针与任一平行线相交的概率,进而求得π的近似值。
用X 表示针的中点与最近一条平行线的距离,Y 表示针与此直线间的夹角。
如果sin 2X l Y <,或sin 2l X Y <时,针与一条直线相交。
图1:蒲丰投针示意图由于向桌面投针是随机的,所以可以用二维随机向量(X ,Y )来确定针在桌面上位置。
并且X 在0,2a ⎛⎞⎜⎜⎜⎝上服从均匀分布, Y 在0,2π⎛⎞⎟⎜⎟⎜⎟⎜⎝⎠上服从均匀分布, X 与Y 相互独立。
由此可以写出的联合概率密度函数为: ()40,0,220a x y f x y a ππ⎧⎪⎪<<<<⎪=⎨⎪⎪⎪⎩其他。
用随机事件A 针与平行线相交,则事件A 发生的概率为{}()sin 2200sin 242sin ,2l y l x y l l A X Y f x y dxdy dxdy a aπππ<⎧⎫⎪⎪=<===⎨⎬⎪⎪⎪⎪⎩⎭∫∫∫∫P P 。
如果{}A P 已知,则有该概率得到{}2l a A π=P 。
当蒲丰的实验中,通过投针N 次,其中针与平行线相交n 次,用频率n N 作为{}A P 的估计值,于是得到2Nl anπ≈。
三、 实验内容1、上述概率{}A P 为积分计算,可用Monte Carlo 积分近似。
通过从分布(),f x y 中产生随机数,近似积分{}A P ,从而计算π;2、当样本数N (N =50、100、1000、10000、50000)时,每个N 重复10次实验。