# scipy.optimize.fmin_ncg

scipy.optimize.fmin_ncg(f, x0, fprime, fhess_p=None, fhess=None, args=(), avextol=1e-05, epsilon=1.4901161193847656e-08, maxiter=None, full_output=0, disp=1, retall=0, callback=None)

  Unconstrained minimization of a function using the Newton-CG method.

  Parameters:
    f callable `f(x, *args)`

      Objective function to be minimized.

    x0 ndarray

      Initial guess.

    fprime callable `f'(x, *args)`

      Gradient of f.

    fhess_p callable `fhess_p(x, p, *args)`, optional

      Function which computes the Hessian of f times an arbitrary vector, p.

    fhess callable `fhess(x, *args)`, optional

      Function to compute the Hessian matrix of f.

    args tuple, optional

      Extra arguments passed to f, fprime, fhess_p, and fhess (the same set of extra arguments is supplied to all of these functions).

    epsilon float or ndarray, optional

      If fhess is approximated, use this value for the step size.

    callback callable, optional

      An optional user-supplied function which is called after each iteration. Called as callback(xk), where xk is the current parameter vector.

    avextol float, optional

      Convergence is assumed when the average relative error in the minimizer falls below this amount.

    maxiter int, optional

      Maximum number of iterations to perform.

    full_output bool, optional

      If True, return the optional outputs.

    disp bool, optional

      If True, print convergence message.

    retall bool, optional

      If True, return a list of results at each iteration.

  Returns:
    xopt ndarray

      Parameters which minimize f, i.e., `f(xopt) == fopt`.

    fopt float

      Value of the function at xopt, i.e., `fopt = f(xopt)`.

    fcalls int

      Number of function calls made.

    gcalls int

      Number of gradient calls made.

    hcalls int

      Number of Hessian calls made.

    warnflag int

      Warnings generated by the algorithm. 1 : Maximum number of iterations exceeded. 2 : Line search failure (precision loss). 3 : NaN result encountered.

    allvecs list

      The result at each iteration, if retall is True (see below).

  See also

  `minimize`

    Interface to minimization algorithms for multivariate functions. See the ‘Newton-CG’ method in particular.

  Notes

  Only one of fhess_p or fhess need to be given. If fhess is provided, then fhess_p will be ignored. If neither fhess nor fhess_p is provided, then the hessian product will be approximated using finite differences on fprime. fhess_p must compute the hessian times an arbitrary vector. If it is not given, finite-differences on fprime are used to compute it.

  Newton-CG methods are also called truncated Newton methods. This function differs from scipy.optimize.fmin_tnc because

  1. scipy.optimize.fmin_ncg is written purely in Python using NumPy

       and scipy while scipy.optimize.fmin_tnc calls a C function.

  2. scipy.optimize.fmin_ncg is only for unconstrained minimization

       while scipy.optimize.fmin_tnc is for unconstrained minimization or box constrained minimization. (Box constraints give lower and upper bounds for each variable separately.)

  References

  Wright & Nocedal, ‘Numerical Optimization’, 1999, p. 140.