Hello 天文

自動翻譯,請以簡體中文原文校核。

反覆“改進答案”,為什麼有時越算越離譜?

不是所有重複計算都能靠近答案;同一題,改寫方式和起點都會影響結果。

通用演算法與數值計算

你反覆修改一個猜測,希望誤差越來越小。可書裡的同一道五次方程,只換一下寫法,就可能從穩定收斂變成不停跳動。把它們放在同一張圖裡,看「迭代」什麼時候需要換工具。

開啟互動課程 →

先猜一下

同一個方程式只換一種等價改寫,迭代會得到完全相同的收斂表現嗎?

查看答案與解釋

不一定 — 等價方程式有相同的根,但更新規則的穩定性可能完全不同。

再把體驗和科學連結起來

先看“每次怎麼改”

同一個方程式可以改寫成不同的更新規則。每條規則都要檢查,而不是看到重複計算就相信它會收斂。

x新 = g(x舊)

看殘差,不只看數字像不像

殘差f(x)說明候選答案還差多少。收斂、步數用完和數值失控必須分開標註。

殘差 |f(x)| 與步長容差

Newton用切線預測下一步

切線與橫軸的交點給予新猜測。當切線太平或起點不好時,這個預測也可能失敗。

x新 = x舊 − f(x舊)/f′(x舊)

二分守住一個有根的區間

已知連續函數兩端異號,每次把區間減半。它可能慢些,但每一步的誤差界都清楚。

第n步區間寬度 = 原寬度 / 2ⁿ

把計算鏈展開

xₙ₊₁ = g(xₙ) xₙ₊₁ = xₙ − f(xₙ)/f′(xₙ) m = (a+b)/2 二分n輪后的宽度 = (b₀−a₀)/2ⁿ

分別對應固定點、牛頓與二分。牛頓法要求導數可用且不為零;二分需要連續函數的異號括號。步長小也應檢查殘差。

試一試

先看收斂例,再選發散和來回跳動的改寫。 Newton遇到壞起點也會失敗;二分依賴的是連續且異號的包圍區間。

動手看一遍 →

符號不用背

f(x)
希望變成零的函數
f′(x)
切線斜率,Newton法的分母
[a,b]
連續函數異號端點包圍的區間
容差
允許的殘差或區間寬度,不用浮點完全相等作唯一停止條件

演算法、精確度與適用範圍

補第5章例5.b–5.d與Newton、二分及浮點停止條件。可比較x⁵+17x−8、x⁵+3x−8、x⁵−3x−8、s³+3s−0.9。固定點形式為(b−xᵖ)/a、實數奇次根(b−ax)^(1/p)、b/(x^(p−1)+a),同一方程式的不同改寫可能收斂、發散或形成二週期。 Newton使用導數p x^(p−1)+a,導數近零停止;二分在已驗證異號的連續多項式區間內工作。示範最多40步,絕對候選值超過1e8即停止並提示,不把截斷稱為收斂;容差1e−10。舊硬體浮點尾數震盪只解釋原因,不偽造目前JavaScript引擎必然出現同樣序列。曲線窗固定x∈[−3,3]、y∈[−40,40],窗外值用數字提示。

我的理解檢查

兩次顯示的小數看起來一樣,就一定該停止嗎?

也應檢查容差與殘差 — 顯示舍入可能掩蓋變化;演算法必須有明確停止條件和迭代上限。

二分法只要兩端異號就能保證中間有零點嗎?

也要求函數在區間內連續 — 跨過tan的垂直漸近線也會異號,卻沒有那個零點。

Newton的導數接近零時,應該?

停止或改起點/方法 — 分母過小會造成巨大、不可靠的修正。

迭代不是「多算幾次就行」。要選合適規則、檢查殘差,並在失敗時明確停下來。

Jean Meeus · Astronomical Algorithms, 2nd ed. · 第 5 章

通用演算法與數值計算 · 全部互動課程