% metodo de Runge Kutta de 4 ordem (explicito)
function [t,x] = RK(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    = x0;

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

% loop de integracao
for i = 1:n
     g1 = h*feval(dxdt,t(i),xs);
     g2 = h*feval(dxdt,t(i)+.5*h,xs+.5*g1);
     g3 = h*feval(dxdt,t(i)+.5*h,xs+.5*g2);
     g4 = h*feval(dxdt,t(i)+h,xs+g3);
     xs = xs+(g1+g4)/6+(g2+g3)/3;
     t(i+1) = t(i)+h;
     x = vertcat(x,xs);
endfor

end