一、要求:

1.计算到圆周率后面越多位越好。

2.用进度条显示计算的进度。

3.要求给出圆周率Π的具体计算方法和解释。

二、算法:

1.拉马努金公式:

2.高斯-勒让德公式:

设置初始值:

反复执行以下步骤直到

之间的误差到达所需精度:

则π的近似值为:

下面给出前三个迭代结果(近似值精确到第一个错误的位数):

3.140...

3.14159264...

3.1415926535897932382...

该算法具有二阶收敛性,本质上说就是算法每执行一步正确位数就会加倍。

3.波尔文四次迭代式

这个公式由乔纳森·波尔文和彼得·波尔文于1985年发表的。

bailey-borwein-plouffe算法

这个公式简称BBP公式,由David Bailey, Peter Borwein和Simon Plouffe于1995年共同发表。它打破了传统的圆周率的算法,可以计算圆周率的任意第n位,而不用计算前面的n-1位。这为圆周率的分布式计算提供了可行性。

4.丘德诺夫斯基公式

这是由丘德诺夫斯基兄弟发现的,十分适合计算机编程,是目前计算机使用较快的一个公式。

5.莱布尼茨公式

π/4=1-1/3+1/5-1/7+1/9-1/11+……

6.蒙特卡罗法(打鸟法)

一个正方形内部相切一个圆,圆和正方形的面积之比是π/4。

在这个正方形内部,随机产生n个点(这些点服从均匀分布),计算它们与中心点的距离是否大于圆的半径,以此判断是否落在圆的内部。

统计圆内的点数,与n的比值乘以4,就是π的值。理论上,n越大,计算的π值越准。

三、算法实现

以下采用蒙特卡罗法(打鸟法),代码及图片如下。

importmathimporttime

scale=10

print("执行开始")

t=time.process_time()for i in range(scale+1):

a,b='**'*i,'..'*(scale-i)

c=(i/scale)*100π=4*(4*math.atan(1/5)-math.atan(1/239))print("[{}{}->%{}]".format(a,b,c))

time.sleep(0.1)print(π)print("程序用时:{:.2f}s".format(t))print("执行结束")

运行结果:

Python 3.7.2 (tags/v3.7.2:9a3ffc0492, Dec 23 2018, 22:20:52) [MSC v.1916 32bit (Intel)] on win32

Type"help", "copyright", "credits" or "license()" formore information.>>>

================= RESTART: C:/Users/Benny/Desktop/打鸟法求圆周率.py =================执行开始

[....................->%0.0]

[**..................->%10.0]

[****................->%20.0]

[******..............->%30.0]

[********............->%40.0]

[**********..........->%50.0]

[************........->%60.0]

[**************......->%70.0]

[****************....->%80.0]

[******************..->%90.0]

[********************->%100.0]

3.1415926535897936

程序用时:0.11s

执行结束>>>

另外,进度条还可以用python的pip库来实现:

import mathimport timescale=10print("执行开始")t=time.process_time()for i in range(scale+1): a,b='**'*i,'..'*(scale-i) c=(i/scale)*100 π=4*(4*math.atan(1/5)-math.atan(1/239)) print("%{:3}[{}->{}]".format(a,b,c)) time.sleep(0.1)print(π)print("{:.2f}s".format(t))print("执行结束")

python计算圆周率_用python计算圆周率Π相关推荐

  1. python 概率分布模型_使用python的概率模型进行公司估值

    python 概率分布模型 Note from Towards Data Science's editors: While we allow independent authors to publis ...

  2. python 时间序列预测_使用Python进行动手时间序列预测

    python 时间序列预测 Time series analysis is the endeavor of extracting meaningful summary and statistical ...

  3. python支持强大的科学计算功能_用 Python 写高效科学计算程序设计

    1.科学计算中的突出问题及需求 概括一般科学计算的特点,主要包括四方面: 数值计算种类多 对于某个问题的求解,可能需要不同种类的函数,如三角函数,积分函数,概率统计函数以及某些特殊函数. 需要大量数值 ...

  4. python 斯皮尔曼相关系数_使用Python计算非参数的秩相关

    相关性是两个变量之间关联的度量. 当两个变量都有良好理解的高斯分布时,很容易计算和解释.而当我们不知道变量的分布时,我们必须使用非参数的秩相关(Rank Correlation,或称为等级相关)方法. ...

  5. python可以用于excel计算吗_你好Python!再见Excel?

    现在很多行业,都离不开Excel: 做财务的,要用Excel做报表: 做物流的,会用Excel来跟踪订单情况: 做HR的,会用Excel算工资: 做运营的,会用Excel记录数据做分析. 不知道你有没 ...

  6. 机械专业与python的联系_使用python进行机械设计计算

    分析 这一过程的核心在于机械设计,python的编程的用途有两个 1.当作计算器,缺点在于没有casio计算器那样的自然显示,优点在于可以反复调用,使用lambda函数简化运算 2.当设计需要修改时, ...

  7. python 流式计算框架_流式计算的三种框架:Storm、Spark和Flink

    我们知道,大数据的计算模式主要分为批量计算(batch computing).流式计算(stream computing).交互计算(interactive computing).图计算(graph ...

  8. python编程图文_深入Python多进程编程基础——图文版

    多进程编程知识是Python程序员进阶高级的必备知识点,我们平时习惯了使用multiprocessing库来操纵多进程,但是并不知道它的具体实现原理.下面我对多进程的常用知识点都简单列了一遍,使用原生 ...

  9. python实现案例_基于Python实现相关分析案例

    节选自<Python预测之美:数据分析与算法实战>. 相关关系是一种非确定的关系,就好像身高与体重的关系一样,它们之间不能用一个固定的函数关系来表示.而相关分析就是研究这种随机变量间相关关 ...

  10. python集群_使用Python集群文档

    python集群 Natural Language Processing has made huge advancements in the last years. Currently, variou ...

最新文章

  1. 百面机器学习之经典算法
  2. R语言使用ggplot2包使用geom_violin函数绘制分组小提琴图(自定义分组的次序)实战
  3. linux 使cpu使用率升高_Linux系统中CPU占用率较高问题排查思路与解决方法
  4. 毒霸duba劫持首页的解决方案(实测有效)
  5. keil5建立多文件的时候为什么总是出错
  6. Angular自学笔记(?)DI提供者
  7. android toolbar源码解析,深入理解Android 5.0中的Toolbar
  8. 【Android Demo】简单手机通讯录
  9. 自定义注解实现权限校验含义_厉害了!老大利用AOP实现自定义注解,半小时完成我三天工作量...
  10. flutter Android混淆
  11. nessus下载后更新插件问题新的解决方法2020
  12. CNN手写汉字识别参数调整
  13. 民科微服务小程序怎么注册_民科微服务小程序app个人端认证下载-民科微服务小程序登录官方入口下载v2.4最新版_289手游网...
  14. python 因子分析 权重计算方法_如何使用Python(scikit-learn)计算FactorAnalysis得分?
  15. 点击化学试剂Methyltetrazine-propylamine HCl salt(1802908-03-7)特点分析
  16. #创新应用#飞流下载:下载娱乐两不误
  17. 运维排查篇 | 访问nginx出现403错误
  18. python查看哪些内存被释放_python内存不释放原理 | shell's home
  19. 腾讯数据分析师内训课程!
  20. 用户商家对刷脸支付好评不断普及指日可待

热门文章

  1. ES2017 异步函数async/await
  2. Could not close the output stream for file hdfs://192.168.190.129:9000/BJ_4.c
  3. 使用Spring特性优雅书写业务代码
  4. Eclipse+PyDev+Django+Mysql搭建Python web开发环境
  5. 用500行纯前端代码在浏览器中构建一个Tableau
  6. Stack Overflow通过关注性能,实现单块应用架构的扩展能力
  7. lamp mysql5.5 LAMP平台全新编译安装
  8. windows 2012执行计划任务错误:操作员或系统管理员拒绝了请求(0x800710E0)
  9. Windows Azure NotificationHub+Firebase Cloud Message 实现消息推动(付源码)
  10. WPF 控件库——仿制Windows10的进度条