反覆“改進答案”,為什麼有時越算越離譜?
不是所有重複計算都能靠近答案;同一題,改寫方式和起點都會影響結果。
你反覆修改一個猜測,希望誤差越來越小。可書裡的同一道五次方程,只換一下寫法,就可能從穩定收斂變成不停跳動。把它們放在同一張圖裡,看「迭代」什麼時候需要換工具。
開啟互動課程 →
先猜一下
同一個方程式只換一種等價改寫,迭代會得到完全相同的收斂表現嗎?
查看答案與解釋
不一定 — 等價方程式有相同的根,但更新規則的穩定性可能完全不同。
再把體驗和科學連結起來
先看“每次怎麼改”
同一個方程式可以改寫成不同的更新規則。每條規則都要檢查,而不是看到重複計算就相信它會收斂。
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 章