Topic 10.4: Secant Method (Matlab)

Contents Previous Chapter Start of Chapter Previous Topic Introduction Notes Theory HOWTO Examples Engineering Error Questions Matlab Maple Next Topic Next Chapter

Finding a root of f(x) = cos(x):

eps_step = 1e-5;
eps_abs = 1e-5;
N = 100;
xp = 1.0;
xc = 1.1;

for i=1:N
    xn = (xc*cos(xp) - xp*cos(xc))/(cos(xp) - cos(xc));

    if abs( xc - xn ) < eps_step && abs( cos( xn ) ) < eps_abs
       break;
    elseif i == N
       error( 'the secant method did not converge' );
    end

    xp = xc;
    xc = xn;
end

xn
        

Of course, you can always cheat and use the built-in functions:

for i=1:N
    px = polyfit( [xp, xc], cos([xp, xc]), 1 );
    xn = roots( px );   % there can only be one...

    ...
end

Copyright ©2005 by Douglas Wilhelm Harder. All rights reserved.