作者if4 (if Chen)
標題Re: [分享] 計算π到小數點下一億位
時間Sat Mar 15 03:03:41 2025
計算π到小數點下一億位之我見(1)
原po很厲害,寫出的程式計算π到小數點下一億位,所花時間只需6分鐘,我思索這
個問題都不止6天了XD所以我嘗試將這個過程寫下來,看是不是我有什麼地方漏了,
請大家一起來檢視。
對程式設計師而言,要敢拍胸脯保證這π一億位中的第6千萬位是正確的,抱歉,我
無法做這保證,所以我還在研究中XD原po當然敢,因為程式是他寫的XD
對程式設計師來說,要保證所求是正確的,第一、您所用演算法是正確的或可接受的
,第二、沒有重大BUG。第二點大多數人很難在一開始就做這樣的保證,君不見
Windows到現在還在研發中,當然它有新的功能被加入,但也無法否認更新一直在出
版,這部份確實一直有新的BUG被報告。現在對我而言我比較在意第1點。因為要保證
無錯誤,即使是微軟也無法保證,退而求其次,當然要保證所用演算法是正確或可接
受的。這部分定義問題就很重要了。我怎麼看這問題,回到問題,π是什麼?是圓周
率...
看π的定義:圓周率為圓周長與直徑的比率,它是個常數,是個實數,是個無窮位數
的一個常實數。那我要怎麼去求這個數,尤其是用電腦求出前面一憶位數。
我們先看看古代怎麼求解,一開始是 3. 然後3.1 3.14然後到近代,小數點下十億...
百億...為什麼古人這麼笨?不要怪他們,這個問題一開始根本是一個測量問題,怎麼
求?就真的拿尺拿線去量測,所以精度很難要求,差別是用的工具不同。但是現代人
聰明了...從分析學的角度看事情...
人變聰明了嘛,人總是要進步...我們從小學過的公式多不多?跟圓周率π有關的呢?
我記不了這麼多,腦子不好使,那就讓我孤狗:含有圓周率π的數學公式有那些?
我找到維基的百科全書「含圓周率的公式列表」,先從古典幾何來看:
(
https://zh.wikipedia.org/zh-tw/%E5%90%AB%E5%9C%86%E5%91%A8%E7%8E%87%E7%9A
%84%E5%85%AC%E5%BC%8F%E5%88%97%E8%A1%A8 )
( 短網址:
https://tinyurl.com/mt83dbwy )
C=2πr > π=(1/2)*(C/r) C是周長 問題點:都是測量值 再看下去...
A=πr平方 A是圓面積
V=(3/4)*πr三次方 V是球體積
這些都有測量上的問題,所以它們無法精密精準...
...下次再寫吧...先去巡邏...Orz
PS:
下次要看這個問題,可能要請大家先去研讀維基古典幾何的下一個部份:分析
因為我發現在BBS上輸入數學式子很苦手...有礙大家的眼...我就不掙扎了XD Orz
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.251.226.163 (臺灣)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/C_and_CPP/M.1741979024.A.EE7.html
※ 編輯: if4 (220.129.156.70 臺灣), 03/15/2025 09:53:32
1F:推 Lipraxde: 先睡覺,睡飽再從級數開始學怎麼算 pi 好嗎XD? 03/15 09:31
2F:推 lc85301: 這部分我推薦看這個影片,算是 pi 脫離幾何學的介紹 03/15 16:51
4F:→ if4: 謝謝<3 請問有沒有中文版的?我英文不太好 Ore 03/15 19:37
5F:→ if4: Orz 03/15 19:38
6F:→ if4: 我前面是說我花了不止6天去研究這問題 那還客氣了 我從小就在 03/16 00:55
7F:→ if4: 想這問題 我看過一本書 整本書就在寫圓周率 3.1415926535 03/16 00:58
8F:→ if4: 小時候在猜測這到底怎麼求出來 那時我還不會寫程式 稍稍長大 03/16 01:01
9F:→ if4: 瞭解更多 我連公式都要自己去驗算 覺得電腦好厲害 03/16 01:04
10F:→ if4: 這是我研究程式設計最大的動力啊 03/16 01:07
11F:→ if4: 現代有電腦真好 然後有量子電腦 我不知道我可不可以活著用它 03/16 01:16
12F:推 lc85301: 它的字幕有中文的呀 03/16 16:06
13F:→ if4: 好 <3 我再看看,謝謝您 03/16 19:38
14F:推 suhorng: 右上角語言點中文,英文網頁連結比較好貼 03/18 14:03
15F:→ suhorng: wikipedia.org/wiki/Bailey–Borwein–Plouffe_formula 03/18 14:05
17F:→ suhorng: 你看分母那個 16^k 和 2^{10n}, 適合 16 進位制的計算 03/18 14:08
18F:→ suhorng: 然後可以用不同公式計算再對答案 03/18 14:11
19F:→ if4: 其實我很怕在BBS上使用數學式子...可能需要在其他媒體使用吧? 03/19 23:43
20F:→ if4: 您說的是好方法 我想的是π在其他電腦上有執行過 可不可以引 03/19 23:48
21F:→ if4: 用別人的數據?但要怎麼引用是個大問題 Orz 03/19 23:49
22F:→ if4: 然後比較看一不一樣 03/19 23:51
23F:→ if4: 我顧慮的是:公式不一樣,收斂速度不會一樣,精確度無法比較 03/20 04:04
24F:推 lc85301: 為什麼要在 BBS 上寫數學式子… 03/20 11:15
25F:→ if4: 我知道的不多 03/20 21:52
26F:推 lc85301: 不不不,要寫數學式子有很多好工具,BBS 肯定不是其中一 03/20 23:14
27F:推 lc85301: 個 03/20 23:14
28F:推 suhorng: @if4: 如 arctan 之類公式算好收斂速度後就能比精度的吧 04/06 10:44
29F:→ suhorng: 至於 BBP 之類的公式, 特點就在於符合十六進位, 不僅是 04/06 10:45
30F:→ suhorng: 收斂快, 更在於計算某個位數時不用計算前面的位數, 04/06 10:45
31F:→ suhorng: 很適合拿來檢驗答案 04/06 10:45