secant.m

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

M
38
字号

function [x, it, hist]=secant(x0, x1, f, maxit, tol, opt) 

if nargin<6,            opt = 2; 
    if nargin<5,        tol = 1e-4; 
        if nargin<4,    maxit = 100; 
            if nargin<3,error('too few input!!'); 
            end; end; end; end; 
xold = x0; 
x    = x1; 
fold = feval(f,xold); 
fx   = feval(f,x); 
f0   = fold; 
hist = [ x0 x1; fold fx]; 
for it = 1:maxit, 
    if opt==1, 
        xp = x0; 
        fp = f0; 
    elseif opt==2, 
        xp = xold; 
        fp = fold; 
    end 
    xn = x - fx * (x-xp) / (fx-fp) ; 
    fn = feval(f,xn); 
    hist = [hist [xn;fn] ]; 
    if abs(fn)<tol, 
        disp('Secant method successes!!'); 
        return; 
    end 
    if opt==2, 
        xold  = x; 
        fold  = fx; 
    end 
    x  = xn; 
    fx = fn; 
end 
disp('Secant method fails!!'); 
%% end of secant 

⌨️ 快捷键说明

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