function df=jacnum(f,x,fx)
%
% function df=jacnum(f,x,fx)
%
%     Copyright: Eduardo Casas (Octubre, 2000)
%
% Funcion Matlab que utiliza una formula de derivacion
% numerica para aproximar la diferencial de la funcion
% f en el punto x.
%
% Significacion de las variables de entrada:
%
% f     Nombre de la funcion Matlab a derivar
%
% x     Punto en el que se calcula la diferencial
%
% fx    Valor de f en x. Este valor puede omitirse.
%
% Significacion de las variables de salida:
%
% df    Aproximacion de la diferencial
%
if nargin == 2
   fx=feval(f,x);
end
n=length(x);
df=[];
ss=sqrt(eps/2);
for i=1:n
   s=sign(x(i));
   if s == 0
      h=ss;
   else
      h=ss*max([abs(x(i)),1])*s;   
   end      
   temp=x(i)+h;
   h=temp-x(i);
   s=x(i);
   x(i)=temp;
   df=[df,(feval(f,x)-fx)/h];
   x(i)=s;
end