掃二維碼與項(xiàng)目經(jīng)理溝通
我們在微信上24小時(shí)期待你的聲音
解答本文疑問/技術(shù)咨詢/運(yùn)營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流

一、π的簡介
π的介紹
圓周率用希臘字母 π(讀作pài)表示,是一個常數(shù)(約等于3.141592654),是代表圓周長和直徑的比值。它是一個即不循環(huán)小數(shù),在日常生活中,通常都用3.14代表圓周率去進(jìn)行近似計(jì)算。
π的求解歷程
1965年,英國數(shù)學(xué)家約翰·沃利斯(John Wallis)出版了一本數(shù)學(xué)專著,其中他推導(dǎo)出一個公式,發(fā)現(xiàn)圓周率等于無窮個分?jǐn)?shù)相乘的積。
2015年,羅切斯特大學(xué)的科學(xué)家們在氫原子能級的量子力學(xué)計(jì)算中發(fā)現(xiàn)了圓周率相同的公式。
2019年3月14日,谷歌宣布圓周率現(xiàn)已到小數(shù)點(diǎn)后31.4萬億位。
相關(guān)推薦:《python教程》
二、π的近似計(jì)算
1 計(jì)算公式
2. 方法講解
所用公式等式右邊分子都為1,分母為遞增數(shù)列,從第一項(xiàng)開始,奇數(shù)項(xiàng)符號為正,偶數(shù)項(xiàng)符號為負(fù)。等式右邊的分母越大,越小,圓周率π計(jì)算的值越精確;換個角度講,就是等式右邊的項(xiàng)越多,計(jì)算的值越精確。
3. 代碼實(shí)現(xiàn)(python)
from math import fabs #導(dǎo)入數(shù)學(xué)模塊
from time import perf_counter #導(dǎo)入時(shí)間模塊
def Bar(i): #動態(tài)文本條
N = pow(10,level)
a = int((i/N)*50)
b = 50 - a
Y , N = '*' * a , '.' * b
print("\r計(jì)算中:{:3.0f}% [{}->{}] {:.2f}s".format(2*a,Y,N,perf_counter()),end='')
level = eval(input('計(jì)算pi精確到小數(shù)點(diǎn)后幾位數(shù):'))
print('\n{:=^70}'.format('計(jì)算開始'))
a,b,pi,tmp = 1,1,0,1
i = 0
'''
a 分子 | b 分母 | pi 圓周率
tmp 存儲a/b的值 | i 執(zhí)行進(jìn)度
'''
perf_counter() #開始計(jì)時(shí)
while (fabs(tmp) >= pow(10,-level)): #計(jì)算Pi
pi += tmp
b += 2
a = -a
tmp = a/b
i += 2
Bar(i) #調(diào)用函數(shù),實(shí)時(shí)顯示計(jì)算進(jìn)度
print('\n{:=^70}'.format('計(jì)算完成'))
print('\nPi的計(jì)算值為:{}'.format(round(pi*4,level))) #輸出計(jì)算結(jié)果4. 圖片示例
由上面3張圖片可知,精確到小數(shù)點(diǎn)后4位只要14.07秒,精確到小數(shù)點(diǎn)后6位也需要124.61秒,而精確到小數(shù)點(diǎn)后8位就需要 850 / 8% = 10625秒,約為 177 分鐘,也就是2.95個小時(shí)。這種方法固然好,但計(jì)算起來還是需要很長一段時(shí)間的。
《圓周率π》是個奇妙而美麗的存在,它是個不循環(huán)小數(shù),就像是一種缺陷美,只要你有發(fā)現(xiàn)美的眼睛!
2011年,國際數(shù)學(xué)協(xié)會正式宣布,將每年的3月14日設(shè)為國際數(shù)學(xué)節(jié),來源則是中國古代數(shù)學(xué)家祖沖之的圓周率。

我們在微信上24小時(shí)期待你的聲音
解答本文疑問/技術(shù)咨詢/運(yùn)營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流