系统建模与仿真题目:Buffon实验的仿真 院系: 电子工程学院 专业:信息对抗技术 班级:021231 姓名:余颖智 学号:02123021 指导老师:刘洋 完成时间:2015年4月 西安电子科技大学
基于MATLAB的投针实验仿真 摘要 在求证圆周率的过程中经过割圆术后,出现的投针试验以求出圆周率,目前利用MATLAB数学建模的仿真实验,运用到计算机中,简化其随机实验的操作量大,运算慢等特点。不同针距相同实验量运算后得出不同的π,其针距与线间距离相等,所得值接近于π。
目录 摘要 (2) 二、实验内容 (4) 三、建模流程图 (5) 四、程序主要代码 (6) 五、运行结果 (6) 六、结论 (7)
一、实验原理 1777年法国科学家布丰提出的一种计算圆周率的方法——随机投针法,即著名的布丰投针问题。该投针实验主要有如下三个步骤:(一)取一张白纸,在上面画许多条间距为a的平行线;(二)取一根长度为l(l 三、建模流程图 四、程序主要代码 str(handles.edit1,'string'); %取得变量,定义变量,变量初始化 n = str2double(str); str = get(handles.edit2,'string'); l = str2double(str); str = get(handles.edit3,'string'); a = str2double(str); counter = 0; %变量初始化 phi = 0; frequency = 0; Pi = 0; 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:n if x(i) 文献综述 信息与计算科学 蒙特卡罗方法的应用 在解决实际问题的时候, 为了模拟某一过程, 产生各种概率分布的随机变量和对于那些由于计算过于复杂而难以得到解析解或者根本没有解析解的问题, 我们应该怎么办? 蒙特·卡罗是一种十分有效的求出数值解的方法. 蒙特卡罗法( monte-carlo method )简称M -C 法 通过构造概率模型并对它进行随机试验来解算数学问题的方法. 以计算函数的定积分()()1 0I f x d x =?, ()01f x ≤≤为例, 首先构造一个概率模型: 取一个边长分别为和-的矩形, 并在矩形内随机投点M , 假设随机点均匀地落在整个矩形之内, 当点的掷点数N 充分大时, 则落在图中阴影区内的随机点数与投点总数N 之比M N 就近似等于积分值I . 蒙特卡罗法历史悠久. 1773年法国G.-L.L.von 布丰曾通过随机投针试验来确定圆周率π的近似值, 这就是应用这个方法的最早例子. 蒙特卡罗是摩纳哥著名赌城, 1945年 J.von 诺伊曼等人用它来命名此法, 沿用至今. 数字计算机的发展为大规模的随机试验提供了有效工具, 遂使蒙特卡罗法得到广泛应用. 在连续系统和离散事件系统的仿真中, 通常构造一个和系统特性相近似的概率模型, 并对它进行随机试验, 因此蒙特卡罗法也是系统仿真方法之一. 蒙特卡罗法的步骤是: 构造实际问题的概率模型; ②根据概率模型的特点, 设计和使用降低方差的各类方法, 加速试验的收敛; ③给出概率模型中各种不同分布随机变量的抽样方法; ④统计试验结果, 给出问题的解和精度估计. 概率模型用概率统计的方法对实际问题或系统作出的一种数学描述. 例如对离散事件系统中临时实体的到达时间、永久实体的服务时间的描述(见离散事件系统仿真方法)就是采用概率模型. 虽然由这些模型所确定的到达时间、服务时间可能与具体某一段时间内实际到达时间、服务时间有出入, 但它是通过多次统计获得的结果, 所以从概率分布的规律来说还是相符的. 概率模型不仅可用来描述本身就具有随机特性的问题或系统, 也可用来描述一个确定型问题. 例如参数寻优中的随机搜索法(见动力学系统参数寻优)就是将参数最优化问题构造为一个概率模型, 然后用随机投点、统计分析的方法来进行搜索. 一、蒙特卡洛算法 1、含义的理解 以概率和统计理论方法为基础的一种计算方法。也称统计模拟方法,是指使用随机数(或更常见的伪随机数)来解决很多计算问题的方法,它是将所求解的问题同一定的概率模型相联系,用计算机实现统计模拟或抽样,以获得问题的近似解。 2、算法实例 在数值积分法中,利用求单位圆的1/4的面积来求得Pi/4从而得到Pi 。单位圆的1/4面积是一个扇形,它是边长为1单位正方形的一部分。只要能求出扇形面积S1在正方形面积S 中占的比例K=S1/S 就立即能得到S1,从而得到Pi 的值。怎样求出扇形面积在正方形面积中占的比例K 呢?一个办法是在正方形中随机投入很多点,使所投的点落在正方形中每一个位置的机会相等看其中有多少个点落在扇形内。将落在扇形内的点数m 与所投点的总数n 的比m/n 作为k 的近似值。P 落在扇形内的充要条件是 221x y +≤ 。 已知:K= 1s s ,K ≈m n ,s=1,s1=4P i ,求Pi 。 由1 s m s n ≈,知s1≈*m s n =m n , 而s1=4P i ,则Pi=*4m n 程序: /* 利用蒙特卡洛算法近似求圆周率Pi*/ /*程序使用:VC++6.0 */ #include x=rand()*1.0/RAND_MAX;/*RAND_MAX=32767,包含在 浅析蒙特卡洛方法原理及应用 于希明 (英才学院1236103班测控技术与仪器专业6120110304) 摘要:本文概述了蒙特卡洛方法产生的历史及基本原理,介绍了蒙特卡洛方法的最初应用——蒲丰投针问题求圆周率,并介绍了蒙特卡洛方法在数学及生活中的一些简单应用,最后总结了蒙特卡洛方法的特点。 关键词:蒙特卡洛方法蒲丰投针生活应用 蒙特卡洛方法(Monte Carlo method),也称统计模拟方法,是二十世纪四十年代中期由于科学技术的发展和电子计算机的发明,而被提出的一种以概率统计理论为指导的一类非常重要的数值计算方法。它是以概率统计理论为基础, 依据大数定律( 样本均值代替总体均值) , 利用电子计算机数字模拟技术, 解决一些很难直接用数学运算求解或用其他方法不能解决的复杂问题的一种近似计算法。蒙特卡洛方法在金融工程学,宏观经济学,计算物理学(如粒子输运计算、量子热力学计算、空气动力学计算)等领域应用广泛。 一、蒙特卡洛方法的产生及原理 蒙特卡洛方法于20世纪40年代美国在第二次世界大战中研制原子弹的“曼哈顿计划”计划的成员S.M.乌拉姆和J.冯·诺伊曼首先提出。数学家冯·诺伊曼用驰名世界的赌城—摩纳哥的Monte Carlo—来命名这种方法,为它蒙上了一层神秘色彩。在这之前,蒙特卡洛方法就已经存在。1777年,法国数学家蒲丰(Georges Louis Leclere de Buffon,1707—1788)提出用投针实验的方法求圆周率π。这被认为是蒙特卡洛方法的起源。 其基本原理如下:由概率定义知,某事件的概率可以用大量试验中该事件发生的频率来估算,当样本容量足够大时,可以认为该事件的发生频率即为其概率。因此,可以先对影响其可靠度的随机变量进行大量的随机抽样,然后把这些抽样值一组一组地代入功能函数式,确定结构是否失效,最后从中求得结构的失效概率。蒙特卡洛法正是基于此思路进行分析的。 设有统计独立的随机变量Xi(i=1,2,3,…,k),其对应的概率密度函数分别为fx1,fx2,…,fxk,功能函数式为Z=g(x1,x2,…,xk)。首先根据各随机变量的相应分布,产生N组随机数x1,x2,…,xk值,计算功能函数值Zi=g(x1,x2,…,xk)(i=1,2,…,N),若其中有L组随机数对应的功能函数值Zi≤0,则当N→∞时,根据伯努利大数定理及正态随机变量的特性有:结构失效概率,可靠指标。 二、蒲丰投针问题 作为蒙特卡洛方法的最初应用, 是解决蒲丰投针问题。1777 年, 法国数学家蒲丰提出利用投针实验求解圆周率的问题。设平面上等距离( 如为2a) 画有一些平行线, 将一根长度为2l( l< a) 的针任意投掷到平面上, 针与任一平行线相交的频率为p 。针的位置可以用针的中心坐标x 和针与平行线的夹角θ来决定。任意方向投针, 便意味着x与θ可以任意取一值, 只是0≤x ≤a, 0≤θ≤π。那么, 投针与任意平行线相交的条件为x ≤ l sinθ。相交频率p 便可用下式求 系统建模与仿真 基于MATLAB的布丰实验模拟 姓名:石星宇 学号: 02123010 指导教师:刘洋 2015年4月9日 目录 基于MATLAB的布丰实验模拟 .................................................................... - 1 - 一、实验原理......................................................................................... - 1 - 二、编程模拟......................................................................................... - 1 - 1、程序流程图............................................................................... - 1 - 2、程序代码................................................................................... - 2 - 三、实验结果......................................................................................... - 2 - 基于MATLAB 的布丰实验模拟 一、实验原理 找一根铁丝弯成一个圆圈,使其直径恰恰等于平行线间的距离a 。可以想象得到,对于这样的圆圈来说,不管怎么扔下,都将和平行线有两个交点。因此,如果圆圈扔下的次数为n 次,那么相交的交点总数必为n 2。现在设想把圆圈拉直,变成一条长为a π的铁丝。显然,这样的铁丝扔下时与平行线相交的情形要比圆圈复杂些,可能有4个交点,3个交点,2个交点,1个交点,甚至于都不相交。由于圆圈和直线的长度同为a π,根据机会均等的原理(即等概率事件),当它们投掷次数较多,且相等时,两者与平行线组交点的总数期望也是一样的。这就是说,当长为a π的铁丝扔下n 次时,与平行线相交的交点总数应大致为n 2。现在转而讨论铁丝长为l 的情形。当投掷次数n 增大的时候,这种铁丝跟平行线相交的交点总数k 应当与长度l 成正比,因而有:l k λ=,式中λ是比例系数。为了求出λ来,只需注意到,对于a l π=的特殊情形,有n k 2=。于是求得a n πλ2=。代入前式就有:a m πln 2≈从而ak nl 2≈π。 二、编程模拟 1、程序流程图 参数初始化 产生位置随机数; 产生角度随机数 判断相交 1+=k k 1+=n n 是 否 判断结束 蒲丰氏投针问题的模拟过程,随机数发生器也是自编的,以供大家参考和提出建议。谢谢。(seed1和seed2最好选择3和5,为了使投针次数达到1000000,CVF进行如下设置Project->settings->link-> output,将stack allocations reserve:设为1000000000) program getpi implicit none real,parameter::a=5,L=4,pi=3.14159 integer::n1,i,counter=0 real,allocatable::R1(:),R2(:) real::theta,x,pi1 write(*,*) 'input the size of the array:' read(*,*) n1 allocate(R1(n1)) allocate(R2(n1)) call random(n1,R1,R2) do i=1,n1 x=a*(2*R1(i)-1) theta=pi*R2(i) if(abs(x) 蒙特卡罗方法及应用 实验讲义 东华理工大学核工系 2016.8 实验一 蒙特卡罗方法基本思想 一、实验目的 1、了解蒙特卡罗方法方法的基本思想; 2、掌握蒙特卡罗方法计算面积、体积的方法; 3、掌握由已知分布的随机抽样方法。 二、实验原理 Monte Carlo 方法,又称统计模拟方法或计算机随机模拟方法,是一种基于“随机数”进行数值模拟的方法,一种采用统计抽样理论近似求解物理或数学问题的方法。 如待求量可以表述成某些特征量的期望值、某些事件出现的概率或两者的函数形式,那么可采用蒙特卡罗方法求解。在求解某些特征量的期望值或某些事件出现的概率时,必须构建合符实际的数学模型。例如采用蒙特卡罗方法计算某函数所围面积时,构建的数学模型是构造一已知面积的可均匀抽样区域,在该区域投点,由伯努利定理大数定理可知,进入待求区域投点的频率依概率1收敛于该事件出现的概率(面积之比)。 由已知分布的随机抽样方法指的是由已知分布的总体中抽取简单子样。具体方法很多,详见教材第三章。 三、实验内容 1、安装所需计算工具(MATLAB 、fortran 、C++等); 2、学习使用rand(m,n)、unifrnd(a,b,m,n)函数 3、求解下列问题: 3.0、蒲丰氏投针求圆周率。 3.1、给定曲线y =2 – x 2 和曲线y 3 = x 2,曲线的交点为:P 1( – 1,1 )、P 2( 1,1 )。曲线围成平面有限区域,用蒙特卡罗方法计算区域面积; 3.2 、计算1z z ?≥??≤??所围体积 其中{(,,)|11,11,02}x y z x y z Ω=-≤≤-≤≤≤≤。 4、对以下已知分布进行随机抽样: 蒲丰投针问题 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,对吧。最大值就 是针的中点正好在两条平行线中间,那最大值是a 2 ,不会再大了。因为我这个x 的定义是针的终点到比较近的平行线的距离,对吧!所以x ∈[0,a 2 ]。 (2)其次就是我想知道这个针与这个平行线的夹角是多少?令夹角为α,α的范围是什么呢,如果你完全跟这个平行线平行的话,那么这个夹角是00,对吧。如果你往上竖过来, 概率论与数理统计实验 蒲丰投针与蒙特卡罗法 班级应数12级01班 学号2012444086 姓名张旭东 蒲丰投针与蒙特卡罗法 张旭东2012444086 (重庆科技学院数学与应用数学,重庆沙坪坝) 【摘要】通过设计一个投针实验使这个事件的概率和未知量π有关,然后通过重复实验,以频率估计概率,即可求得未知参数π的近似解。这种方法称为随机模拟法,也称为蒙特卡罗法。一般来说,实验次数越多所得的近似值就越接近真值。可以利用MATLAB来大量重复地模拟所设计的随机实验。 【关键词】随机模拟;投针实验;重复实验 1 引言 蒲丰投针问题是由法国科学家蒲丰(Buffon)在1777年提出的,它是概率中非常有代表性的问题,它是第一个用几何形式表达概率问题的例子,其结论具有很强的理论与实际意义。蒲丰针问题的解决不仅较典型的反应了集合概率的特征及处理方法,而且还可以由此领略到从“概率土壤”上开出的一朵瑰丽的鲜花——蒙特卡洛(Monte-Carlo)方法。 蒙特卡罗(Monte Carlo)方法,也称计算机模拟方法,是一种基于“随机数”的计算方法,大数定律为近年来发展迅速的随机计算机和随机模拟方法提供了理论基础。 MATLAB是一个适合多学科,具有多种工作平台的功能强大的大型软件。MATLAB已经成为线性代数、自动控制理论、数理统计、数字信号处理、时间序列分析、动态系统仿真等高级课程的进本教学工具,Matlab随机数发生器的种类丰富且用法简便。 本文介绍了利用随机模拟方法和大数定律的相关理论解决蒲丰投针问题计算π的近似值。蒙特卡罗方法的应用【文献综述】
蒙特卡罗算法的简单应用
浅析蒙特卡洛方法原理及应用
布丰投针实验模拟
蒲丰氏投针问题的模拟过程
蒙特卡罗方法及应用实验讲义2016资料
蒲丰投针问题
蒲丰投针实验模拟