如何求圆周率PI

  1. 常用的求PI的公式为PI/4=1-1/3+1/5-1/7+1/9-1/11+1/13…我们可以编写代码并对其进行精度控制,例如,当某一项的值小于1e-6,输出我们想要的结果。
    代码如下:
    s=1.0
    n=1
    t=1.0
    pi=0
    while(abs(t)>1e-6):
    pi=pi+t
    n=n+2
    s=-s
    t=s/n
    print “PI is {:.10}”.format(pi*4)

PI is 3.141590654

其实以上的算法完全应用了数学的公式来对PI进行求值。易于直观理解。但是假如我们不知道PI的数学公式,有没有一种办法求PI?
在工程、物理、化学等领域有一个著名的模式蒙特卡洛模拟,通过该模拟算法(暂且叫算法吧)。它是通过概率论统计为指导的一种重要的模拟方法。
在这里插入图片描述
我们以上图为例说明蒙特卡洛模拟的应用
当我们的途中点以随机的方式进行抛洒的时候,如果我们抛洒的点足够多,由概率统计,我们可以知道图一区域的点的个数和图二区域的点的个数的比值应该就是二者面积的比值。图一面积为PIRR/4,而正方形的面积为2R2R/4。设图一点数为N,图二和图一点数为M。则可得PI=4(N/M)。我们编写代码如下,假设为单位圆。
from random import random
DATAS=100100100
hits=0.0
for i in range(1,DATAS+1):
x,y=random(),random()
dist=pow(x2+y2,0.5)
if dist<=1.0:
hits=hits+1;
pi=4*(hits/DATAS)
print “this PI is {}”.format(pi)

this PI is 3.142472
虽然误差有点大,但是不失为一种求PI的计算方法。蒙塔卡罗模拟感觉可以解决许多的问题。除了求PI值,我们可以用来编程求解不规则图形的面积等。毕竟万事万物都逃不过随机。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值