python计算圆周率_用python计算圆周率Π
一、要求:
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计算圆周率Π相关推荐
- python 概率分布模型_使用python的概率模型进行公司估值
python 概率分布模型 Note from Towards Data Science's editors: While we allow independent authors to publis ...
- python 时间序列预测_使用Python进行动手时间序列预测
python 时间序列预测 Time series analysis is the endeavor of extracting meaningful summary and statistical ...
- python支持强大的科学计算功能_用 Python 写高效科学计算程序设计
1.科学计算中的突出问题及需求 概括一般科学计算的特点,主要包括四方面: 数值计算种类多 对于某个问题的求解,可能需要不同种类的函数,如三角函数,积分函数,概率统计函数以及某些特殊函数. 需要大量数值 ...
- python 斯皮尔曼相关系数_使用Python计算非参数的秩相关
相关性是两个变量之间关联的度量. 当两个变量都有良好理解的高斯分布时,很容易计算和解释.而当我们不知道变量的分布时,我们必须使用非参数的秩相关(Rank Correlation,或称为等级相关)方法. ...
- python可以用于excel计算吗_你好Python!再见Excel?
现在很多行业,都离不开Excel: 做财务的,要用Excel做报表: 做物流的,会用Excel来跟踪订单情况: 做HR的,会用Excel算工资: 做运营的,会用Excel记录数据做分析. 不知道你有没 ...
- 机械专业与python的联系_使用python进行机械设计计算
分析 这一过程的核心在于机械设计,python的编程的用途有两个 1.当作计算器,缺点在于没有casio计算器那样的自然显示,优点在于可以反复调用,使用lambda函数简化运算 2.当设计需要修改时, ...
- python 流式计算框架_流式计算的三种框架:Storm、Spark和Flink
我们知道,大数据的计算模式主要分为批量计算(batch computing).流式计算(stream computing).交互计算(interactive computing).图计算(graph ...
- python编程图文_深入Python多进程编程基础——图文版
多进程编程知识是Python程序员进阶高级的必备知识点,我们平时习惯了使用multiprocessing库来操纵多进程,但是并不知道它的具体实现原理.下面我对多进程的常用知识点都简单列了一遍,使用原生 ...
- python实现案例_基于Python实现相关分析案例
节选自<Python预测之美:数据分析与算法实战>. 相关关系是一种非确定的关系,就好像身高与体重的关系一样,它们之间不能用一个固定的函数关系来表示.而相关分析就是研究这种随机变量间相关关 ...
- python集群_使用Python集群文档
python集群 Natural Language Processing has made huge advancements in the last years. Currently, variou ...
最新文章
- 百面机器学习之经典算法
- R语言使用ggplot2包使用geom_violin函数绘制分组小提琴图(自定义分组的次序)实战
- linux 使cpu使用率升高_Linux系统中CPU占用率较高问题排查思路与解决方法
- 毒霸duba劫持首页的解决方案(实测有效)
- keil5建立多文件的时候为什么总是出错
- Angular自学笔记(?)DI提供者
- android toolbar源码解析,深入理解Android 5.0中的Toolbar
- 【Android Demo】简单手机通讯录
- 自定义注解实现权限校验含义_厉害了!老大利用AOP实现自定义注解,半小时完成我三天工作量...
- flutter Android混淆
- nessus下载后更新插件问题新的解决方法2020
- CNN手写汉字识别参数调整
- 民科微服务小程序怎么注册_民科微服务小程序app个人端认证下载-民科微服务小程序登录官方入口下载v2.4最新版_289手游网...
- python 因子分析 权重计算方法_如何使用Python(scikit-learn)计算FactorAnalysis得分?
- 点击化学试剂Methyltetrazine-propylamine HCl salt(1802908-03-7)特点分析
- #创新应用#飞流下载:下载娱乐两不误
- 运维排查篇 | 访问nginx出现403错误
- python查看哪些内存被释放_python内存不释放原理 | shell's home
- 腾讯数据分析师内训课程!
- 用户商家对刷脸支付好评不断普及指日可待
热门文章
- ES2017 异步函数async/await
- Could not close the output stream for file hdfs://192.168.190.129:9000/BJ_4.c
- 使用Spring特性优雅书写业务代码
- Eclipse+PyDev+Django+Mysql搭建Python web开发环境
- 用500行纯前端代码在浏览器中构建一个Tableau
- Stack Overflow通过关注性能,实现单块应用架构的扩展能力
- lamp mysql5.5 LAMP平台全新编译安装
- windows 2012执行计划任务错误:操作员或系统管理员拒绝了请求(0x800710E0)
- Windows Azure NotificationHub+Firebase Cloud Message 实现消息推动(付源码)
- WPF 控件库——仿制Windows10的进度条