二分法 (數學)

二分法（），是一種方程式根的近似值求法，屬於簡化版的調日法。

 演算法 
若要求已知函數 f(x) = 0 的根 (x 的解)，則:

 先找出一個區間 [a, b]，使得f(a)与f(b)异号。根据介值定理，这个区间内一定包含著方程式的根。
 求該區間的中點，並找出 f(m) 的值。
 若 f(m) 與 f(a) 正負號相同則取 [m, b] 為新的區間, 否則取 [a, m].
 重複第2和第3步至理想精確度為止。

例子
例: 求方程  的解, 其中 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

 参见 
 介值定理

Category:求根算法
Category:带有伪代码示例的条目