python中圆周率的计算
圆周率计算
利用近似公式计算圆周率
数学公式的代码实现
#CalPiV1.py
pi = 0
N = 100
for k in range(N):
pi +=1/pow(16,k)*(\
4/(8*k+1) - 2/(8*k+4) - \
1/(8*k+5) - 1/(8*k+6)) #\用于换行
print("圆周率值是:{}".format(pi))
运行结果:
>圆周率值是:3.141592653589793
蒙特卡罗法
蒙特卡罗法代码实现
#CalPiV2.py
from random import random
from time import perf_counter #引入计时器
DARTS = 1000*1000*10 #定义投掷次数
hits = 0.0 #命中数
start = perf_counter()
for i in range(1,DARTS+1):
x,y = random(),random() #随机产生一个坐标
dist = pow(x**2 + y**2,0.5) #计算据原点距离
if dist <= 1.0:
hits = hits + 1
pi = 4 * (hits/DARTS)
print("圆周率值是:{}".format(pi))
print("运行时间是:{:.5f}s".format(perf_counter()-start))
运行结果:
>圆周率值是:3.1413208
运行时间是:10.56413s
举一反三
数学思维:利用近似公式
计算思维:抽象一种过程,利用计算机自动化求解
程序性能利用perf_counter观测