No BSD License  

Highlights from
Iterative Methods for Linear and Nonlinear Equations

image thumbnail
dirder(x,w,f,f0)
function z = dirder(x,w,f,f0)
% Finite difference directional derivative
% Approximate f'(x) w
% 
% C. T. Kelley, November 25, 1993
%
% This code comes with no guarantee or warranty of any kind.
%
% function z = dirder(x,w,f,f0)
%
% inputs:
%           x, w = point and direction
%           f = function
%           f0 = f(x), in nonlinear iterations
%                f(x) has usually been computed
%                before the call to dirder

%
% Hardwired difference increment.
epsnew=1.d-7;
%
n=length(x);
%
% scale the step
%
if norm(w) == 0
    z=zeros(n,1);
return
end
epsnew = epsnew/norm(w);
if norm(x) > 0
    epsnew=epsnew*norm(x);
end
%
% del and f1 could share the same space if storage
% is more important than clarity
%
del=x+epsnew*w;
f1=feval(f,del);
z = (f1 - f0)/epsnew;

Contact us at files@mathworks.com