code: def levenberg_marquardt_update(x, a, c, damping=0.001):
      
      hess = hessian(x, a)
      return x - np.linalg.inv(hess + damping*np.diag(hess)).dot(gradient(x, a, c))
docs: Given a value of x, return a better x 
      using newton-gauss