Python使用割圆法求π值

news/2024/11/16 11:35:54/

三国时期刘徽提出的割圆法有多牛掰,看这个:刘徽割圆术到底做了什么? - 知乎

用Python实现的该算法代码如下:

python">#!/usr/bin/env python
"""使用割圆法计算π值Usage::$ python calc_circle_pi.py 20  # 参数20是迭代次数割圆法的几何描述可参考如下链接:
https://zhuanlan.zhihu.com/p/553830157
https://zhuanlan.zhihu.com/p/340959552
"""import math
import sysdef calc_pi(times: int, *, verbose=False) -> float:"""割圆法求π值:param times: 迭代次数(>=1):param verbose: 是否打印每次迭代的信息"""lines = 6  # 初始边数为6r = length = 1.0  # 边长为1area = (1 * math.sqrt(1**2 - 0.5**2) / 2) * 6  # 面积for i in range(times):lines *= 2  # 边数增加一倍ap = length / 2  # 直角边AP的长度op = math.sqrt(r**2 - ap**2)  # 另一直角边OP的长度pc = r - op  # 新增三角形的短直角边PC的长度length = math.sqrt(ap**2 + pc**2)  # 新多边形的边长ACincr_area = pc * ap / 2  # 新增三角形的面积delta = incr_area * linesarea += deltalow, high = area, area + deltaif verbose:print(f"第{i+1}次迭代,边数为{lines},边长为{length},π值为({low}, {high})")if low == high:if verbose:print("已到精度极限,终止迭代。")breakreturn areadef main() -> None:times = 10if sys.argv[1:]:if (a1 := sys.argv[1]) == "-i":times = int(input("请输入迭代次数:"))elif a1.isdigit():times = int(a1)print(f"{times = }")pi = calc_pi(times, verbose=True)print(f"Got PI: {pi}\n{math.pi=}")if __name__ == "__main__":main()

结果如下:


http://www.ppmy.cn/news/1456108.html

相关文章

最适合程序员的浏览器翻译插件——简约翻译!

1.支持功能 划词翻译(读音、解释、词性全都有,还可收藏词汇) 网页双语对照翻译 YouTube字幕翻译 输入框翻译 鼠标悬停翻译 2.自定义翻译规则 规则订阅/规则分享 自定义专业术语 3.自定义快捷键 AltQ 开启翻译 Alt…

Mysql 行格式 DYNAMIC 和 COMPACT 区别

MySQL的InnoDB存储引擎提供了多种行格式,其中DYNAMIC和COMPACT是两种常见的选择。这两种行格式在处理数据时有一些关键的区别,尤其是在管理大字段(如BLOB、TEXT和大的VARCHAR字段)方面。以下是DYNAMIC和COMPACT行格式的主要区别&a…

类和对象-Python-第一部分

初识对象 使用对象组织数据 class Student:nameNonegenderNonenationalityNonenative_placeNoneageNonestu_1Student()stu_1.name"林军杰" stu_1.gender"男" stu_1.nationality"中国" stu_1.native_place"山东" stu_1.age31print(stu…

C++进阶之路:何为引用、内联函数、auto与指针空值nullptr关键字

✨✨ 欢迎大家来访Srlua的博文(づ ̄3 ̄)づ╭❤~✨✨ 🌟🌟 欢迎各位亲爱的读者,感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢,在这里我会分享我的知识和经验。&am…

森林消防泵操作指南:守护绿色的必备技能/恒峰智慧科技

在广袤无垠的森林中,每一片绿叶都承载着生命的希望。然而,当火焰无情地吞噬这片生机时,我们需要一种强大的力量来与之抗衡。这时,森林消防泵便成为了我们的守护者,掌握其操作技巧,更是每一位热爱大自然者的…

《Video Mamba Suite》论文笔记(4)Mamba在时空建模中的作用

原文翻译 4.4 Mamba for Spatial-Temporal Modeling Tasks and datasets.最后,我们评估了 Mamba 的时空建模能力。与之前的小节类似,我们在 Epic-Kitchens-100 数据集 [13] 上评估模型在zero-shot多实例检索中的性能。 Baseline and competitor.ViViT…

C++ | 类和对象(上)

目录 什么是类 类的介绍 struct在两种语言中的有何区别 私有变量命名注意点 类的作用域 类的声明定义分离 类的访问限定符 封装 类的实例化 类对象的存储 this指针 一道this指针相关的王炸题: 结语 什么是类 类的介绍 我们举一个日常生活中的例子&…

【开发技巧 | 第三篇】windows端口被占用及解决方法

文章目录 3.windows端口被占用及解决方法3.1查看指定端口被占用情况3.2根据PID查看对应的进程3.3根据PID杀死对应的进程3.4小结 3.windows端口被占用及解决方法 3.1查看指定端口被占用情况 netstat -aon|findstr 7090或 netstat -aon|findstr "7090"最后一列数字为…