function x1 = secant(fcn,x0,x1,tol)
% secant method
% fcn - string (in single quotes) containing name of the function
% x0 = an initial guess
% x1 = another initial guess, doesn't if x0 or x1 is larger
% There must be a root inside the interval [x0 x1]
% tol = tolerance
% Usage: z = secant('x2m4sinx',1,3,eps)
% See example 5.12 on p.232 of Heath
% K. Ming Leung, 03/19/04

dx = 1;                       % change in x
f0 = feval(fcn,x0); 
while abs(dx) > tol;
    f1 = feval(fcn,x1);       % f(x1)
    dx = -f1*(x1-x0)/(f1-f0); % change in x
    x0 = x1;                  % replace x0 by x1
    f0 = f1;                  % replace f0 by f1
    x1 = x1+dx;               % update x1
end;



