title: scipy.optimize.minimize('Newton-CG') doesn't always return lowest objective function it finds
body: <p>Strange behavior in the Newton-CG minimization function with scipy: every time I make a call to the objective function calculation, I print out the value. I find that often, the minimizer finds a lower value than it ends up reporting in the end. Example output is shown below. "Iter" is the iteration number from the minimize function, while "call" is which time the minimizer called a calculation of the objective function "J". "dJ" is how much J changed from the previous call. "f" is an object class that contains all the calculations, including the callback function 'iternum':</p>
  
  <pre><code>res=scipy.optimize.minimize(f.J,f.z,args=(F),tol=1.e-4,method='Newton-CG', \
   jac=f.Jacobian,hessp=f.Hessian, callback=f.iternum)
  
  Iter 1    , call 30    J=3.73e+09 dJ=3.58e+09  
  Iter 1    , call 31    J=1.78e+09 dJ=-1.95e+09 
  Iter 1    , call 32    J=5.23e+08 dJ=-1.26e+09 
  Iter 1    , call 33    J=1.76e+08 dJ=-3.47e+08 
  Iter 1    , call 34    J=1.33e+08 dJ=-4.29e+07 
  Iter 1    , call 35    J=1.44e+08 dJ=1.14e+07  
  Iter 2    , call 36    J=1.42e+08 dJ=-1.85e+06 
  Iter 2    , call 37    J=1.42e+08 dJ=5.19e+04  
  
  res.fun = 1.42e+08
  </code></pre>
  
  <p>However, note that the lowest J value is actually 1.33e+08, so those parameters and that objective function value should have been returned. Anyone else experience this? Ideas?</p>