实现用python算法计算圆周率的小诀窍
目录
- 一、圆周率的历史
- 1、中国
- 2、印度
- 3、欧洲
- 二、用python计算圆周率π
- 【方法】
- 【程序设计思路】
- 【软件环境】
- 【代码】
- 【结果展示】
- 【常见问题答疑】
一、圆周率的历史
1、中国
魏晋时期,刘徽曾用使正多边形的边数逐渐增加去逼近圆周的方法 (即「割圆术」),求得π的近似值3.1416。
汉朝时,张衡得出π的平方除以16等于5/8,即π等于10的开方(约为3.162)。虽然这个值不太准确,但它简单易理解,所以也在亚洲风行了一阵。
王蕃(229-267)发现了另一个圆周率值,这就是3.156, 但没有人知道他是如何求出来的(ps. 没开源呗!)。
公元5世纪,祖冲之和他的儿子以正24576边形,求出圆周率约为355/113,和真正的值相比,误差小于八亿分之一。
这个纪录在一千年后才给打破。(ps. 在大部分人不知股股定理年代,真牛!)
2、印度
约在公元530年,数学大师阿耶波多利用384边形的周长,算出圆周率约为√9.8684。
婆罗门笈多采用另一套方法,推论出圆周率等于10的平方根。(ps. 跟张衡大佬的结果一致,但过程不同)
3、欧洲
斐波那契算出圆周率约为3.1418。
韦达用阿基米德的方法,算出3.1415926535<π<3.1415926537。
他是第一个以无限乘积叙述圆周率的人。
鲁道夫万科伦以边数多过32000000000的多边形算出有35个小数位的圆周率。
华理斯在1655年求出一道公式π/2=2×2×4×4×6×6×8×8...../3×3×5×5×7×7×9×9......
欧拉发现的e的iπ次方加1等于0,成为证明π是超越数的重要依据。
二、用python计算圆周率π
【方法】
蒙特卡洛法
【程序设计思路】
使用python random库随机生成点,落在正方形内,计算正方形内的圆内落点与正方形内落点之比,近似为面积之比,随机数越随机,数量越大越准确。
【软件环境】
python 3.6(本程序可兼容python 2.x)
【代码】
from random import randomfrom time import perf_counter def calPI(N = 100):hits = 0start = perf_counter()for i in range(1, N*N+1):x, y = random(), random()dist = pow(x ** 2 + y ** 2, 0.5)if dist <= 1.0:hits += 1pi = (hits * 4) / (N * N)use_time = perf_counter() - startreturn pi, use_time PI, use_time = calPI(10000)print('use Monte Carlo method to calculate PI: {}'.format(PI))print('use time: {} s'.format(use_time))
【结果展示】
文章图片
震惊:10000次随机数,精确到3.1415了,把桥哥放在1000年前,可不得了
【常见问题答疑】
(每篇文章都有很多粉丝私信我,提前答疑一下!!):
1、运行程序前,先导入顶部的包,怎么导包看这里:https://www.jb51.net/article/221337.htm
2、本文使用的random 和 time库为python自带,无需导入,可直接执行程序。
【实现用python算法计算圆周率的小诀窍】以上就是实现用python算法计算圆周率的小诀窍的详细内容,更多关于python算法计算圆周率的资料请关注脚本之家其它相关文章!
推荐阅读
- 关于QueryWrapper|关于QueryWrapper,实现MybatisPlus多表关联查询方式
- MybatisPlus使用queryWrapper如何实现复杂查询
- python学习之|python学习之 实现QQ自动发送消息
- 科学养胃,别被忽悠,其实真的很简单
- 逻辑回归的理解与python示例
- 其实你就是个普通人
- 海院(实干是海院风景(上))
- 你眼里的不公平,其实很公平
- 孩子不是实现父母欲望的工具——林哈夫
- opencv|opencv C++模板匹配的简单实现