python计算圆周率代码_Python练习:计算圆周率

本文介绍了使用Python计算圆周率的两种方法,包括数学公式法和蒙特卡罗方法。公式法通过限制迭代次数求得近似值,增加次数可提高精度但会延长运行时间。蒙特卡罗方法利用随机点落在圆内的概率来估算π,通过增加点的数量提高准确性。
摘要由CSDN通过智能技术生成

圆周率的计算有两种方法,分别是数学公式法、工程上的蒙特卡罗法。

1.公式法

29ce83e6969394cb7019cb7b62f943f7.png

代码:

5cd16b4b21c156f7625e0342c07ffd49.png

运行效果:

9aa8bab4728eb227a5f528464e58e54d.png

注释:因为公式中k的上限是正无穷大,这里为了简便运算,取k=10000。

若增大k值,会发现pi的值更加精准,代价是程序运行时长更长。当我把N设为10000000后,电脑风扇开始呼呼呼了好久。

2.蒙特卡罗方法

核心思想:圆周率(Π)的值间接等于落入圆内的点的数量与正方形内总点数的比值。

33d8802198636cbe1aa69bc281e691e1.png

为了便于计算,我们先计算1/4圆的pi值,再乘以4,得到整个圆的pi值。

765379332c3e0de433085cdcea06af19.png
1/4圆撒点模拟

代码如下:

650544bb5d37cdff08c82c6d40cf4bac.png

注释:

①dots是1/4正方形内总共撒的随机点数量。

②hits用于记录落在1/4圆形内的点的数量。

③random()函数用于生成0~1之间的随机数,这里是一个单位圆,正好~如果不设置种子,会自动根据操作系统当前的时间(精确到毫秒)作为种子。因此,随机生成的1000*1000个点一定是各不相同的,不会发生点重叠的情况。

④pow(x**2+y**2,0.5)用于计算随机点(x,y)到圆心O(0,0)的欧式距离。即

b5d3ae010bd45236a2d30055b462dbf8.png

⑤当距离≤1时,则说明该随机点位于1/4圆内,则将hits变量加1。

运行结果如下:

424152a29f99c6fcc0f4f2b0dc811555.png

可以看出,pi的值并不够准确,这一问题可以通过增大dots数量解决。

参考资料:北京理工大学-嵩天-《Python语言程序设计》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值