标签:8k frac 蒙特卡罗 圆周率 027 实例 计算 pi
目录
- 一、"圆周率的计算"问题分析
- 1.1 蒙特卡罗方法
- 二、"圆周率的计算"实例讲解
- 2.1 蒙特卡罗方法
- 三、"圆周率的计算"举一反三
- 3.1 理解方法思维
- 3.2 程序运行时间分析
- 3.3 计算问题的扩展
一、"圆周率的计算"问题分析
圆周率的近似计算公式
\[\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 蒙特卡罗方法
二、"圆周率的计算"实例讲解
圆周率的近似计算公式
\[\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 蒙特卡罗方法
# 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
三、"圆周率的计算"举一反三
3.1 理解方法思维
- 数学思维:找到公式,利用公式求解
- 计算思维:抽象一种过程,用计算机自动化求解
- 谁更准确? (不好说…)
3.2 程序运行时间分析
- 使用time库的计时方法获得程序运行时间
- 改变撒点数量,理解程序运行时间的分布
- 初步掌握简单的程序性能分析方法
3.3 计算问题的扩展
- 不求解圆周率,而是某个特定图形的面积
- 在工程计算中寻找蒙特卡罗方法的应用场景
标签:8k,frac,蒙特卡罗,圆周率,027,实例,计算,pi 来源: https://blog.51cto.com/u_13804357/2709908
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。