使用 python 實現π的計算


 

π的計算

一、π的簡介

  • π的介紹

  圓周率用希臘字母 π(讀作pài)表示,是一個常數(約等於3.141592654),是代表圓周長和直徑的比值。它是一個即無限不循環小數,在日常生活中,通常都用3.14代表圓周率去進行近似計算。

  • π的求解歷程

  1965年,英國數學家約翰·沃利斯(John Wallis)出版了一本數學專著,其中他推導出一個公式,發現圓周率等於無窮個分數相乘的積。

  2015年,羅切斯特大學的科學家們在氫原子能級的量子力學計算中發現了圓周率相同的公式。

  2019314日,谷歌宣布圓周率現已到小數點后31.4萬億位。

 

  此處用一個自我感覺‘良好’的公式進行求解,說良好是因為計算結果相對准確,但計算過程用時較長,一起來學習吧~~~

 

 

二、π的近似計算

   1. 計算公式 

 

  2. 方法講解

  所用公式等式右邊分子都為1,分母為遞增數列,從第一項開始,奇數項符號為正,偶數項符號為負。等式右邊的分母越大,越小,圓周率π計算的值越精確;換個角度講,就是等式右邊的項越多,計算的值越精確。

 

  3. 代碼實現(python)

 

 1 from math import fabs           #導入數學模塊
 2 from time import perf_counter   #導入時間模塊
 3 
 4 def Bar(i):         #動態文本條
 5     N = pow(10,level)
 6     a = int((i/N)*50)
 7     b = 50 - a
 8     Y , N = '*' * a , '.' * b
 9     print("\r計算中:{:3.0f}% [{}->{}] {:.2f}s"
10           .format(2*a,Y,N,perf_counter()),end='')
11     
12 level = eval(input('計算Pi精確到小數點后幾位數:'))
13 print('\n{:=^70}'.format('計算開始'))
14 a,b,pi,tmp = 1,1,0,1
15 i = 0
16 '''
17 a 分子  |  b 分母  |  pi 圓周率
18 tmp 存儲a/b的值    |  i  執行進度
19 '''
20 perf_counter()      #開始計時
21 while (fabs(tmp) >= pow(10,-level)): #計算Pi
22     pi += tmp
23     b += 2
24     a = -a
25     tmp = a/b
26     i += 2
27     Bar(i)          #調用函數,實時顯示計算進度
28 
29 print('\n{:=^70}'.format('計算完成'))
30 print('\nPi的計算值為:{}'.format(round(pi*4,level))) #輸出計算結果

 

  4. 圖片示例

 

 

 

   由上面3張圖片可知,精確到小數點后4位只要14.07秒,精確到小數點后6位也需要124.61秒,而精確到小數點后8位就需要 850 / 8% = 10625秒,約為 177 分鍾,也就是2.95個小時。這種方法固然好,但計算起來還是需要很長一段時間的。

《圓周率π》是個奇妙而美麗的存在,它是個無限不循環小數,就像是一種缺陷美,只要你有發現美的眼睛!

2011年,國際數學協會正式宣布,將每年的3月14日設為國際數學節,來源則是中國古代數學家祖沖之的圓周率。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM