bisect.m

来自「数值分析, 同济大学教材<<现代数值数学和计算>>数值分」· M 代码 · 共 43 行

M
43
字号
function [c, err, yc] = bisect(f, a, b, tol)

if nargin < 4
  delta = 1e-5;
end

if a > b 
  tmp = a;
  a = b;
  b = tmp;
end
ya = feval(f, a);
yb = feval(f, b);
if (ya == 0)
  c = a;
  return;
end
if (yb == 0)
  c = b;
  return;
end
if ya * yb > 0
  disp('Invalid margin.');
  return;
end

while b - a > tol
  c = (a + b) / 2;
  yc = feval(f, c);
  if yc * ya == 0 
    c = h;
    break;
  elseif yc * ya > 0
    a = c;
    ya = yc;
  else
    b = c;
  end
end
err = abs(b - a);
yc = feval(f, c);

⌨️ 快捷键说明

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