Python 之圆周率 π 的计算
目錄
1、公式法? ??
2、蒙特卡洛(Monte Carlo)方法
????????圓周率(Pi)是圓的周長與直徑的比值,一般用希臘字母 π 表示,是一個在數學及物理學中普遍存在的數學常數。日常生活中,通常都用3.14代表圓周率去進行近似計算。
? ? ? ? π 是一個無理數,即無限不循環小數。歷史上不少數學大師窮一生精力計算其精確近似值。公元480年左右,南北朝時期的數學家祖沖之利用割圓法,將 π 精確到小數點后7位,給出不足近似值3.1415926和過剩近似值3.1415927,還得到兩個近似分數值,密率355/113和約率22/7。之后的800年里,其計算出的 π 值都是最準確的。
? ? ? ? 隨著計算機的出現,π 值計算有了突飛猛進的發展。2021年8月17日,美國趣味科學網站報道,瑞士研究人員使用一臺超級計算機,歷時108天,將 π 計算到小數點后62.8萬億位,創下該常數迄今最精確值記錄。
? ? ? ?本文簡要介紹兩種方法。
1、公式法? ??
?????????1995年,美國三位算法學家 Bailey-Borwein-Plouffe 共同提出一震驚數學界的公式,即著名的BBP公式,將 π 計算公式推向高峰:
?????????其代碼如下:
#圓周率計算公式法pi=0 N=eval(input())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(pi)????????當 N 賦值100時,所得 π 值為3.141592653589793,非常精確,隨著 N 賦值的增大,可能越來越精確,當然,伴隨的是計算時間的延長。
2、蒙特卡洛(Monte Carlo)方法
????????蒙特卡洛為地名而非人名,位于賭城摩納哥,象征概率。該方法由大名鼎鼎的數學家馮·諾伊曼提出,誕生于上世紀40年代美國的“曼哈頓計劃”。原理是通過大量隨機樣本,去了解一個系統,進而得到所要計算的值。
? ? ? ? 鑒于一個正方形內切圓和正方形的面積之比為 π/4,在該正方形內部,隨機填充 n 個點(這些點服從均勻分布),若它們與中心點的距離不大于圓的半徑,則這些點均落在圓的內部。統計圓內的點數,與 n 的比值乘以4,就是 π 的值。理論上,n 越大,計算的 π 值越準。
?????????其代碼為:
from random import * seed(100) #設定種子以固定隨機數dot=0 dots=eval(input('請輸入您想填充的點數:')) for i in range(1,dots+1):x,y=random(),random()r=pow(x**2+y**2,0.5)if r<=1:dot+=1 pi=4*(dot/dots) print('所得圓周率為:{}'.format(pi))? ? ? ? 當圓內填充點為10000個時,所得 π 值為3.1396,1000000時為3.143964,100000000時則為3.1418574。理論上,填充點數越多,計算的 π 值越精準,隨之而來的,則是時間的延長……如果感興趣,您也可以調用 time.perfcounter() 函數看一下不同填充點數時所需的時間?。
總結
以上是生活随笔為你收集整理的Python 之圆周率 π 的计算的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 知识蒸馏小总结
- 下一篇: html中只显示农历的完整代码,很全的显