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越大,盘算的π值越准。
三、算法实现
以下接纳蒙特卡罗法(打鸟法),代码及图片如下。
1 importmath2 importtime3 scale=10
4 print("执行最先")5 t=time.process_time()6 for i in range(scale+1):7 a,b='**'*i,'..'*(scale-i)8 c=(i/scale)*100
9 π=4*(4*math.atan(1/5)-math.atan(1/239))10 print("%{:3}[{}->{}]".format(a,b,c))11 time.sleep(0.1)12 print(π)13 print("{:.2f}s".format(t))14 print("执行竣事")
运行效果:
Python 3.7.2 (tags/v3.7.2:9a3ffc0492, Dec 23 2018, 22:20:52) [MSC v.1916 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license()" for more 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.56s
执行竣事
>>>
另外,进度条还可以用python的pip库来实现:
原文链接:https://www.cnblogs.com/zzalovelyq/p/12836572.html
本站声明:网站内容来源于网络,若有侵权,请联系我们,我们将及时处理。
python中莱布尼茨计算圆周率_python圆周率盘算(带进度条)相关推荐
- python中莱布尼茨计算圆周率_IOS 莱布尼茨公式计算圆周率π
圆周率其实就是一个圆周长与直径的比值我们通常用希腊字母π表示, 他的计算公式有多种, 其中用莱布尼茨公式是这样 即: 如果你想知道为什么? 既然你诚心诚意的发问了, 我就大发慈悲的告诉你! ...
- python莱布尼茨法计算π_酷叮猫少儿编程讲堂——Python 用莱布尼茨等式求π
原标题:酷叮猫少儿编程讲堂--Python 用莱布尼茨等式求π Python 用莱布尼茨等式求π 2018-08-01 德国大数学家莱布尼茨Leibniz在研究圆周率π的过程中发现一个数学公式是这样的 ...
- python中异或怎么算_python 异或运算的前提_异或运算公式
Python基础(10)–数字-Python-第七城市 609x288 - 73KB - JPEG Python基础(10)--数字_资讯_突袭网 609x288 - 33KB - JPEG pyth ...
- [转载] python中for语句用法_详解Python中for循环的使用_python
参考链接: 在Python中将else条件语句与for循环一起使用 这篇文章主要介绍了Python中for循环的使用,来自于IBM官方网站技术文档,需要的朋友可以参考下 for 循环 本系列前面 &q ...
- python中for语句用法_详解Python中for循环的使用_python
这篇文章主要介绍了Python中for循环的使用,来自于IBM官方网站技术文档,需要的朋友可以参考下 for 循环 本系列前面 "探索 Python,第 5 部分:用 Python 编程&q ...
- Python中的乘方计算
[小白从小学Python.C.Java] [Python-计算机等级考试二级] [Python-数据分析] Python中的乘方计算 power()函数 选择题 以下python代码输出什么? imp ...
- python中的复数计算
python中的复数计算 在python中,有时需要对复数进行计算,比如-1开方运算,普通的math模块难以实现计算结果,此时可以使用cmath模块进行. 例如 import cmath cmath. ...
- php 拖拽 上传文件 进度,在Vue中如何实现带进度条的文件拖动上传功能
这篇文章主要介绍了Vue实现带进度条的文件拖动上传功能,本文通过实例代码给大家介绍的非常详细,具有参考借鉴价值,需要的朋友可以参考下 1. 基本界面 content="width=devic ...
- uni-app中自定义图表(canvas实现chart图表)开发篇(1)-圆环带进度条
经常开发中,会遇到各种各样图表,这时大家普遍会想到去找插件.uniapp中常用的有uchart.js和echart.js,这对图表要求不高的项目来说,是很便捷的.但有时会遇到一些定制图表,加上UI的美 ...
最新文章
- Redis进阶 -CLUSTER NODES 信息结合实际输出信息解读
- [云炬创业基础笔记]第二章创业者测试19
- Akka并发编程——第八节:Actor模型(七)
- jq中查找上级_必备实用技能:在EXCEL中制作下拉菜单
- 敏感词过滤的php代码,PHP敏感词过滤
- Ansible 之 用户管理
- QTableView修改数据后弹出是否保存的提示框。
- 斗地主发牌游戏编程java,自己做的斗地主游戏发牌C#程序
- MQTT——国密SSL加密
- walking机器人入门教程-rviz插件-多点导航插件的航点保存和加载
- Mac使用系列之软件安装权限
- Excel 透视图数据源无效的问题(PivotTable Data Source Not Valid)
- 获取Golang环境变量的三种方式
- 【Qt】断言Q_ASSERT的使用
- Mac-Mac上如何制作GIF动图
- 打补丁的日子,比写代码的日子难熬多了
- 软件中间件,你知道哪些?
- Angular 2+ Material Design Admin Template
- 单片机第1季:零基础学51单片机-按键
- QQ旋风踏上“迷你快车”山寨路