#### Previous topic

scipy.optimize.check_grad

#### Next topic

scipy.optimize.show_options

# scipy.optimize.line_search

`scipy.optimize.``line_search`(f, myfprime, xk, pk, gfk=None, old_fval=None, old_old_fval=None, args=(), c1=0.0001, c2=0.9, amax=50)

  Find alpha that satisfies strong Wolfe conditions.

  Parameters:

  f : callable f(x,*args)

  > Objective function.

  myfprime : callable f’(x,*args)

  > Objective function gradient.

  xk : ndarray

  > Starting point.

  pk : ndarray

  > Search direction.

  gfk : ndarray, optional

  > Gradient value for x=xk (xk being the current parameter estimate). Will be recomputed if omitted.

  old_fval : float, optional

  > Function value for x=xk. Will be recomputed if omitted.

  old_old_fval : float, optional

  > Function value for the point preceding x=xk

  args : tuple, optional

  > Additional arguments passed to objective function.

  c1 : float, optional

  > Parameter for Armijo condition rule.

  c2 : float, optional

  > Parameter for curvature condition rule.

  amax : float, optional

  > Maximum step size

  Returns:

  alpha : float or None

  > Alpha for which `x_new = x0 + alpha * pk`, or None if the line search algorithm did not converge.

  fc : int

  > Number of function evaluations made.

  gc : int

  > Number of gradient evaluations made.

  new_fval : float or None

  > New function value `f(x_new)=f(x0+alpha*pk)`, or None if the line search algorithm did not converge.

  old_fval : float

  > Old function value `f(x0)`.

  new_slope : float or None

  > The local slope along the search direction at the new value `<myfprime(x_new), pk>`, or None if the line search algorithm did not converge.

  Notes

  Uses the line search algorithm to enforce strong Wolfe conditions. See Wright and Nocedal, ‘Numerical Optimization’, 1999, pg. 59-60.

  For the zoom phase it uses an algorithm by [...].