我的Python学习之路(4)

今日学习内容

1.跟随视频课程,学习了Python分支结构、循环结构、异常处理等语法内容
2.掌握并了解Python基本库中的random库随机函数的用法
3.根据所学内容应用并求解圆周率,我使用了两种方法来计算圆周率,分别是近似公式法和蒙特卡罗法
(1)近似公式法
公式:
我的Python学习之路(4)_第1张图片
源代码:

#CalPi.py
Pi = 0
N = 10000
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))

(2)蒙特卡罗法:
基本思想:百度百科
我的Python学习之路(4)_第2张图片

源代码:

#CalPi2.py
import random
import time

Darts = 1000*1000
inside = 0.0
start = time.perf_counter()
for i in range(1, Darts + 1):
    x, y = random.random(), random.random()
    distance = pow(x ** 2 + y ** 2, 0.5)
    if distance <= 1.0:
        inside += 1
Pi = 4 * (inside / Darts)
print("圆周率约是:{}".format(Pi))
print("运算时间是:{:.5f}s".format(time.perf_counter() - start))

总结:经过两种方法的比较,近似公式法求解圆周率速度较快,但当小数点后的位数更大时,数据不够精准。蒙特卡罗方法相反,运行时间较长,但当小数点后位数足够大时,其计算出的数值更加准确。本例中所有散点的规模为1000*1000,也就是一百万,远远不能够体现蒙特卡罗方法的准确性,需要更多的散点数量及更好的算法设计来体现。
注:本文是博主本人学习的日常记录,不进行任何商用所以不支持转载请理解!如果你也对Python有一定的兴趣和理解,欢迎随时找博主交流~

你可能感兴趣的:(我的Python学习之路,python,算法,编程语言,抽象代数)