MATLAB使用二分法求方程近似根的例子例题
二分法原理:
将区域二分,根据零点定理,判断根在某个分段内,再进行二分,依此类推,重复进行,直到满足精度为止。
例题 使用二分法求方程x 3 +x-1=0在[0,1]内的近似根(误差<10 -5 )。
解:
function y= exam2_1(m,n,er)
% 二分迭代程序[m,n]表示迭代初始区间,er表示误差
% y为向量,其分量表示在迭代过程中的各个区间中点
syms x xk
a=m;b=n;k=0;
ff=x^3+x-1;
while b-a>er
xk=(a+b)/2;
fx=subs(ff,x,xk);
fa=subs(ff,x,a);
k=k+1;
if fx==0
y(k)=xk;
break;
elseif fa*fx<0
b=xk;
else
a=xk;
end
y(k)=xk;
end
plot(y,'.-');
grid on
end
在命令窗口下执行:
>> ab=exam2_1(0,1,1e-5);
>> vpa(ab,8)
可以得到迭代区间中点数列ab,数值如下(见图2-1):
ans =
[0.5,0.75,0.625,0.6875,0.65625,0.671875,0.6796875,0.68359375,0.68164062,0.68261719,0.6
图2-1 二分迭代法(区间中点数列)