%-----------------------------------------------------------------------
%             -------------                             --------
%             function file                             newtond.m
%             -------------                             --------
%-----------------------------------------------------------------------
%                        ----------------------------
%		         Zeros Reais de Funcoes Reais
%                        ----------------------------
%                          -------------------------
%  		           Metodo de Newton Discreto
%			   -------------------------
%
%            Chamada do Procedimento  newton
%-------------------------------------------
%            [xbarra,fxbarra,errox,iter] = newtond(fname,xo,epsilon)
%
%
%	Variaveis de Entrada
%---------------------------
%
%	  fname  :	Nome da Function que contem a funcao
%	     xo  :	Aproximacao inicial para um zero da funcao
%	epsilon	 :	Precisao da Aproximacao do Zero da funcao
%
%	Variaveis de Saida
%-------------------------
%
%	xbarra	:	Aproximacao do zero da funcao
%	fxbarra :	Valor da funcao no ponto xbarra
%	errox 	:	Erro da Aproximacao do zero da funcao
%	iter	:	Numero de Iteracoes do Metodo de Newton
%-------------------------------------------------------------------
%
	function  [xbarra,fxbarra,errox,iter] = newtond(fname,xo,epsilon)
%=======================================================================
%
%
%
%	-------------------------
%	Metodo de Newton Discreto
%--------------------------------
%
%
if nargin<3
    epsilon=1e-6;
end
       	 iter =  0;
        limax =  50;
	 erro =  1.0;
        delta =  1.0e-3;
	 xold =  xo;
%	
%
	while ( (erro  >  epsilon)  &  (iter < limax) )
%
	 fxold = feval(fname,xold);
%
%       Aproximacao da Derivada Pela Formula de Diferencas
%---------------------------------------------------------
	dfxold = ( feval(fname,(xold+delta)) - fxold )/delta;
%
%
%	Nova Aproximacao de Newton
%---------------------------------
	 xbarra  =  xold - ( fxold / dfxold );
        fxbarra  =  feval(fname,xbarra);
%
%
	 iter = iter + 1;
	errox = abs(xbarra - xold);
         erro = max(errox,abs(fxbarra));
	 xold = xbarra;
%
	end
%
%
%-----------------------------------------------------------------------
%-----------------------------------------------------------------------
%-----------------------------------------------------------------------
%
%	Petronio Pulino
%	Departamento de Matemática Aplicada - D.M.A
%	IMECC - UNICAMP
%	e-mail: pulino@ime.unicamp.br
%	http://www.ime.unicamp.br/~pulino/MS211
%
%-----------------------------------------------------------------------
