基于Python实现圆周率的蒙特卡罗算法的研究

2019-07-06 07:32王玉华方曙东
池州学院学报 2019年3期
关键词:蒙特卡罗池州圆周率

王玉华,李 娇,方曙东

(1.杏花村实验学校,安徽 池州247100;2.池州学院 大数据学院,安徽 池州247000)

圆周率π在计算界占据着重要的地位,由古至今,圆周率计算方法的发展史基本包括:实验获取阶段、几何算法阶段、分析算法阶段、计算机时代圆周率的计算这四个发展阶段[2]。

在第一阶段当中,通过实验对π值进行估算;在几何算法阶段,科学家引入了基于数学几何的“割圆术”方法,仅用内接正多边形确定了圆周率的上、下界的方法来计算圆周率π[3]。在第三阶段中,随着数学分析这一锐利工具的出现,圆周率π的计算发展也有了一个崭新的思路[4]。最后,随着电子计算机的普遍使用,计算圆周率π值的方法再次实现了前所未有的突破,使圆周率的计算达到了惊人的程度,圆周率的数值达到难以想象的精度。

蒙特卡罗方法又称“统计实验法”,是用概率模型来进行近似计算的方法。18世纪法国学者蒲丰的“投针实验”是蒙特卡洛算法核心思想的起源。其中,该实验是以大数定理和中心极限定理作为必备的数学基础。随着计算机科学技术及相关领域的持续发展,本方法在计算领域的应用方面也得到了更加广泛的普及[5]。在数学的科研探索过程中,蒙特卡罗法已经被多方学者引用,并且在科研领域经过了深入的探讨研究。在数学理论研究方向上蒙特卡罗法不仅可以对问题的结果提供更强的说服力,更能够为新的结论提供广阔的发展空间。

在计算机技术飞速发展的时代,更是少不了各种编程语言的辅助与支撑。python编程语言集成了开发快、语言简洁和易操作等多种人性化优势,广泛地应用于各种领域[6]。将python运用到模拟求解圆周率π的方法验证过程当中,可以快速有效地简化数值计算过程,有助于提高数值计算速率,节省不必要的数值运算时间;此外,在一定程度上也有助于Python这类科学计算软件的应用与推广,为科研探索事业提供极大地辅助作用。

1 应用案例

证明:以a、b、c代替任取的三个正数,且令a≤b≤c。我们对c进行讨论:对于每一个确定的c,要组成钝角三角形,则必须满足a+b>c,a2+b2<c2,反过来,若 a、b、c 满足前两个式子则可以组成一个钝角三角形,从而“以a、b、c为边长能组成一个钝角三角形”与“a+b>c,a2+b2<c2”互为充要条件。由线性规划知识可求得总的可行域为一个边长为c的正方形,而满足题设的可行域为直线a+b=c与圆a2+b2<c2围成的弓形,可以组成钝角三角形的概率

结合以上概率的论证原理,结合任意写出两个小于1的数(a,b),将其和变量c组成一个数对(a,b,c),则由a,b和c能构成一个钝角三角形的概率就是,利用这个结论也可以求出π的近似值。(为了演示的方便性,在代码的编辑过程中,将c的数值取为1)

2 python模拟代码

3 计算结果

表1 圆周率实验数据

如果采用传统的运算方式去计算圆周率,会耗费大量的程序运行时间,同时对计算机的内存开销占用也比较严重。因此,在此次实验设计当中,本文采用了多次实验、集中统计的方法,不仅避免了严重的内存占用问题,更有效地扩充了实验的数据规模,从而提高了实验的准确性与计算精度。

图1 圆周率计算结果图

4 结语

综上所述,随着现代科学的高速发展,计算圆周率π的近似值的方法也在得到不断更新和改进。利用Python和蒙特卡洛算法结合的计算方法,可以通过调控迭代次数的递增程度,从而快捷、简便、科学地计算出圆周率的近似值。利用计算机软件来实际模拟每一个圆周率的计算过程,能够清晰明了地展现出最后的模拟实验结果能够模拟真实的实验过程[7]。有效地使用此方法,不仅让学习者对蒙特卡罗方法的思想—随机投点思想有了较清楚的认识,更让大家在实际操作当中,对蒙特卡罗法的简洁实用的特点有更加深入的理解与认识。同时,将python语言的简洁易懂的独特优势融入到求解圆周率的实验过程当中,能够让学习者更加注重问题的思想本质,从而根据需求将此方法灵活地运用到更加广泛的科研领域,节省更多的时间去进一步挖掘和研究科研领域的新知识。

猜你喜欢
蒙特卡罗池州圆周率
池州学院二级学院商学院简介
祖冲之计算圆周率
说说圆周率
利用蒙特卡罗方法求解二重积分
利用蒙特卡罗方法求解二重积分
池州武傩文化研究
“好玩”的圆周率的好伙伴
池州傩戏面具在动漫角色创意中的应用
银幕上的《圣经》——综述
探讨蒙特卡罗方法在解微分方程边值问题中的应用