利用二分法解函数方程(MATLAB)
二分法原理简单,再次就不多作解释
代码如下:
function [x,err,yc] = function1(fun,a,b,eps)
% 二分法求解非线性方程
ya = feval(f,a);
yb = feval(f,b);
if ya==0
x=a;
end
if yb==0
x=b;
end
if ya*yb>0
disp('[a,b]不是有根区间')
end
max1=round((log(b-a)-log(eps))/log(2));
for k=1:max1
x=(a+b)/2;
yc=feval(f,x);
if yc==0
a=x;
b=x;
break;
elseif yb*yc>0
b=x;
yb=yc;
else
a=x;
ya=yc;
end
if (b-a)<eps
break;
end
end
k
x=(a+b)/2
err=abs(b-a)
yc=feval(f,x)