美文网首页
4.5 实例6:圆周率的计算

4.5 实例6:圆周率的计算

作者: 郭柯廷 | 来源:发表于2020-03-18 01:09 被阅读0次

四、程序的控制结构

4.5 实例6:圆周率的计算

"圆周率的计算"问题分析

圆周率的近似计算公式

π=\sum_{k=0}^∞[\frac{1}{16^2}(\frac{4}{8k+1})-(\frac{2}{8k+4})-(\frac{1}{8k+5})-(\frac{1}{8k+6})]

#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

蒙特卡洛方法

[图片上传失败...(image-d0eb23-1584464989276)

#CalPiV2.py
from random import random
from time import perf_counter

DARTS = 1000*1000
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.142364
运行时间是:0.75162s

举一反三

理解方法思维

  • 数学思维:找到公式,利用公式求解
  • 计算思维:抽象一种过程,用计算机自动化求解
  • 谁更准确?

程序运行时间分析

  • 使用time库的计时方法获得程序运行时间
  • 改变撒点数量,理解程序运行时间的分布
  • 初步掌握简单的程序性能分析方法

计算问题的扩展

  • 不求解圆周率,而是某个特定图像的面积
  • 在工程计算中寻找蒙特卡洛方法的应用场景

相关文章

网友评论

      本文标题:4.5 实例6:圆周率的计算

      本文链接:https://www.haomeiwen.com/subject/zxpfyhtx.html