二分法 (數學)
演算法
编辑若要求已知函數 f(x) = 0 的根 (x 的解),則:
例子
编辑例: 求方程 的解, 其中 sinh 是雙曲正弦、cos 是餘弦 及 x 以弧度量度.
- 定義 f(x) = 。因此這裏是要求 f(x) = 0 的根。
- 畫出 y = f(x) 可大約得知其根約在 0.5 和 1 之間,故使初始區間的 [0.5, 1]。
- 此區間之中點為 0.75。
- 因 f(0.5) ≈ -0.3565, f(0.75) ≈ 0.0906,其正負號不同,故令新區間為 [0.5, 0.75]
- 又新區間的中點為 0.625, 而 f(0.625) ≈ -0.1445, 與 f(0.5) 正負號相同,故新區間為 [0.625, 0.75]。
- 不斷重複運算即得 f(x) = 0 的根約為 0.7033。
偽代碼
编辑二分法可用伪代码表示如下:
輸入 f(x) 的定義 輸入 a 和 b 為初始區間 輸入 e 為目標誤差
REPEAT:
m:= (a + b) / 2
IF f(m) * f(a) < 0 THEN
b := m
ELSE
a := m
UNTIL (b-a) / 2 < e
参考文献
编辑外部链接
编辑- Bisection Method(页面存档备份,存于互联网档案馆) on Mathcad Application Server.
- Bisection Method Notes, PPT, Mathcad, Maple, Matlab, Mathematica
- True example of using bisection method in computer programming free program to isoelectric point calculation