function [x, t] = Metodo_RK4(func, x0, h, Tinter)
%
% ENTRADA:
% func   - función que calcula las derivadas
% x0     - vector de la condición inicial
% h      - paso
% Tinter - intervalo de tiempo
%
% SALIDA:
% t      - tiempo (vector)
% x      - solución (matriz nPasos x nVariables)
%

t = Tinter(1):h:Tinter(2); % instantes de tiempo
Npasos = length(t);        % número de pasos
Nvar = length(x0);         % número de variables
x = zeros(Npasos, Nvar);   % reservamos memoria para la solución
x(1,:) = x0(:)';           % condiciones iniciales (en forma de una fila)

for k = 1:Npasos-1,
    F1 = h*func(t(k), x(k,:));
    F2 = h*func(t(k) + 0.5*h, x(k,:) + 0.5*F1);
    F3 = h*func(t(k) + 0.5*h, x(k,:) + 0.5*F2);
    F4 = h*func(t(k) + h, x(k,:) + F3);
    x(k + 1,:) = x(k,:) + (F1 + 2*(F2 + F3) + F4)/6;
end