圓周率用電腦有幾種算法?

一說起圓周率π,很多人就想到祖沖之老爺子的割圓術。

說實話,祖大人也挺無奈的,從我們小學就開始割圓,一直割到大學還在割。

但割圓術只適合手算,如何用電腦算π呢?

泰勒展開

泰勒展開在科學計算中簡直有著匪夷所思的變態威力。

之前我有一篇文章 介紹了什麼是泰勒展開,它可以把複雜函數轉換成加減乘除,比如sinx:

圓周率用電腦有幾種算法?

之所以要展開,是因為通用計算機本質上只能計算加減乘除。

用泰勒展開計算π

首先想到的思路就是,反三角函數,根據定義有:

圓周率用電腦有幾種算法?

那麼,接下來的問題就是,

如何計算arctan(1)

有人說,直接調用C語言庫函數atan(double,double)不就行了。

確實,這可以完成計算,然而,這是一種令人不齒的開掛行為,就好像我問怎麼跑完馬拉松,你說你開車一溜煙就跑完了一樣。

庫函數是別人寫好的,我們現在是思索如何實現計算,而不是考慮如何調用。

至此,我們只好請出祖傳配方,把arctan(x)進行泰勒展開:

圓周率用電腦有幾種算法?

然後,令x = 1,得到:

圓周率用電腦有幾種算法?

格雷戈裡-萊布尼茨公式

它被稱為萊布尼茨級數,也被稱為格雷戈裡-萊布尼茨級數,用以紀念萊布尼茨同時代的天文學家兼數學家詹姆斯·格雷戈裡。

看起來很吊是不是······

但是啊但是,還不夠吊,因為問題還沒完:

這個級數收斂極慢。

比如,算到+4/9,也就是前五項,結果僅為3.3396,誤差有0.2之多。

它要到算500000項之後,才會精確到小數點後五位:

就算電腦也算得太累了。

何況萊布尼茲(1646年7月1日-1716年11月14日)當年是沒有電腦的!

加快收斂

於是,人們嘗試改進,希望能快點計算。

英國數學家梅欽在1706年用上面的級數,發掘了一個可以快速收斂的公式:

圓周率用電腦有幾種算法?

配合上面arctan(x)泰勒展開,梅欽依據此公式(沒有電腦),把圓周率計算到小數點後一百多位。

英國數學家威廉·謝克斯花15年的時間以此計算到小數點後707位,不過在第528位時出錯,因此後面的都不正確了。

微微杯具就是了。

神奇公式

現代有了電腦,我們希望更快的收斂速度,因此科學家在尋找新的級數。

歷史總是留給吊人的,也總是會生產一些吊人的。

比如:

圓周率用電腦有幾種算法?

拉馬努金公式

這玩意被稱為拉馬努金公式,是印度科學家拉馬努金發明的。

第一位用拉馬努金公式計算π並取得進展的是比爾·高斯珀,他在1985年計算了小數點後一千七百萬位。

收斂再快一點?還有楚德諾夫斯基公式

圓周率用電腦有幾種算法?

楚德諾夫斯基公式

楚德諾夫斯基兄弟於1989年算得π小數點後10億(10⁹)位,法布里斯·貝拉於2009年算得2.7千億(2.7×10¹²)位,亞歷山大·易和近藤滋在2011年算得一萬億(10¹³)位。

意不意外,驚不驚喜,

無不無聊······



分享到:


相關文章: