
function x = regula(x0,x1,f,tol,nmax)
%-----------------------------------------------------------------------
%             -------------                             -------
%             function file                             regula.m
%             -------------                             -------
%-----------------------------------------------------------------------
%                        ----------------------------
%                        Zeros Reais de Funcoes Reais
%                        ----------------------------
%                            --------------------
%                            Metodo de Regula Falsi
%                            --------------------
%
%            Chamada do Procedimento  regula
%-----------------------------------------------------
%       x = regula(x0,x1,f,tol,nmax)
%       Variaveis de Entrada
%---------------------------
%
%       [x0,x1]:       Limites inferior e superior
%       f :            Funçao
%       tol :          Precisao da Aproximacao do zero da funcao(default=1e-6)
%       nmax:          Numero Maximo de Iteraçoes(default=150)
%       Variaveis de Saida
%-------------------------
%
%       x       :       Valor do zero da funcao
%-------------------------------------------------------------------

  xn   = x0;
  xnp1 = x1;
  xnp2 = x1; 

  for k=1:nmax
    fn   = feval(f,xn);
    fnp1 = feval(f,xnp1);

    xnp2 = xnp1-fnp1*(xnp1-xn)/(fnp1-fn);

    if (abs(xnp2-xnp1)<tol)
      disp(' ');
      disp(' Covergiu com Iteraçoes:');
      disp(k);
      break; 
    end;

    xn   = xnp1;
    xnp1 = xnp2;
    if (k==nmax) 
      disp(' ');
      disp('Maximo Numero de Iteraçoes Alcançado!');
    end;
  end;

  x = xnp2;
  disp(' ');
  disp('f(x) = ');
  disp(abs(feval(f,x)));
% Ende der Funktion regula    