% metodo de Adams (explicito)
function [t,x] = Adams_ant(t0,tf,x0,dxdt,n)

% atribui o valor de n = 100 como padrao
if nargin < 5, n = 10; end

% armazenado as condicoes iniciais
t(1) = t0;
xs   = x0;
x(1)    = x0;

% calculo do passo
h = (tf-t0)/n;

% loop de integracao
% calcula os 3 primeiros pontos por RK
for i = 1:3
     g1 = h*feval(dxdt,t(i),x(i));
     g2 = h*feval(dxdt,t(i)+.5*h,x(i)+.5*g1);
     g3 = h*feval(dxdt,t(i)+.5*h,x(i)+.5*g2);
     g4 = h*feval(dxdt,t(i)+h,x(i)+g3);
     x(i+1) = x(i)+(g1+g4)/6+(g2+g3)/3;
     t(i+1) = t(i)+h;
%     x = vertcat(x,xs);
endfor
% Aplica o metodo de Adams a partir do 4 ponto!
for i = 4:n
     f1 = feval(dxdt,t(i),x(i));
     f2 = feval(dxdt,t(i-1),x(i-1));
     f3 = feval(dxdt,t(i-2),x(i-2));
     f4 = feval(dxdt,t(i-3),x(i-3));
     t(i+1) = t(i)+h;
     %predicao
     x(i+1) = x(i)+h/24*(55*f1-59*f2+37*f3-9*f4);
     %correcao
     f4 = feval(dxdt,t(i+1),x(i+1));
     x(i+1) = x(i)+h/24*(9*f4+19*f1-5*f2+f3);
%     x = vertcat(x,xs);
endfor

end