问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

python如何计算π

发布网友 发布时间:2022-04-06 04:13

我来回答

3个回答

懂视网 时间:2022-04-06 08:35

python利用公式计算π的方法:首先导入数学模块及时间模块;然后计算Pi精确到小数点后几位数,代码为【print(' {:=^70}'.format('计算开始'))】;最后完成计算,代码为【print(' {:=^70}'】。

【相关学习推荐:python教程】

python利用公式计算π的方法:

一、π的简介

π的介绍

  圆周率用希腊字母 π(读作pài)表示,是一个常数(约等于3.141592654),是代表圆周长和直径的比值。它是一个即无限不循环小数,在日常生活中,通常都用3.14代表圆周率去进行近似计算。

π的求解历程

  •   1965年,英国数学家约翰·沃利斯(John Wallis)出版了一本数学专著,其中他推导出一个公式,发现圆周率等于无穷个分数相乘的积。

  •   2015年,罗切斯特大学的科学家们在氢原子能级的量子力学计算中发现了圆周率相同的公式。

  •   2019年3月14日,谷歌宣布圆周率现已到小数点后31.4万亿位。

  •   此处用一个自我感觉‘良好’的公式进行求解,说良好是因为计算结果相对准确,但计算过程用时较长,一起来学习吧~~~

    二、π的近似计算

      1. 计算公式

    7ff9794019652c0cf1b7e6c1d662bf3.png

      2. 方法讲解

      所用公式等式右边分子都为1,分母为递增数列,从第一项开始,奇数项符号为正,偶数项符号为负。等式右边的分母越大,越小,圆周率π计算的值越精确;换个角度讲,就是等式右边的项越多,计算的值越精确。

    3. 代码实现(python)

     1 from math import fabs  #导入数学模块
     2 from time import perf_counter #导入时间模块
     3 
     4 def Bar(i):  #动态文本条
     5 N = pow(10,level)
     6 a = int((i/N)*50)
     7 b = 50 - a
     8 Y , N = '*' * a , '.' * b
     9 print("
    计算中:{:3.0f}% [{}->{}] {:.2f}s"
    10  .format(2*a,Y,N,perf_counter()),end='')
    11 
    12 level = eval(input('计算Pi精确到小数点后几位数:'))
    13 print('
    {:=^70}'.format('计算开始'))
    14 a,b,pi,tmp = 1,1,0,1
    15 i = 0
    16 '''
    17 a 分子 | b 分母 | pi 圆周率
    18 tmp 存储a/b的值 | i 执行进度
    19 '''
    20 perf_counter() #开始计时
    21 while (fabs(tmp) >= pow(10,-level)): #计算Pi
    22 pi += tmp
    23 b += 2
    24 a = -a
    25 tmp = a/b
    26 i += 2
    27 Bar(i)  #调用函数,实时显示计算进度
    28 
    29 print('
    {:=^70}'.format('计算完成'))
    30 print('
    Pi的计算值为:{}'.format(round(pi*4,level))) #输出计算结果

    4. 图片示例

    5ca63c73db886d36372ada6d69dec0d.png

    8ea20492daa14b3d9d52b812859a271.png

    6b97af06393a753b4541688ea097e11.png

      由上面3张图片可知,精确到小数点后4位只要14.07秒,精确到小数点后6位也需要124.61秒,而精确到小数点后8位就需要 850 / 8% = 10625秒,约为 177 分钟,也就是2.95个小时。这种方法固然好,但计算起来还是需要很长一段时间的。

    热心网友 时间:2022-04-06 05:43

    #coding=utf-8
    '''
    Created on 2014-11-04

    @author: Neo
    '''

    import sys
    import math
    from decimal import *
      
    def bbp(n):
        pi=Decimal(0)
        k=0
        while k < n:
            pi+=(Decimal(1)/(16**k))*((Decimal(4)/(8*k+1))-(Decimal(2)/(8*k+4))-(Decimal(1)/(8*k+5))-(Decimal(1)/(8*k+6)))
            k+=1
        return pi
      
    def main(argv):
        if len(argv) !=2:
            exit('Usage: BaileyBorweinPlouffe.py <prec> <n>')
              
        getcontext().prec=(int(sys.argv[1]))
        my_pi=bbp(int(sys.argv[2]))
        accuracy=100*(Decimal(math.pi)-my_pi)/my_pi
      
        print "Pi is approximately "+str(my_pi)
        print "Accuracy with math.pi: "+str(accuracy)
          
    if __name__=="__main__":
        main(sys.argv[1:])

    result:

    d:\workspace\PyDemo>python test.py 10 10

    Pi is approximately 3.141592653

    Accuracy with math.pi: 1.877369797E-8


    d:\workspace\PyDemo>python test.py 25 25

    Pi is approximately 3.141592653589793238462644

    Accuracy with math.pi: -3.898171852150198570978563E-15


    d:\workspace\PyDemo>python test.py 40 40

    Pi is approximately 3.141592653589793238462643383279502884195

    Accuracy with math.pi: -3.898171832519375446564294863483061824361E-15


    d:\workspace\PyDemo>

    热心网友 时间:2022-04-06 07:01

    #马青公式
    n = int(input('请键入想要计算到小数点后的位数n:')) 
    w = n+10
    b = 10**w
    x1 = b*4//5
    x2 = b// -239
    he = x1+x2
    n *= 2
    for i in range(3,n,2):
        x1 //= -25
        x2 //= -57121
        x = (x1+x2) // i
        he += x
        pai = he*4
        pai //= 10**10
    print(pai)

    声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
    抖音弹幕怎么关掉?怎么关闭抖音弹幕? 惠普LaserJet P3005D是否支持B5纸的双面打印? word打印出图片总是缺一部分怎么办-word打印图片不完整怎么解决_百度... 理想one哪里产的车辆? 抚州抚州ONE在哪里? one地址在哪里? 如何在图片上写字(如何在图片上添加文字) 网商贷为什么钱没到账 高级经济师职称怎么评 高级经济师需要评审吗 利用沃利斯公式计算圆周率。要求用Python语言写出相应的代码,并用Python中的for循环完成_问一问 php项目能不能自动发布到apache服务器,就像jsp项目发布到tomcat服务器一样? 在现有的linux tomcat7环境下,怎么增加支持php的网站 tomcat下配置PHP相关问题 配置tomcat+apache+php的步骤 phpstorm怎么配置tomcat服务器 如何在tomcat安装部署php项目 如何用eclipse部署java服务器文件到tomcat php服务器文件能部署到tomcat吗 tomcat中部署php项目 怎么把wamp网页php部署到tomcat 怎么在 tomcat上 php 怎么把php部署到tomcat 如何用php把文字转变成图片.也就是往网页输入文字.通过网站后台生成png图片 如何将jpg转为png 如何将php格式文件改成png格式文件 如何通过php 自动将jpg,gif图象文件格式转换成png文件格式 - 技术问答 php将asci文件转utf-8 php代码中既有GBK也有UTF-8,如何统一转换成UTF-8? php 不管什么编码转换成utf8 关于PHP function内部include文件导致引用文件内部调用的类未初始化错误的问题,求高手解答。 Python语言编程。根据BBP公式计算π,k=0~100? 两种用python求pi的方法,必须按照如图两种计算方式,求大神帮我分别写一下两种方法的代码! 求解答一个python计算pi的代码,尽量详细 python模拟蒙特卡罗法计算圆周率的近似值 请问如何用Python求出pi的近似值 python利用公式:π/4=1-1/3+1/5-1/7+……,求π的近似值 Python求pi的近似值(格雷戈里公式中n与精度有什么关系) python用随机数计算圆周率PI 怎么做? 韩国学校作业 python 简单程序 优必杰Python课程中提到的蒙特卡罗方法计算圆周率需要满足的条件有哪些? 计算圆周率,使用点模拟法,如何从以下python代码中看出正方形的边长? python里怎么进行计算? 求用python计算圆周率小数点后五万位的最快的方法,需要代码,谢谢 php中为什么插入数据库的中文变成乱码 php 往数据库里插入 数据,插入和读取正常显示中文,但 数据库 里显示乱码怎么破? php中sql数据库乱码的问题? php中数据库操作乱码,试了各种办法了还是不行! PHP本地如何删除远程服务器的文件?求指点 php能实现文件的远程删除吗?(物理删除) 通过php删除xml文档内容的方法