zoukankan      html  css  js  c++  java
  • 027 实例6-圆周率的计算

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

    圆周率的近似计算公式

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

    1.1 蒙特卡罗方法

    027-实例6-圆周率的计算-01.jpg

    二、"圆周率的计算"实例讲解

    圆周率的近似计算公式

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

    # CalPiV1.py
    
    pi = 0
    N = 10
    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.1333333333333333
    圆周率值是: 3.1414224664224664
    圆周率值是: 3.1415873903465816
    圆周率值是: 3.1415924575674357
    圆周率值是: 3.1415926454603365
    圆周率值是: 3.141592653228088
    圆周率值是: 3.141592653572881
    圆周率值是: 3.141592653588973
    圆周率值是: 3.1415926535897523
    圆周率值是: 3.1415926535897913
    

    2.1 蒙特卡罗方法

    027-实例6-圆周率的计算-02.jpg

    # 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.141148
    运行时间是: 0.77535s
    

    三、"圆周率的计算"举一反三

    027-实例6-圆周率的计算-03.jpg

    3.1 理解方法思维

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

    3.2 程序运行时间分析

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

    3.3 计算问题的扩展

    027-实例6-圆周率的计算-04.jpg?x-oss-process=style/watermark

    • 不求解圆周率,而是某个特定图形的面积
    • 在工程计算中寻找蒙特卡罗方法的应用场景
  • 相关阅读:
    决策树
    结巴分词demo
    线性回归分析波士顿房价
    将python的字典格式数据写入excei表中
    ubuntu16.04电脑重启/关机卡死问题记录
    Hadoop 平台搭建
    Linux 常用命令
    灰度共生矩阵
    图像类型
    linux中的一些常用命令
  • 原文地址:https://www.cnblogs.com/nickchen121/p/11185034.html
Copyright © 2011-2022 走看看