【Python】圆周率 Pi (π) 的计算(蒙特卡罗法+公式法)
引言
圆周率(Pi)是圆的周长与直径的比值,一般用希腊字母 π 表示,是数学中最重要和最奇妙的数字之一。本文教你如何使用 Python 编程实现圆周率的简单计算。
计算
蒙特卡罗法
1×1 的正方形里面有一个内切圆。向该正方形区域内随机散点(散点总数记为 S),对于每一个点,其落在圆内的概率是:π⋅0.521×1=0.25π\frac {\pi \cdot 0.5^2}{1×1}=0.25\pi1×1π⋅0.52=0.25π,散点结束后,统计其落在圆内的点数,并记为 N。
一般来说,随着实验次数的增多,频率会接近于概率。当实验次数趋向于无穷时,频率的极限就是概率。
因此,当 S 足够大时,我们可以简单认为:0.25π=NS0.25\pi=\frac{N}{S}0.25π=SN,即π=4NS\pi=\frac{4N}{S}π=S4N
提示:如何判断点在圆内?计算点到圆心的欧式距离,比半径小就在圆内,比半径大就在圆外。
# 蒙特卡罗法(统计试验法)
import random # 导入随机模块
S = 1e6 # 变量S为试验总次数(值设置得越大,PI的计算越准确,即频率越逼近于概率)
N = 0 # 变量N用于统计落在圆内的试验点的个数
for i in range(int(S)):x = random.random() # 获取0-1之间的随机数y = random.random() # 获取0-1之间的随机数d = (x-0.5)**2+(y-0.5)**2 # 计算试验点到圆心的欧式距离的平方if d<=0.5**2: # 通过比较试验点到圆心的欧式距离与圆半径的大小,判断该点是否在圆内N+=1else:pass
PI = 4*N/S
print(PI)
公式法
π=∑n=0∞[116n(48n+1−28n+4−18n+5−18n+6)]\pi = \sum_{n=0}^\infty [\frac{1}{16^n}(\frac{4}{8n+1}-\frac{2}{8n+4}-\frac{1}{8n+5}-\frac{1}{8n+6})] π=n=0∑∞[16n1(8n+14−8n+42−8n+51−8n+61)]
# 公式法(计算公式参上)
PI = 0
N = 1000
for n in range(int(N)):PI += 1/pow(16,n) * (4/(8*n+1) - 2/(8*n+4) - 1/(8*n+5) - 1/(8*n+6))
print(PI)
参考
https://baike.baidu.com/item/圆周率/139930
【Python】圆周率 Pi (π) 的计算(蒙特卡罗法+公式法)相关推荐
- c语言编程快速收敛的圆周率计算,[原创]圆周率PI的计算(精确到几十万位)
[原创]圆周率PI的计算(精确到几十万位) //环境:VC6.0,Console Application //原理:π=2+1/3*(2+2/5*(2+3/7*(2+... //特点:内嵌汇编提速并扩 ...
- python函数——根据经纬度计算距离公式的错误及修正
#coding: utf-8 #封装函数 import math def cal_dis(latitude1, longitude1,latitude2, longitude2):latitude1 ...
- 行列式的计算(c++)——公式法(5阶)和递推法(n阶)
行列式的计算 行列式的众多正经的不正经的计算方法就属线性代数的内容了,这里不过多讨论,主要介绍代码中会用到的两种: 公式计算 行列式值的计算公式为 ∣a11a12⋯a1na21a22⋯a2n⋮⋮⋯⋮a ...
- 【无标题】python利用公式法计算圆周率
# 计算圆周率(公式法) i = 1 j = 1 s = 0 print('******圆周率公式法******') for i in range(1, 100):print(f'循环{i}次,第一次 ...
- python计算圆周率_python模拟蒙特·卡罗法计算圆周率
蒙特·卡罗方法是一种通过概率来得到问题近似解的方法,在很多领域都有重要的应用,其中就包括圆周率近似值的计问题. 假设有一块边长为2的正方形木板,上面画一个单位圆,然后随意往木板上扔飞镖,落点坐标(x, ...
- 用python计算圆周率_用python计算圆周率PI
一.计算圆周率PI的方法 (一)公式法: 1 #CalPiV1.py 2 pi =03 N = 100 4 for k inrange(N):5 pi += 1/pow(16, k) * (4 / ( ...
- python计算圆周率近似值_python计算圆周率pi的方法
本文实例讲述了python计算圆周率pi的方法.分享给大家供大家参考.具体如下: from sys import stdout scale = 10000 maxarr = 2800 arrinit ...
- python用bbp公式求圆周率_神奇的BBP公式,可独立计算圆周率任何一位数字,曾震惊数学界!...
今天,我们来看一个神奇的关于圆周率的公式. 一千多年来,数学家们采用各种办法,来求圆周率的更高精度,比如我国伟大的数学家祖冲之(429-500,字文远),就曾利用复杂的割圆术,将圆周率精确到小数点第七 ...
- python中莱布尼茨计算圆周率_python圆周率盘算(带进度条)
一.要求: 1.盘算到圆周率后面越多位越好. 2.用进度条显示盘算的进度. 3.要求给出圆周率Π的详细盘算方法和注释. 二.算法: 1.拉马努金公式: 2.高斯-勒让德公式: 设置初始值: 频频执行以 ...
最新文章
- Can't connect to X11 window server using ':1.0' as the value of the DISPLAY variable.
- python读音发音器-python3 - 文本读音器
- 使用ffmpeg+nginx将rtmp直播流转为hls直播流
- 三、linux目录浏览管理及维护
- html2image乱码问题,HtmlImageGenerator字体乱码问题解决、html2image放linux上乱码问题解决...
- c语言中的标准数据类型,C语言中的基本数据类型
- Auto type deducing
- 2016: 神殿(求二进制1的个数最多的那个数)
- 【安全牛学习笔记】手动漏洞挖掘(二)
- Copula函数理论及实现(三维)-MATLAB
- ifix 读写mysql_[转载]vb6读取ifix实时数据库和历史数据库
- linux怎么关闭超线程模式,Linux动态启用/禁用超线程技术的方法详解
- 《摩根写给儿子的32封信》 03 企业家的资质
- 服务器winsxs文件夹怎么清理工具,winsxs文件夹怎么清理 winsxs文件夹清理方法教程...
- mysql数据长度过长,1406 - Data too long for column ‘express_company‘ at row 1
- 网上音乐商店项目文档
- 情人节简单浪漫烟花html的代码
- 原创小说 - 爱人失踪(第一部)
- 小白避坑系列--Ubuntu1804 RTX3060显卡实现双屏
- 【mpvue】小程序开发入门
热门文章
- [附源码]Nodejs计算机毕业设计科技类产品众筹系统Express(程序+LW)
- 企业为什么需要B2B电商系统
- 为什么这么多人想转行做产品经理?
- SAIL-IMX7D开发板截屏工具gsnap移植
- 哈工大软件构造课程知识点总结(二)
- Python每日笔记打卡_day3
- leetcode-database-262. Trips and Users
- 米思齐(Mixly)图形化系列教程(六)-for循环
- 数据分析实际案例之:pandas在餐厅评分数据中的使用
- Z-BLOG 懒人一键采集插件,自动采集+发布+推送