code: def runge_kutta4(y, x, dx, f):
      
  
      k1 = dx * f(y, x)
      k2 = dx * f(y + 0.5*k1, x + 0.5*dx)
      k3 = dx * f(y + 0.5*k2, x + 0.5*dx)
      k4 = dx * f(y + k3, x + dx)
  
      return y + (k1 + 2*k2 + 2*k3 + k4) / 6.
docs: computes 4th order Runge-Kutta for dy/dx.
  
      Parameters
      ----------
  
      y : scalar
          Initial/current value for y
      x : scalar
          Initial/current value for x
      dx : scalar
          difference in x (e.g. the time step)
      f : ufunc(y,x)
          Callable function (y, x) that you supply to compute dy/dx for
          the specified values.