百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

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

off999 2024-09-23 11:36 33 浏览 0 评论

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

π在数学界十分出名的,圆的面积公式就用到了π,S=πr2,π=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=0
times=1000
pi=0
for 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 decimal
a=decimal.Decimal(1.23456789)
b=decimal.Decimal(3.141592653589793)
decimal.getcontext().prec=20
print(a*b)

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

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

import decimal as dec
import time
start=time.time()
k=0
times=1000
pi=0
for 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

end=time.time()
pi=dec.Decimal(pi)
dec.getcontext().prec=20
print("pi:"+str(pi))
print("time:"+str(end-start))

pi=3.141592653589793115997963468544185161590576171875

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

2、蒙特卡罗算法

步骤如下:

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

这里有个小知识:

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

import random
import math
import time
import decimal
darts=1000000
hits=0
start=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+=1
pi=4*(hits/darts)
pi=decimal.Decimal(pi)
decimal.getcontext().prec=20
end=time.time()
print("pi:"+str(pi))
print("times:"+str(end-start))

darts是点数

hits是在圆内的点数

x,y是坐标

dist是到(0,0)的距离

得pi=3.14155199999999990012611306156031787395477294921875

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

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

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

相关推荐

win10系统保护不见了(win10系统保护打不开怎么办)

1、启动计算机,启动到Windows10开机LOGO时就按住电源键强制关机,重复强制关机3次!2、重复步骤3次左右启动后出现“自动修复”界面,我们点击高级选项进入;3、接下来会到选择一个选项界面...

新手如何重装win8(怎么重新装系统win8)

要想重装回win8.1系统,首先你需要一个win8.1的系统安装盘,然后把你电脑的系统盘格式化一下,或者把你的win10系统删除了,再把win8.1系统安装盘插到电脑上,进行系统安装,等电脑安装系统完...

磁盘分区工具软件(硬盘分区工具软件)

如果说最安全的那就用电脑自带的吧,右键我的电脑,找到管理,然后进去磁盘管理,然后找到目前的一个磁盘,右键压缩卷,输入压缩空间就是你想要的一个盘的大小(1G=1024MB),然后压缩,然后找到你压缩出来...

ftp手机客户端(ftp手机客户端存文件)

要想实现FTP文件传输,必须在相连的两端都装有支持FTP协议的软件,装在您的电脑上的叫FTP客户端软件,装在另一端服务器上的叫做FTP服务器端软件。  客户端FTP软件使用方法很简单,启动后首先要与...

原版xp系统镜像(原版xp系统镜像怎么设置)

msdnitellyou又可以上了,那里有。  制作需要的软件  在开始进行制作之前,我们首先需要下载几个软件,启动光盘制作工具:EasyBoot,UltraISO以及用来对制作好的ISO镜像进行测...

office2007密钥 office2016(office2007ultimate密钥)

word2016激活密钥有两种类型:永久激活码和KMS期限激活密钥。其中,永久激活密钥可以使用批量授权版永久激活密钥进行激活,如所示;而KMS期限激活密钥需要使用KMS客户端密钥进行激活,如所示。另外...

windows10系统启动盘制作(windows10启动盘制作教程)

Windows10系统更改启动磁盘的方法如下1、按快捷键Win+R,调出命令窗口2、输入msconfig,点【确定】3、在系统配置中,选择【引导】菜单4、选择要默认启动的磁盘,点【设置为默认值】,...

方正电脑怎么重装系统

购买一张系统盘,然后启动电脑,将购买的系统盘插入电脑光驱中,等待光驱读取系统盘后,点击安装系统,即可自动安装,等待安装完毕,电脑会自动重启,重新启动后,电脑的系统就安装完毕,可以使用了一、准备需要的软...

qq邮箱怎么写才正确
qq邮箱怎么写才正确

步骤/方式1一般默认的QQ邮箱格式是:QQ号码@qq.com,即QQ账号+@qq.com后缀步骤/方式2若要发送邮件,也要在对方的qq帐号末尾加上@qq.com1.每个人在注册QQ时都会有关联的一个邮箱,它的格式就是“QQ号码@qq.com...

2025-12-21 18:51 off999

电脑怎么看配置信息
电脑怎么看配置信息

要查看Windows电脑的配置信息,可以通过按下Win键+R,然后在弹出的运行对话框中输入“dxdiag”并按回车键打开DirectX诊断工具,可以查看有关处理器、内存、显卡等硬件信息。另外,还可以右键点击“此电脑”,选择“属性”来查看...

2025-12-21 18:03 off999

mpeg是什么格式(mpeg是什么格式和mp4的区别)

是视频格式,是电脑视频文件的一种,相对其它视频文件格式而言,mpeg格式占的存储空间相对比较小,那么像素也就相对比较低,图像也没有其它格式那么高清,不过一般情况下已经满足正常的使用。好多视频文件都是采...

电脑参数配置怎么选(电脑参数配置怎么选择)

1、CPU,这个主要取决于频率和二级缓存,三级缓存,核心数量。频率越高、二级缓存越大,三级缓存越大,核心越多,运行速度越快。速度越快的CPU只有三级缓存影响响应速度。2、内存,内存的存取速度取决于接口...

windows7字体(Windows7字体库在哪)

win7系统默认中文字体是微软雅黑字体1、首先我们先打开个性化2、然后我们打开“窗口颜色”3、然后我们点击“项目”里的桌面,选择“已选定的项目”4、下面就可以改字体,还有字体的颜色、大小5、然后点击“...

windows7x86是32位吗(windows7 x86)

X86不是代表操作系统,是代表的CPU的类型,如果你知道CPU的发展史就知道,个人用计算机的CPU很早的版本是从286、386、486、586、奔腾等等类型发展起来的,所以X86的代表PC的CPU的类...

固态硬盘删除后又自动恢复了

进入BIOS查看,第一启动项是不是UEFI引导,改掉它可以下载个pe,下载安装在本地磁盘里,重启进入pe工具,先给固态格式化分区,在ghost机械盘上的系统,还原到固态上。遇到这种情况一定不要在此...

取消回复欢迎 发表评论: