透過 MCP 連接 →

輸入計算

Choose a and b so that f(a) and f(b) have opposite signs (f(a)·f(b) ≤ 0).

數學公式

廣告

結果

Approximate root x where f(x) ≈ 0
0.7390851332149927
試位法(Regula Falsi)
根 x 0.7390851332149927
迭代次數 10
根處的 f(x) -0.000000000000281108

什麼是試位法?

試位法(拉丁文 regula falsi,又稱「假位法」或「弦截剪刀法」)是一種用來求解 \(f(x) = 0\) 的包根(bracketing)求根方法。它和二分法一樣,需要先給定一個函數在其上會變號的初始區間 \([a, b]\),只要滿足 \(f(a)\cdot f(b) \le 0\),就能保證 \(a\) 與 \(b\) 之間必定存在一個根。但它不像二分法那樣每次都把區間對半切,而是在兩個端點之間畫一條直線,並取這條直線與 x 軸的交點作為下一個估計值,因此收斂速度通常比二分法更快。

曲線 f(x) 與 x 軸相交,一條割線連接含根區間的兩個端點
試位法用一條直線連接兩端點,其與 x 軸的交點即為下一個估計值。

如何使用本計算機

請以標準寫法輸入函數 \(f(x)\),可使用運算子 + - * / ^、括號,以及 sin、cos、tan、exp、log、ln、sqrt、abs、cbrt 等函數。設定下端點 \(a\) 與上端點 \(b\),使 \(f(a)\) 與 \(f(b)\) 的正負號相反。接著選擇最大迭代次數與要顯示的有效位數。計算結果會列出近似根 \(x\)、實際執行的迭代次數,以及殘差 \(f(x)\)——理論上這個值應該非常接近 0。

公式說明

每一步的下一個估計值,就是通過兩個包根端點的割線(secant line)與 x 軸的交點:

$$x_n = \frac{ a_n\cdot f(b_n) - b_n\cdot f(a_n) }{ f(b_n) - f(a_n) }$$

若 \(f(x_n)\) 與 \(f(a_n)\) 同號,就以 \(x_n\) 取代 \(a\);反之則取代 \(b\)。如此一來,區間內仍會維持變號——也就確保根始終被包在區間裡。當 \(|f(x_n)|\) 小於容許誤差(約 \(\text{1e-12}\)),或達到迭代上限時,迭代便會停止。

示意圖展示新估計值如何替換某一端點以保持根被夾在區間內
每一步後,將與新點同號的端點替換掉,使根始終被夾在區間內。

實例演算

以 \(f(x) = x - \cos(x)\) 在區間 \([-10, 10]\) 為例:\(f(-10) \approx -10.839\)(負值),\(f(10) \approx 10.839\)(正值),因此這個區間確實包住了一個根。本方法會收斂到 \(x \approx 0.7390851332\),此時 \(f(x) \approx 0\)。這個數值正是廣為人知的餘弦函數不動點(fixed point)。

常見問題

為什麼 \(f(a)\cdot f(b)\) 必須 \(\le 0\)? 變號代表連續函數在區間內必定會穿過零點。若沒有變號,這個方法可能根本沒有根可找,此時工具會顯示警告訊息。

為什麼收斂有時候會很慢? 對於曲率很大的函數,某一個端點可能一直固定不動,導致收斂變成緩慢的線性收斂。這是試位法的正常現象,也是為什麼需要設定迭代次數上限的原因。

如果分母為零怎麼辦? 當 \(f(b)\) 等於 \(f(a)\) 時,割線會變成水平線,沒有唯一的交點;此時計算機會回報錯誤,而不會去做除以零的運算。

最後更新: