啊!圆周率怎么玩?
小Bob 小Bob Bob来啦
2020年11月23日 22:30 __ _ _ _ _

直面问题会使人感觉痛苦。问题通常不可能自行消失,若不解决,就会永远存在,阻碍心智的成熟。
《少有人走的路》

小谈圆周率圆周率是圆的周长与直径的比值,一般用希腊字母π表示,是一个在数学及物理学中普遍存在的数学常数。π也等于圆形之面积与半径平方之比,是精确计算圆周长、圆面积、球体积等几何形状的关键值。小谈蒙特卡罗
蒙特卡罗方法又称统计模拟法、随机抽样技术,是一种随机模拟方法,以概率和统计理论方法为基础的一种计算方法,是使用随机数(或更常见的伪随机数)来解决很多计算问题的方法。将所求解的问题同一定的概率模型相联系,用电子计算机实现统计模拟或抽样,以获得问题的近似解。为象征性地表明这一方法的概率统计特征,故借用赌城蒙特卡罗命名。
考虑平面上的一个边长为1的正方形及其内部的一个形状不规则的“图形”,如何求出这个“图形”的面积呢?Monte
Carlo方法是这样一种“随机化”的方法:向该正方形“随机地”投掷N个点,有M个点落于“图形”内,则该“图形”的面积近似为M/N。
借助计算机技术,蒙特卡罗方法实现了两大优点:
一是简单,省却了繁复的数学报导和演算过程,使得一般人也能够理解和掌握;
二是快速。简单和快速,是蒙特卡罗方法在现代项目管理中获得应用的技术基础。
蒙特卡罗方法有很强的适应性,问题的几何形状的复杂性对它的影响不大。该方法的收敛性是指概率意义下的收敛,因此问题维数的增加不会影响它的收敛速度,而且存贮单元也很省,这些是用该方法处理大型复杂问题时的优势。因此,随着电子计算机的发展和科学技术问题的日趋复杂,蒙特卡罗方法的应用也越来越广泛。它不仅较好地解决了多重积分计算、微分方程求解、积分方程求解、特征值计算和非线性方程组求解等高难度和复杂的数学计算问题,而且在统计物理、核物理、真空技术、系统科学
、信息科学 、公用事业、地质、医学,可靠性及计算机科学等广泛的领域都得到成功的应用。
用蒙特卡罗方法求解圆周率
工程上常用蒙特卡罗方法求解圆周率。
用Python表示其公式为:
pi=0N=100for k in range(N): pi+=1/pow(16,k)*(4/(8*k+1)-2/(8*k+4)-1/(8*k+5)-1/(8*k+6))print("圆周率的值为:{}".format(pi))
上次我们学过了random库,用于产生随机数。
现在即可用random库产生的随机数来模仿蒙特卡罗的随机性,即在一个正方形内有一个1/4圆,在正方形内随机的丢石子,最后根据石子在圆内的数量来计算圆周率的近似值。相关计算以及代码如下:
from random import random#调用random库from time import perf_counter#time库中的计时函数darts= 1000*1000#抛洒点的数量,这里设为100万hit=0.0#目前在圆内部点的数量start=perf_counter()#当前系统时间内的值for i in range (1,darts+1):#用循环进行抛洒 x,y=random(),random() dist=pow(x**2+y**2,0.5) if dist<=1.0:#判断是否在圆的内部 hit+=1pi=4*(hit/darts)print("圆周率为:{}".format(pi))print("运行时间为:{:.5f}s".format(perf_counter()-start))#需要关注循环运行所占时间,且循环一般比较占用运行时间
(Python系列)未完待续…

往期推荐:
Python || Random库的使用 2020-11-18
来学Python啦,大话循环结构~ 2020-11-17
小Bob又来啦~ 2020-11-22
为你,千千万万遍.
关注 程序员Bob 公众号, 与你 一起终 生学习

一键三连,就差你了
预览时标签不可点
阅读
__











