function [root,n,err]=division(f,a,b,eps)
%求得的根:root
%n为二分次数
%方程表达式:f
%区间左端点:a
%区间右端点:b
%根的精度:eps
if (nargin~=4)
disp('输入变量个数不正确,请重新输入');
end
f1=subs(f,findsym(f),a);%求a的函数值
f2=subs(f,findsym(f),b);%求b的函数值
if f1*f2<0
disp('该区间存在根');
elseif(f1*f2>0)
disp('该区间不是有根区间');
return;
else
disp('该区间一个或两个端点为零点,重新输入新区间');
return;
end
x=(a+b)/2;
n=0;
while(abs(b-a)/2>eps)
f3=subs(f,findsym(f),x);%求中点x的函数值
n=n+1;%二分次数
if f3==0
root=f3;
return;
elseif f1*f3<0
b=x;
else
a=x;
end
x=(a+b)/2;
end
root=(a+b)/2;
err=(b-a)/2;
end