利用Python计算圆周率π的实例代码

 更新时间:2021年05月24日 09:09:37   作者:明月十四桥  
圆周率没有精确的计算公式,所以只能用近似的方式计算它的近似值。这篇文章主要介绍了利用Python计算圆周率π的相关资料,需要的朋友可以参考下

前言

A货:什么!你不会背圆周率(鄙夷的眼神) 3.1415926535 8979323846 26433... 

桥哥:我会算呀 !!!

一、圆周率的历史

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))

【结果展示】

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

附:python输出指定精度的圆周率pi的值

首先像所有人都会的一样,本能地敲出

import math
val = math.pi
print(val)

这样就得到了pi的近似值3.141592653589793,要得到后面的小数,

不是直接可以简单粗暴的乘以10的指数

import math
val = math.pi * 100000000000000000
print(val)

但是当val的小数部分都变成整数141592653589793的时候,并不会如我们所想的那样露出后几位整数,而是直接变成科学计数法3.141592653589793e+24,所以在小数点移位之后为了看到整数部分,我们必须把float转换成int

import math

def get_pi_value(x):
  if(x>0):
   num = math.pow(10,x)
   val = int(math.pi * num)
   print(val)
  else:
   print('输入有误')
   
for i in range(10):
 get_pi_value(i * 10)

运行结果:

输入有误
31415926535
314159265358979334144
3141592653589793216413703340032
31415926535897931797658451191693855162368
314159265358979323748068948991981337089580185157632
3141592653589793042280431964658831312838665295201939643957248
31415926535897934343019391492015828684494553443559665723073458675384320
314159265358979299628295535813807516164434328768456060679773689288809487458631680
3141592653589793231804887682686061504016619085797532053907788745336000826072569315489480704

总结

到此这篇关于利用Python计算圆周率π的文章就介绍到这了,更多相关Python计算圆周率π内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 解析numpy中的iscomplex方法及实际应用

    解析numpy中的iscomplex方法及实际应用

    NumPy 的 iscomplex 方法为检查数组中的元素是否为复数提供了一种高效且易于使用的接口,本文介绍了 iscomplex 方法的基本概念、使用方法以及它在解决实际问题中的应用,需要的朋友可以参考下
    2024-06-06
  • Python虚拟环境conda的安装使用教程

    Python虚拟环境conda的安装使用教程

    在性能和资源占用方面,venv 通常更适合轻量级项目、纯Python应用以及对资源敏感的场景,其简单快速的特点使得环境创建和管理更为高效,这篇文章主要介绍了Python虚拟环境conda的安装使用教程,需要的朋友可以参考下
    2024-03-03
  • Python 3.8 新功能全解

    Python 3.8 新功能全解

    这篇文章主要介绍了Python 3.8 新功能全解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-07-07
  • Django组件cookie与session的具体使用

    Django组件cookie与session的具体使用

    这篇文章主要介绍了Django组件cookie与session的具体使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-06-06
  • python中内置类型添加属性问题详解

    python中内置类型添加属性问题详解

    这篇文章主要介绍了python中内置类型添加属性问题详解,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-09-09
  • Python冒泡排序注意要点实例详解

    Python冒泡排序注意要点实例详解

    本文给大家介绍了python冒泡排序知识,涉及到冒泡排序主要的细节问题,本文通过实例代码给大家讲解,介绍的非常详细,具有参考借鉴价值,感兴趣的朋友一起看看吧
    2016-09-09
  • python GUI库图形界面开发之PyQt5表格控件QTableView详细使用方法与实例

    python GUI库图形界面开发之PyQt5表格控件QTableView详细使用方法与实例

    这篇文章主要介绍了python GUI库图形界面开发之PyQt5表格控件QTableView详细使用方法与实例,需要的朋友可以参考下
    2020-03-03
  • Python之os模块案例详解

    Python之os模块案例详解

    这篇文章主要介绍了Python之os模块案例详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-09-09
  • 基于Python实现代码版彩票小游戏

    基于Python实现代码版彩票小游戏

    彩票是一个恒古不变的话题,现在的生活越来越好,大部分人开始关注福利彩票的事情,当然也有很多人都想中将是真的啦~哈哈哈,但是大家还是要适当哦!小编今天给大家做了一款简易的彩票小游戏,让我们看看谁能中一等奖吧?谁又是二等奖、三等奖呢
    2023-03-03
  • 教你使用Psycopg2连接openGauss的方法

    教你使用Psycopg2连接openGauss的方法

    Psycopg是一种用于执行SQL语句的PythonAPI,可以为PostgreSQL、openGauss数据库提供统一访问接口,应用程序可基于它进行数据操作,这篇文章主要介绍了教你使用Psycopg2连接openGauss的方法,需要的朋友可以参考下
    2022-11-11

最新评论