非线性方程的二分法求根算法
function [x,n]=bisection(f,a,b,d)
%二分法求方程的根,可以是代数方程,也可以是超越方程
% f 是所要求解的函数
%a,b 是求解区间
%d 是求解精度
%输出x 是方程的近似根,n 是迭代步数
f=inline('……');
fa=f(a);fb=f(b);
n=1; %迭代次数计数器初始化
if fa*fb>0 %先判断是否为隔根区间
disp('所给区间内没有实数解!');
end
while 1 %进入大循环
c=(a+b)/2;
fc=f(c);
if abs(fc)<d | fc==0
x=c;
break; %直到精度满足条件后,将此时区间终点值赋给x,跳出大循环;否则,继续迭代
else if fa*fc<0
b=c;
fb=fc;
else
a=c;
fa=fc;
end
n=n+1;
end
end