>>> from scipy.optimize import fmin_ncg
>>> def rosen_hess(x):
x = asarray(x)
H = diag(-400*x[:-1],1) - diag(400*x[:-1],-1)
diagonal = zeros(len(x),x.typecode())
diagonal[0] = 1200*x[0]-400*x[1]+2
diagonal[-1] = 200
diagonal[1:-1] = 202 + 1200*x[1:-1]**2 - 400*x[2:]
H = H + diag(diagonal)
return H
>>> x0 = [1.3, 0.7, 0.8, 1.9, 1.2]
>>> xopt = fmin_ncg(rosen, x0, rosen_der, fhess=rosen_hess)
Optimization terminated successfully.
Current function value: 0.000000
Iterations: 19
Function evaluations: 40
Gradient evaluations: 19
Hessian evaluations: 19
>>> print xopt
[ 0.9999 0.9999 0.9998 0.9996 0.9991]