龙空技术网

Python详解“π”的计算,你会吗,来看看

阿尔法Yang 699

前言:

今天看官们对“如何用python输出π的值”都比较讲究,咱们都需要知道一些“如何用python输出π的值”的相关资讯。那么小编同时在网上收集了一些有关“如何用python输出π的值””的相关资讯,希望大家能喜欢,姐妹们一起来了解一下吧!

在数学界,有这么一个困扰人们多年的问题,至今都有人在研究,那就是大名鼎鼎的——π。

π在数学界十分出名的,圆的面积公式就用到了π,S=πr²,π=3.14相信大家肯定知道吧,有些人或许能背得更多(你能背到几呢?欢迎评论![偷笑])。

但你以为就此结束了吗?目前,人们通过超级计算机算到了π的第808亿位,可是你知道他们是用什么方法算的吗?

今天,就给大家科普科普,以及用Python实现一下。

1、BBP公式

BBP公式,又称贝利-波尔温-普劳夫公式,具体公式如下:

这公式看起来很复杂,实际就是求和公式的简化,原式子:

k=0

π=[1/(16^k)]*[4/(8^k+1)-2/(8^k+4)-1/(8*k+5)-1/(8*k+6)]

k=1

π+=[1/(16^k)]*[4/(8^k+1)-2/(8^k+4)-1/(8*k+5)-1/(8*k+6)]

k=2

π+=[1/(16^k)]*[4/(8^k+1)-2/(8^k+4)-1/(8*k+5)-1/(8*k+6)]

k=3

……

k=无限

π+=[1/(16^k)]*[4/(8^k+1)-2/(8^k+4)-1/(8*k+5)-1/(8*k+6)]

这个用Python实现十分简单:

k=0times=1000pi=0for i in range(times):    pi+=(1/pow(16,k))*(4/(8*k+1)-2/(8*k+4)-1/(8*k+5)-1/(8*k+6))    k+=1

pi就代表π

k是从0~times

times是k的最大值

π=3.141592653589793

不知大家学了decimal标准库了没有

import decimala=decimal.Decimal(1.23456789)b=decimal.Decimal(3.141592653589793)decimal.getcontext().prec=20print(a*b)

结果可以精确小数点后20位

我们也可以将π精确化,顺便加计时:

import decimal as decimport timestart=time.time()k=0times=1000pi=0for i in range(times):    pi+=(1/pow(16,k))*(4/(8*k+1)-2/(8*k+4)-1/(8*k+5)-1/(8*k+6))    k+=1end=time.time()pi=dec.Decimal(pi)dec.getcontext().prec=20print("pi:"+str(pi))print("time:"+str(end-start))

pi=3.141592653589793115997963468544185161590576171875

这是个万能公式![思考]

2、蒙特卡罗算法

步骤如下:

如图所示的单位正方形和圆,随机抛洒点在正方形里,计算每个点到圆心的距离(0,0),从而得出点在圆内或圆外,用园内点数除以总点数就是π/4值,点个数越大越,π越精准。

这里有个小知识:

求二维坐标轴中任意一点到(0,0)点的距离=根号(x²+y²)

import randomimport mathimport timeimport decimaldarts=1000000hits=0start=time.time()for i in range(1,darts+1):    x,y=random.random(),random.random()    dist=math.sqrt(x**2+y**2)    if dist<=1:        hits+=1pi=4*(hits/darts)pi=decimal.Decimal(pi)decimal.getcontext().prec=20end=time.time()print("pi:"+str(pi))print("times:"+str(end-start))

darts是点数

hits是在圆内的点数

x,y是坐标

dist是到(0,0)的距离

得pi=3.14155199999999990012611306156031787395477294921875

不是很精准,但比较接近了,darts越多越精准。

今天就给大家分享到这里![强]

大家还知道什么计算圆周率π的方法吗?欢迎留言!

标签: #如何用python输出π的值