时间:2024-05-18
圆周率(Pi)是圆的周长与直径的比值,一般用希臘字母π表示,是数学中最基本的常数之一。π也等于圆形之面积与半径平方之比,是精确计算圆周长、圆面积、球体积等几何形状的关键值。它是一个无理数,即无限不循环小数。在日常生活中,通常都用3.14代表圆周率去进行近似计算。这里我想问大家几个问题:圆周率是谁发明的?从前的人们是怎样推导出圆周率的呢?今天我们在Python中用一种概率算法“蒙特卡洛方法”来计算圆周率吧。
蒙特卡洛是一座位于欧洲摩纳哥公国的赌城,这个地名也象征概率。蒙特卡洛方法是由大名鼎鼎的数学家冯·诺伊曼在上世纪40年代参与美国研究原子弹的“曼哈顿计划”时提出的。这个方法的原理是通过大量随机样本,去了解一个系统,进而得到所要计算的值。
蒙特卡洛方法在计算圆周率时设一个正方形内部相切一个圆,这时圆和正方形的面积之比是π/4。在这个正方形内部,随机产生n个点(这些点服从均匀分布),计算它们与中心点的距离是否大于圆的半径,以此判断是否落在圆的内部。统计圆内的点数,与n的比值乘以4,就是π的值。理论上,n越大,计算的π值越精确。
首先引入random库和time库,调用random和perf_counter,再编写一个计时函数start用来计算得出圆周率所需要的时间,然后通过循环编写模拟撒点代码,让计算机每次随机生成两个0到1之间的数(设圆的半径为1),看以这两个实数为横纵坐标的点是否在单位圆内,因此我们实际只是计算了1/4圆,但不影响结果。通过生成一系列随机点,统计单位圆内的点数与总点数,当随机点获取越多时,其结果越接近于圆周率。计算出结果后将圆周率和计算的时间输出结果。
通过比较点到圆心的距离判断点是否在圆内,利用计算机的运算速度,可以很快统计出多次撒点的结果,即使我们计算1000万次,也只需要8.7秒(具体计算时间与计算机运行速度相关)。根据运算结果来看即使有这么大的数据量使用概率算法求出的π精度依然不够高。
我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!