@staticmethod
def RK4(x_initial, p_initial, timestep, H_p, H_x):
    """Non-symplectic one-dimensional Runge Kutta 4 O(T^5) Algorithm."""
    x_a = timestep * H_p(p_initial)
    p_a = -timestep * H_x(x_initial)
    x_b = timestep * H_p(p_initial + 0.5 * p_a)
    p_b = -timestep * H_x(x_initial + 0.5 * x_a)
    x_c = timestep * H_p(p_initial + 0.5 * p_b)
    p_c = -timestep * H_x(x_initial + 0.5 * x_b)
    x_d = timestep * H_p(p_initial + p_c)
    p_d = -timestep * H_x(x_initial + x_c)
    x_final = x_initial + x_a / 6.0 + x_b / 3.0 + x_c / 3.0 + x_d / 6.0
    p_final = p_initial + p_a / 6.0 + p_b / 3.0 + p_c / 3.0 + p_d / 6.0
    return x_final, p_final
