function [x_star,k]=bisect(fun,a,b,ep)
%bisect 二分法求根
% fun(x)求根的函数
%a为求根起始点
%b为求根区间的终点
%ep为容许误差
if nargin < 4
disp('请输入正确参数\n');
return;
end
err=1;
fa=feval(fun,a)
fb=feval(fun,b)
mid=(a+b)/2
fmid=feval(fun,mid)
while (abs(fb-fa)>ep)
if fa*fmid <0
b=mid
elseif fa*fmid ==0
x_star=fmid
return ;
else
a=mid
end
fa=feval(fun,a)
fb=feval(fun,b)
mid=(a+b)/2
fmid=feval(fun,mid)
end
x_star=mid
%bisect 二分法求根
% fun(x)求根的函数
%a为求根起始点
%b为求根区间的终点
%ep为容许误差
if nargin < 4
disp('请输入正确参数\n');
return;
end
err=1;
fa=feval(fun,a)
fb=feval(fun,b)
mid=(a+b)/2
fmid=feval(fun,mid)
while (abs(fb-fa)>ep)
if fa*fmid <0
b=mid
elseif fa*fmid ==0
x_star=fmid
return ;
else
a=mid
end
fa=feval(fun,a)
fb=feval(fun,b)
mid=(a+b)/2
fmid=feval(fun,mid)
end
x_star=mid
end
使用 在运行环境输入 :例如: fun=inline('x^3-x-1'); [x_star,k]=bisect(fun,1,1.5,0.005)