function [X] = RK4 (a, t0, T, N, f)
h = T / N;
p = size(a, 1);
X = zeros(p, N);
t = t0;
X(:, 1) = a;
k = h/6;
l = h/2;
for i=2:N
K0 = f(t, X(:, i-1));
K1 = f(t + l, X(:, i-1) + l * K0);
K2 = f(t + l, X(:, i-1) + l * K1);
K3 = f(t + h, X(:, i-1) + h * K2);
X(:, i) = X(:, i-1) + k * ( K0 + 2 * K1 + 2 * K2 + K3 )
t = t + h;
end
endfunction