secant1.m

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

M
43
字号

function [x,it,hist]=secant1(x0,x1,f,maxit,tol,opt) 
%% 
%% Solve f(x)==0 by secant method, 
%% Usage [x,it,hist]=secant(x0,x1,f,maxit,tol,opt) 
%% opt == 1:  1-point secant 
%%        2:  2-point secant 
%% 
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 + -
显示快捷键?