scipy.optimize.brent

scipy.optimize.brent(func, args=(), brack=None, tol=1.48e-08, full_output=0, maxiter=500)[source]

Given a function of one variable and a possible bracket, return the local minimum of the function isolated to a fractional precision of tol.

Parameters
funccallable f(x,*args)

Objective function.

argstuple, optional

Additional arguments (if present).

bracktuple, optional

Either a triple (xa,xb,xc) where xa<xb<xc and func(xb) < func(xa), func(xc) or a pair (xa,xb) which are used as a starting interval for a downhill bracket search (see bracket). Providing the pair (xa,xb) does not always mean the obtained solution will satisfy xa<=x<=xb.

tolfloat, optional

Relative error in solution xopt acceptable for convergence.

full_outputbool, optional

If True, return all output args (xmin, fval, iter, funcalls).

maxiterint, optional

Maximum number of iterations in solution.

Returns
xminndarray

Optimum point.

fvalfloat

Optimum value.

iterint

Number of iterations.

funcallsint

Number of objective function evaluations made.

See also

minimize_scalar

Interface to minimization algorithms for scalar univariate functions. See the ‘Brent’ method in particular.

Notes

Uses inverse parabolic interpolation when possible to speed up convergence of golden section method.

Does not ensure that the minimum lies in the range specified by brack. See fminbound.

Examples

We illustrate the behaviour of the function when brack is of size 2 and 3 respectively. In the case where brack is of the form (xa,xb), we can see for the given values, the output need not necessarily lie in the range (xa,xb).

>>> def f(x):
...     return x**2
>>> from scipy import optimize
>>> minimum = optimize.brent(f,brack=(1,2))
>>> minimum
0.0
>>> minimum = optimize.brent(f,brack=(-1,0.5,2))
>>> minimum
-2.7755575615628914e-17