zoukankan      html  css  js  c++  java
  • 使用 python 实现π的计算

     

    π的计算

    一、π的简介

    • π的介绍

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

    • π的求解历程

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

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

      2019314日,谷歌宣布圆周率现已到小数点后31.4万亿位。

     

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

     

     

    二、π的近似计算

       1. 计算公式 

     

      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. 图片示例

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

    《圆周率π》是个奇妙而美丽的存在,它是个无限不循环小数,就像是一种缺陷美,只要你有发现美的眼睛!

    2011年,国际数学协会正式宣布,将每年的3月14日设为国际数学节,来源则是中国古代数学家祖冲之的圆周率。

     

     

  • 相关阅读:
    准备 FRM 考试——方法、工具与教训
    930. 和相同的二元子数组 前缀和
    1906. 查询差绝对值的最小值 前缀和
    剑指 Offer 37. 序列化二叉树 二叉树 字符串
    815. 公交路线 BFS
    518. 零钱兑换 II dp 完全背包
    1049. 最后一块石头的重量 II dp
    5779. 装包裹的最小浪费空间 二分
    5778. 使二进制字符串字符交替的最少反转次数 字符串 滑动窗口
    474. 一和零 dp
  • 原文地址:https://www.cnblogs.com/bpf-1024/p/10549896.html
Copyright © 2011-2022 走看看