bisection.m

来自「用matlab写的一些数值算法」· M 代码 · 共 16 行

M
16
字号
function  [a, b] = bisection(f, a0,b0, tol)
% Bisection to find root of  f.  Start interval [a0,b0] 
% with  f(a0)*f(b0) < 0  (is not checked)
% Repeat until the interval is smaller than tol

% Version 29.05.2004.  INCBOX

a = a0;  b = b0;  sfb = sign(feval(f, b))  % initialize
while  b-a > tol
  x = (a + b)/2;   sfx = sign(feval(f, x));
  disp([a b sfx])
  if  sfx == 0                               % f(x) = 0
    a = x;  b = x;  break       % return with a = b = x
  elseif  sfx == sfb,  b = x;
  else,                a = x; end
end

⌨️ 快捷键说明

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