鬼才!用Python计算圆周率 π

简介: 鬼才!用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 random
from time import perf_counter
def calPI(N = 100):
    hits = 0
    start = 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 += 1
    pi = (hits * 4) / (N * N)
    use_time = perf_counter() - start
    return 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))


【结果展示】


000000000000000.png


震惊:10000次随机数,精确到3.1415了,把桥哥放在1000年前,可不得了


【常见问题答疑】


(每篇文章都有很多粉丝私信我,提前答疑一下!!):


1、运行程序前,先导入顶部的包,怎么导包看这里:https://blog.csdn.net/weixin_39032019/article/details/116934759


2、本文使用的random 和 time库为python自带,无需导入,可直接执行程序。


相关文章
|
1月前
|
算法 索引 Python
使用Python实现PageRank计算
使用Python实现PageRank计算
|
1月前
|
存储 Python
python计算两个数的和
python计算两个数的和
|
1月前
|
Python
利用Python计算两点之间的距离
利用Python计算两点之间的距离
254 0
|
1月前
|
存储 自然语言处理 数据挖掘
Python:计算字符串中每个单词出现的次数
Python:计算字符串中每个单词出现的次数
|
8天前
|
Python Serverless API
Python风险价值计算投资组合VaR、期望损失ES
Python风险价值计算投资组合VaR、期望损失ES
24 0
Python风险价值计算投资组合VaR、期望损失ES
|
19天前
|
算法 Python
78: 计算生日是星期几(python)
78: 计算生日是星期几(python)
|
1月前
|
Python
Python函数之计算规则图形的面积
Python函数之计算规则图形的面积
15 0
|
1月前
|
Python
Python小技巧:计算素数个数
Python小技巧:计算素数个数
|
1月前
|
机器学习/深度学习 人工智能 BI
Python计算余弦相似度
Python计算余弦相似度
|
1月前
|
索引 Python
Python阶乘计算
Python阶乘计算