二分法基本思想:
用对分区间的方法,通过判别函数f(x)在每个对分区间中点的符号,逐步将隔根区间缩小,最终求得一个具有相当精确程度的近似根。
二分法具体步骤:
令:
(1)若,则
为方程的根,跳出循环;
(2)若,令
;
(3)若,令
;
(4)为新的隔根区间,重复上述过程。
输入左右端点a,b以及精度eps,输出近似根x0及二分次数i。
function [x0,i] = dichotomy(a,b,eps)
a0 = a;
b0 = b;
x0 = (a0+b0)/2;
for i = 1:1000
if abs((b-a)/(2^(i))) > eps
if f(a0)*f(x0) < 0
b0 = x0;
x0 = (a0+b0)/2;
elseif f(a0)*f(x0) > 0
a0 = x0;
x0 = (a0+b0)/2;
elseif f(a0)*f(x0) == 0
break
end
else
break
end
end
[x0,i]
算例如下:
function y = f(x)
y = x^2-15;
% 函数仅为算例
输入命令dichotomy(-100,100,0.1),得到 -3.7109 9.0000,即精度为0.1的近似根为-3.7109,二分次数为9。进一步提高精度:
dichotomy(-4,-3,10^(-10))
得到-3.8730 32.0000,即此精度下近似根为-3.8730,二分次数为32。
误差估计:
注意二分法步骤中,第一次对分后取了对分后区间中点作为近似根,那么相当于把误差控制在整个区间的四分之一。
对分次数 | 对分后得到近似根 | 误差限 |
1 | ||
2 | ||
n |
二分法优缺点:
优点:计算简单,方法可靠,容易估计误差;
缺点:收敛较慢,不能求偶重根,也不能求复根。