全部留言
好,先簡短定義再分方法一步步說明(以學術教學方式)。 1) 什麼是圓周率 π? - 定義:π ≡ 圓的周長 ÷ 直徑(C/D)。這是一個常數,約等於 3.14159…。 - 性質(簡要):π 是無理數(不能表示為兩整數的比)且為超越數(不是任何整係數多項式的根)。 2) 幾種常見的「計算 π」的方法(由簡到難、由慢到快) A. 幾何逼近(阿基米德方法)——多邊形內切與外接 - 思路:把圓分別用內切多邊形與外接多邊形逼近,計算多邊形的周長可得到對圓周的上下界。隨邊數 n 增大,上下界會收斂到 π。 - 基本步驟(以半徑 r = 1 的單位圓): 1. 調好初始多邊形(例如正六邊形,邊長可由等邊三角形得出)。 2. 每次把邊數翻倍(n → 2n),利用三角函數或幾何關係算出新邊長,然後算周長 P_n = n × 邊長。 3. 內接周長/2 ≤ π ≤ 外接周長/2,重複直到滿意。 - 優缺點:概念簡單但收斂較慢(需要很大邊數才高精度)。 B. 交錯級數(例如 Leibniz/Gottfried Wilhelm von Leibniz) - Leibniz 公式:π/4 = 1 − 1/3 + 1/5 − 1/7 + 1/9 − … = Σ_{k=0}^∞ [ (−1)^k / (2k+1) ]. - 範例:前 4 項 1 − 1/3 + 1/5 − 1/7 = 0.7238… → π ≈ 2.8952(非常粗)。 - 優缺點:極簡單但收斂極慢(要很多項才精確)。 C. 反正切級數與 Machin 類公式(收斂快) - 反正切級數:arctan(x) = Σ_{n=0}^∞ (−1)^n x^{2n+1} / (2n+1),當 |x| ≤ 1 時收斂(|x| 越小收斂越快)。 - Machin 公式(著名例子):π/4 = 4 arctan(1/5) − arctan(1/239)。因為 1/5 和 1/239 都很小,代入 arctan 級數能迅速收斂,歷史上被廣泛用於手算與機算。 - 優缺點:比 Leibniz 快很多,實際上許多早期大數位計算採用類似分解。 D. 無窮積(例如 Wallis、Viète) - Wallis 公式:π/2 = Π_{n=1}^∞ (4n^2)/(4n^2 − 1)。 - Viète 公式(最早的無窮乘積之一):1/π = (1/2)·(√(1/2))·(√(1/2 + 1/2·√(1/2)))·…(以反覆平方根構成)。 - 優缺點:形式優美,理論價值高,但收斂速度不一。 E. 快速數值演算法(現代用於大量位數) - Gauss–Legendre(又稱 Gauss–Legendre 算法):一個結合平均數和調和/平方根的迭代法,具有二次收斂(每次迭代位數大致翻倍),非常適合高精度計算。迭代步驟(簡化描述): a0 = 1 b0 = 1/√2 t0 = 1/4 p0 = 1 重複: a_{k+1} = (a_k + b_k)/2 b_{k+1} = √(a_k b_k) t_{k+1} = t_k − p_k (a_k − a_{k+1})^2 p_{k+1} = 2 p_k 最後 π ≈ (a_n + b_n)^2 / (4 t_n)。 - Ramanujan / Chudnovsky 型級數:Ramanujan 發現幾個超快收斂的級數;Chudnovsky 家族公式是目前常用於數千萬、數十億位 π 的方法,收斂極快(每項增加數百位)。其形式較複雜,但非常適合電腦實作。 - 優缺點:收斂極快,適合高精度,但需要任意精度算術(bignum)和較複雜程式。 F. 隨機/近似法(Monte Carlo) - 思路:在邊長為 2 的正方形內隨機撒點,計算落在內切圓(半徑 1)內的比例,比例 ≈ 圓面積 / 正方形面積 = π/4。則 π ≈ 4 × (圓內點數 / 總點數)。 - 優缺點:實作簡單,可視化教學好用,但收斂隨樣本數平方根(需要大量點數才能高精度)。 3) 小結與選擇建議 - 手算、教學觀念:阿基米德幾何法與 Leibniz、arctan 級數適合理解 π 的本質與級數性質。 - 實際想求到幾十位或更多(用電腦):使用 Gauss–Legendre、Ramanujan 或 Chudnovsky 類算法最有效。 - 如果你想要,我可以: - 提供某一方法的逐步數值範例(例如用 Archimedes 做 n=6→12→24 的計算),或 - 寫出 Python 範例程式碼(例如用 Machin、Gauss–Legendre、或 Chudnovsky)讓你在自己電腦上跑出指定位數的 π。 你想要哪一類的細節?(例如「阿基米德的數值示範」、「Machin + arctan 級數推導與範例」、「Gauss–Legendre 實作程式碼」或「Chudnovsky 範例」)
B1-2 下面以「阿基米德的多邊形內切/外接逼近法」做數值示範──以半徑 r = 1 的單位圓為例(這樣圓周長 = 2π,π = 周長 ÷ 2)。我會先給出要用的公式、再做幾次翻倍(6 → 12 → 24)示範,最後說明如何得到阿基米德的 96 邊形界限(他經典的結論 3 10/71 < π < 3 1/7)。 一、基本公式(單位圓 r = 1) - n 邊內切多邊形的邊長 a_n = 2 sin(π/n)。內切周長 P_in(n) = n · a_n。則內切得到的下界為 π > P_in(n)/2。 - n 邊外接多邊形的邊長 A_n = 2 tan(π/n)。外接周長 P_out(n) = n · A_n。則外接得到的上界為 π < P_out(n)/2。 - 不用直接用三角函數也可遞推:若已知內切 n 邊邊長 a_n,則邊數加倍時 a_{2n} = sqrt(2 − sqrt(4 − a_n^2)). (這是利用半角關係導出的代數遞推式,便於手算或逐步計算。) 二、從正六邊形開始(阿基米德就是從正六邊形開始翻倍的) 1) n = 6(正六邊形) - 內切邊長 a_6 = 1(因為 2 sin(π/6) = 2·1/2 = 1)。 - 內切周長 P_in(6) = 6·1 = 6 → 下界 π > 6/2 = 3.000000000... - 外接邊長 A_6 = 2 tan(π/6) = 2/√3 ≈ 1.1547005383792517。 - 外接周長 P_out(6) ≈ 6·1.1547005383792517 = 6.92820323027551 → 上界 π < 6.92820323027551/2 ≈ 3.464101615137755 2) 將 6 邊翻為 12 邊(用遞推公式或直接用 sin) - a_12 = sqrt(2 − sqrt(4 − a_6^2)) = sqrt(2 − sqrt(3)) ≈ 0.5176380902050415 (等同於 2 sin 15°) - P_in(12) = 12·a_12 ≈ 12·0.5176380902050415 = 6.211657082460498 → 下界 π > 6.211657082460498 / 2 = 3.105828541230249 - 外接 A_12 = 2 tan(15°) ≈ 0.5358983848622453 - P_out(12) ≈ 12·0.5358983848622453 = 6.4307806183469436 → 上界 π < 6.4307806183469436 / 2 = 3.215390309173472 3) 再將 12 邊翻為 24 邊 - a_24 = sqrt(2 − sqrt(4 − a_12^2)) ≈ 0.2610523844401031 (= 2 sin 7.5°) - P_in(24) = 24·a_24 ≈ 6.265257226562475 → 下界 π > 6.265257226562475 / 2 = 3.1326286132812375 - A_24 = 2 tan(7.5°) ≈ 0.263304995172 - P_out(24) ≈ 24·0.263304995172 ≈ 6.319319884128 → 上界 π < 6.319319884128 / 2 = 3.159659942064 (可以繼續用同一遞推式 a_{2n} 重複翻倍:24 → 48 → 96 …,每次內切周長增加、外接周長減少,兩者夾逼 π。) 三、阿基米德的結論(n = 96) 阿基米德把邊數一路翻到 96 邊,最後得到的界限用分數表示為: 3 + 10/71 < π < 3 + 1/7, 即 223/71 < π < 22/7. 這是阿基米德最著名的結果(223/71 ≈ 3.1408450704,22/7 ≈ 3.1428571429),表示使用 96 邊的內切與外接多邊形能保證 π 在這兩個有理數之間。這個結果在當時是極佳的近似(範圍包含真正的 π ≈ 3.1415926536)。 四、補充與延伸 - 數值上,逐次翻倍會愈逼近真值;但用幾何手算時要處理許多平方根,算量大。阿基米德以幾何方法逐步計算(以幾何作圖與比例),最後整理得出上面那兩個分數界。 - 若你想要,我可以: - 幫你把 6→12→24→48→96 的每一步都用高精度數值算出內外界到小數幾十位;或 - 提供一段 Python 程式(用 decimal 或 mpmath)來自動把多邊形邊數翻倍並列出每一步的上下界;或 - 用代數推導更詳細地證明遞推式 a_{2n} = sqrt(2 − sqrt(4 − a_n^2)) 的來源。 你希望我:A) 呈現完整到 96 邊每一步的高精度數值表?還是 B) 給出可直接執行的 Python 程式讓你自己算?還是 C) 更詳細做幾何代數推導?