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