function [x, y] = RK4(x0, y0, h, N, f)
    D = length(y0);
    
    x = zeros(N+1, 1);
    y = zeros(N+1, D);
    
    x(1) = x0;
    y(1,:) = y0;
    
    for k = 1:N
       
        k1 = f(x(k),       y(k,:));
        k2 = f(x(k) + h/2, y(k,:) + k1*h/2);
        k3 = f(x(k) + h/2, y(k,:) + k2*h/2);
        k4 = f(x(k) + h,   y(k,:) + k3*h);
        
        x(k+1) = x(k) + h;
        y(k+1,:) = y(k,:) + (k1 + 2*k2 + 2*k3 + k4)*h/6;        
    end;
end
