欢迎来到天天文库
浏览记录
ID:60800132
大小:343.50 KB
页数:5页
时间:2020-12-19
《投针实验详解复习进程.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、精品好文档,推荐学习交流一、问题的提出在人类数学文化史中,对圆周率精确值的追求吸引了许多学者的研究兴趣。在众多的圆周率计算方法中,最为奇妙的是法国物理学家布丰(Boffon)在1777年提出的“投针实验”。与传统的“割圆术”等几何计算方法不同的是,“投针实验”是利用概率统计的方法计算圆周率的值,进而为圆周率计算开辟了新的研究途径,也使其成为概率论中很有影响力的一个实验。本节我们将借助于MATLAB仿真软件,对“投针实验”进行系统仿真,以此来研究类比的系统建模方法和离散事件系统仿真。二、系统建模“投针实
2、验”的具体做法是:在一个水平面上画上一些平行线,使它们相邻两条直线之间的距离都为a;然后把一枚长为l(03、统仿真。所谓的系统仿真是指以计算机为工具,对具有不确定性因素的、可模型化的系统的一种研究方法。建立能够反映实验情况的数学模型是系统仿真的基础。系统建模中需解决两个问题,一个是如何模拟钢针的投掷结果,另一个是如何判断钢针与平行线的位置关系。这里,设O为钢针中点,y为O点与最近平行线之间的距离,为钢针与平行线之间的夹角()。仅供学习与交流,如有侵权请联系网站删除谢谢5精品好文档,推荐学习交流首先,由于人的投掷动作是随机的,钢针落下后的具体位置也是随机的,因此可用按照均匀分布的两个随机变量y和来模拟钢针投掷4、结果。其次,人工实验时可以用眼睛直接判断出钢针是否与平行线相交,而计算机仿真实验则需要用数学的方法来判别。如下图所示,如果y、l和满足关系式,那么钢针就与平行线相交,否则反之,进而可以判断钢针与平行线的位置关系。三、基于MATLAB/SIMULNIK的仿真实验在系统模型基础上,我们可以绘制出程序的流程图如下所示。根据流程图,在MATLAB环境下可编写程序完成计算机系统仿真实验,在这里我们设定平行线之间的距离为,钢针长为,计算精度,这些参数可以根据实际情况做以修改,下面是仿真程序:%投针实验:计算机模拟5、投针实验,计算圆周率%仅供学习与交流,如有侵权请联系网站删除谢谢5精品好文档,推荐学习交流clearformatlonga=40,L=30;n=0;k=0;pii=0;%主要参数值while(abs(pii-pi)>0.00001)%设置计算精度n=n+1;y=1/2*a*rand(1);%生成[0,a)区间的随机数q=pi*rand(1);%生成[0,180)区间的随机数if(y<1/2*L*sin(q))%判断钢针与平行线是否相交k=k+1;pii=2*L*n/(a*k);%计算圆周率enddis6、p('此次实验情况:')disp('投掷次数:')disp(n)%显示投掷次数disp('相交次数:')disp(k)%显示钢针与平行线相交次数disp('实验结果:pi=')disp(pii)%显示计算出的圆周率值end通过程序中的注释可以很好的理解程序内容。程序运行时,将显示出每次的“投针实验”情况,即显示当前总投掷次数、钢针与平行线相交次数以及由此计算出来的圆周率值。当满足所设置的精度要求后,程序停止运行,此时显示出当钢针投掷276427次后,所计算出来的圆周率值满足精度要求,此时钢针与平行线相7、交131984次,圆周率计算结果为3.14159670869196。当然,由于“投掷动作”具有随机性,因此每次“投针实验”的仿真结果不一定相同。为使计算结果更趋近于,可以减小误差的取值来提高计算精度,当然仿真时间也会随之变长。这里对投针实验的基本原理做一简单解释。首先,将一根钢丝弯成一个圆圈,使其直径恰好等于平行线间的距离a。可以想象得出,对于这样的圆圈来说,仅供学习与交流,如有侵权请联系网站删除谢谢5精品好文档,推荐学习交流投掷结果不外乎有两种:一种是与一条平行线相交,一种是与相邻两根平行线相切,这8、两种情况都将导致圆圈和平行线有两个交点。因此,如果圆圈扔下的次数为n,那么相交的交点数必为2n。然后,将圆圈拉直变成一条长为的钢针。显然,这样的钢针扔下时与平行线相交的情形要比圆圈复杂得多,可能没有交点,有1个交点,2个交点,3个交点,4个交点。由于圆圈和拉直后的钢针的长度相同,根据机会均等的原理,当它们投掷次数足够多时,两者与平行线组交点的总数将是一样的。换句话说,当长度为的钢针扔下无穷多次后,与平行线相交的交点总数也为2n。最后,讨论钢针长为l的情形
3、统仿真。所谓的系统仿真是指以计算机为工具,对具有不确定性因素的、可模型化的系统的一种研究方法。建立能够反映实验情况的数学模型是系统仿真的基础。系统建模中需解决两个问题,一个是如何模拟钢针的投掷结果,另一个是如何判断钢针与平行线的位置关系。这里,设O为钢针中点,y为O点与最近平行线之间的距离,为钢针与平行线之间的夹角()。仅供学习与交流,如有侵权请联系网站删除谢谢5精品好文档,推荐学习交流首先,由于人的投掷动作是随机的,钢针落下后的具体位置也是随机的,因此可用按照均匀分布的两个随机变量y和来模拟钢针投掷
4、结果。其次,人工实验时可以用眼睛直接判断出钢针是否与平行线相交,而计算机仿真实验则需要用数学的方法来判别。如下图所示,如果y、l和满足关系式,那么钢针就与平行线相交,否则反之,进而可以判断钢针与平行线的位置关系。三、基于MATLAB/SIMULNIK的仿真实验在系统模型基础上,我们可以绘制出程序的流程图如下所示。根据流程图,在MATLAB环境下可编写程序完成计算机系统仿真实验,在这里我们设定平行线之间的距离为,钢针长为,计算精度,这些参数可以根据实际情况做以修改,下面是仿真程序:%投针实验:计算机模拟
5、投针实验,计算圆周率%仅供学习与交流,如有侵权请联系网站删除谢谢5精品好文档,推荐学习交流clearformatlonga=40,L=30;n=0;k=0;pii=0;%主要参数值while(abs(pii-pi)>0.00001)%设置计算精度n=n+1;y=1/2*a*rand(1);%生成[0,a)区间的随机数q=pi*rand(1);%生成[0,180)区间的随机数if(y<1/2*L*sin(q))%判断钢针与平行线是否相交k=k+1;pii=2*L*n/(a*k);%计算圆周率enddis
6、p('此次实验情况:')disp('投掷次数:')disp(n)%显示投掷次数disp('相交次数:')disp(k)%显示钢针与平行线相交次数disp('实验结果:pi=')disp(pii)%显示计算出的圆周率值end通过程序中的注释可以很好的理解程序内容。程序运行时,将显示出每次的“投针实验”情况,即显示当前总投掷次数、钢针与平行线相交次数以及由此计算出来的圆周率值。当满足所设置的精度要求后,程序停止运行,此时显示出当钢针投掷276427次后,所计算出来的圆周率值满足精度要求,此时钢针与平行线相
7、交131984次,圆周率计算结果为3.14159670869196。当然,由于“投掷动作”具有随机性,因此每次“投针实验”的仿真结果不一定相同。为使计算结果更趋近于,可以减小误差的取值来提高计算精度,当然仿真时间也会随之变长。这里对投针实验的基本原理做一简单解释。首先,将一根钢丝弯成一个圆圈,使其直径恰好等于平行线间的距离a。可以想象得出,对于这样的圆圈来说,仅供学习与交流,如有侵权请联系网站删除谢谢5精品好文档,推荐学习交流投掷结果不外乎有两种:一种是与一条平行线相交,一种是与相邻两根平行线相切,这
8、两种情况都将导致圆圈和平行线有两个交点。因此,如果圆圈扔下的次数为n,那么相交的交点数必为2n。然后,将圆圈拉直变成一条长为的钢针。显然,这样的钢针扔下时与平行线相交的情形要比圆圈复杂得多,可能没有交点,有1个交点,2个交点,3个交点,4个交点。由于圆圈和拉直后的钢针的长度相同,根据机会均等的原理,当它们投掷次数足够多时,两者与平行线组交点的总数将是一样的。换句话说,当长度为的钢针扔下无穷多次后,与平行线相交的交点总数也为2n。最后,讨论钢针长为l的情形
此文档下载收益归作者所有