美文网首页
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