title: Gradient Descent in Two Dimensions in Python
body: <p>I'm having trouble understanding gradient descent in two dimensions. Say I have function <code>f(x,y)=x**2-xy</code> where <code>df/dx = 2x-y</code> and <code>df/dy = -x</code>.</p>
  
  <p>So for point df(2,3), the output vector is [1, -2].T. Wherever vector [1,-2] is pointing is in the direction of steepest ascent (aka output of f(x,y)).
   I should <strong>choose a fixed step size, and find the direction that such a step of that size increase f(x,y) the most</strong>. If I want to descend, I want to find the direction that increase -f(x,y) most quickly?</p>
  
  <p>If my intuition is right, how would you code this? Say I'm starting at point (x=0, y=5)and I want to perform a gradient descent to find the minimum value.</p>
  
  <pre><code>step_size = 0.01
  precision = 0.00001 #stopping point
  enter code here??
  </code></pre>