title: RK4 Python Explanation
body: <p>I'd like to use an implementation of RK4 I found online for something, but I'm having a bit of difficulty wrapping my head around the implementations I have found online.
  For example:</p>
  
  <pre><code>def rk4(f, x0, y0, x1, n):
      vx = [0] * (n + 1)
      vy = [0] * (n + 1)
      h = (x1 - x0) / float(n)
      vx[0] = x = x0
      vy[0] = y = y0
      for i in range(1, n + 1):
          k1 = h * f(x, y)
          k2 = h * f(x + 0.5 * h, y + 0.5 * k1)
          k3 = h * f(x + 0.5 * h, y + 0.5 * k2)
          k4 = h * f(x + h, y + k3)
          vx[i] = x = x0 + i * h
          vy[i] = y = y + (k1 + k2 + k2 + k3 + k3 + k4) / 6
  return vx, vy
  </code></pre>
  
  <p>Could someone please help me understand what exactly the parameters are? If possible, I'd like a more general explanation, but, if being more specific makes it easier to explain, I'm going to be using it specifically for an ideal spring system.</p>