%==========================================================================
%                            Metodo de Newton
%==========================================================================
%       Variables de Entrada
%---------------------------
%
%       fname   :       funcion f
%       fprima  :       funcion f' (derivada de f)
%       [a , b] :       Intervalo que contiene un unico cero da funcion f
%       epsilon :       Precision de la Aproximacion del cero de la funcion f
%---------------------------
%       Variables de Salida
%-------------------------
%
%       x1    :       Aproximacion del cero de la funcion f en [a , b]
%       fx1   :       Valor de la funcion f en el punto xbarra
%       iter  :       Numero de iteraciones realizadas
%-------------------------------------------------------------------
        
clear

%pto inicial

xo=2; 

%Describir funciones

fname='funcionF';
fprima='derivadaF';


%epsilon es la tolerancia o criterio de parada

epsilon=1.e-5;

% permitimos como maximo una cantidad de iteraciones igual a la variable "maxiter" 

maxiter = 50;
iter = 0;
parada=1;


while parada >=  epsilon

% evaluamos f y su derivada en el punto

    fxo=feval(fname,xo);     
    fpxo=feval(fprima,xo);     

% regla de Newton

    x1=xo-fxo/fpxo

    fx1=feval(fname,x1)    
    iter=iter + 1;
    fprintf(' Iteracion %1.0f \n Aprox de la raiz %1.8f Valor de la funcion %1.8e  \n',iter,x1,fx1);
    
    if fx1==0
        parada=0;
    else
        parada=abs(fx1);%abs(x1-xo);%min(abs(x1-xo),
    end
    xo=x1;
    if iter <= maxiter
    else
        fprintf(' Numero maximo de iteraciones excedido \n');        
        break
    end
end
