bisect.m

来自「余向阳博士Matlab教程的源代码。 包括:1.非线性方程的解法;2.线性方程」· M 代码 · 共 42 行

M
42
字号
function [c,err,yc]=bisect(f1031,a,b,delta)
%  f是所要求解的函数。
%  a和b分别为有根区间的左右限。
%  delta是允许的误差界。
%  c为所求近似解。
%  yc为函数f在c上的值。
%  err是c的误差估计。
ya=feval('f1031',a);
yb=feval('f1031',b);
if  yb==0
     c=b;
     break,
end

if ya*yb>0
    disp('(a,b)不是有根区间');
    return
end
max1=1+round((log(b-a)-log(delta))/log(2));
for k=1:max1
   c=(a+b)/2;
   yc=feval('f1031',c);
   if yc==0
             a=c;
         b=c;
             return
     elseif yb*yc>0
             b=c;
             yb=yc;
          else
             a=c;
             ya=yc;
          end
          if (b-a)<delta,
              return
          end
end
k;
c=(a+b)/2;
err=abs(b-a);
yc=feval('f1031',c);

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?