栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > 学术 > 人文期刊 > 电脑报

蒙特卡洛方法计算圆周率

电脑报 更新时间: 发布时间: 学术归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

蒙特卡洛方法计算圆周率

圆周率(Pi)是圆的周长与直径的比值,一般用希臘字母π表示,是数学中最基本的常数之一。π也等于圆形之面积与半径平方之比,是精确计算圆周长、圆面积、球体积等几何形状的关键值。它是一个无理数,即无限不循环小数。在日常生活中,通常都用3.14代表圆周率去进行近似计算。这里我想问大家几个问题:圆周率是谁发明的?从前的人们是怎样推导出圆周率的呢?今天我们在Python中用一种概率算法“蒙特卡洛方法”来计算圆周率吧。

蒙特卡洛是一座位于欧洲摩纳哥公国的赌城,这个地名也象征概率。蒙特卡洛方法是由大名鼎鼎的数学家冯·诺伊曼在上世纪40年代参与美国研究原子弹的“曼哈顿计划”时提出的。这个方法的原理是通过大量随机样本,去了解一个系统,进而得到所要计算的值。

蒙特卡洛方法在计算圆周率时设一个正方形内部相切一个圆,这时圆和正方形的面积之比是π/4。在这个正方形内部,随机产生n个点(这些点服从均匀分布),计算它们与中心点的距离是否大于圆的半径,以此判断是否落在圆的内部。统计圆内的点数,与n的比值乘以4,就是π的值。理论上,n越大,计算的π值越精确。

首先引入random库和time库,调用random和perf_counter,再编写一个计时函数start用来计算得出圆周率所需要的时间,然后通过循环编写模拟撒点代码,让计算机每次随机生成两个0到1之间的数(设圆的半径为1),看以这两个实数为横纵坐标的点是否在单位圆内,因此我们实际只是计算了1/4圆,但不影响结果。通过生成一系列随机点,统计单位圆内的点数与总点数,当随机点获取越多时,其结果越接近于圆周率。计算出结果后将圆周率和计算的时间输出结果。

通过比较点到圆心的距离判断点是否在圆内,利用计算机的运算速度,可以很快统计出多次撒点的结果,即使我们计算1000万次,也只需要8.7秒(具体计算时间与计算机运行速度相关)。根据运算结果来看即使有这么大的数据量使用概率算法求出的π精度依然不够高。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/xueshu/248253.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号