function [T,D]=Bisection_method(f,a,b,n)
% 二分法求解方程
% f为方程
% a,b为区间
% n为绝对误差
format long;
k=0;
c=(a+b)/2;
while abs(b-c)&&abs(a-c)>n
if f(c)==0
break
elseif f(c)*f(a)>0
a=c;
else
b=c;
end
c=(a+b)/2;
k=k+1;
d(k)=c;
e(k)=f(c);
end
T=[k,c,f(c)];
D=[1:k;d;e];
plot(d,e,'r*')
hold on
line([0 1],[0 0]);
x=linspace(0,1,1000);
y=x.^3-exp(-x);
plot(x,y)
end
将其存储为Bisection_method.m文件。
命令窗口输入以下命令:
f=@(x)x^3-exp(-x);
a=0;
b=1;
n=0.5*10^(-3);
[T,D]=Bisection_method(f,a,b,n)
结果如下
T =
10.000000000000000 0.772949218750000 0.000149340042114
D =
1.000000000000000 0.750000000000000 -0.050491552741015
2.000000000000000 0.875000000000000 0.253059855321492
3.000000000000000 0.812500000000000 0.092629643043920
4.000000000000000 0.781250000000000 0.019003796431511
5.000000000000000 0.765625000000000 -0.016247869530541
6.000000000000000 0.773437500000000 0.001250424434990
7.000000000000000 0.769531250000000 -0.007530414722720
8.000000000000000 0.771484375000000 -0.003147942264169
9.000000000000000 0.772460937500000 -0.000950748703868
10.000000000000000 0.772949218750000 0.000149340042114
D的第一列为迭代次数,第二列为对应的解的结果,第三列为误差