  function [tnew,Fnew] = FDNStep(FName,tc,Fc,plist,delta)
%
% Pre:
%     FName     the name of a function F(t,plist) that accepts  a column
%               n-vector and returns a column n-vector
%        tc     a column n-vector, an approximate zero.         
%        Fc     F(tc,plist)
%     plist     parameter list
%     delta     n-vector of finite difference parameters:
%
%               Jc(:,k) = [F(tc+delta(k)I(:,k)) - f(tc)]/delta(k)
% 
%               If nargin == 4, then delta = sqrt(eps)ones(n,1)
%
%
% Post:
%      tnew     a column n-vector, an improved approximate obtained
%               by a single finite difference Newton iteration.
%      Fnew     F(tnew,plist) 
%
   FName
   n = length(tc);
   if nargin==4
      delta = sqrt(eps)*ones(n,1);
   end
   
   % Set up the FD Jacobian.
   
   Jc = zeros(n,n);
   for k=1:n;
	  tk = tc;
	  tk(k) = tc(k) + delta(k);
	  Jc(:,k) = (feval(FName,tk,plist) - Fc)/delta(k);
   end
   
   % The Newton Step.
   
   sc = -(Jc\Fc);
   tnew = tc + sc;
   Fnew = feval(FName,tnew,plist);

