scipy.optimize.fminbound#
- scipy.optimize.fminbound(func, x1, x2, args=(), xtol=1e-05, maxfun=500, full_output=0, disp=1)[source]#
Bounded minimization for scalar functions.
- Parameters:
- funccallable f(x,*args)
Objective function to be minimized (must accept and return scalars).
- x1, x2float or array scalar
Finite optimization bounds.
- argstuple, optional
Extra arguments passed to function.
- xtolfloat, optional
The convergence tolerance.
- maxfunint, optional
Maximum number of function evaluations allowed.
- full_outputbool, optional
If True, return optional outputs.
- dispint, optional
- If non-zero, print messages.
0 : no message printing. 1 : non-convergence notification messages only. 2 : print a message on convergence too. 3 : print iteration results.
- Returns:
- xoptndarray
Parameters (over given interval) which minimize the objective function.
- fvalnumber
(Optional output) The function value evaluated at the minimizer.
- ierrint
(Optional output) An error flag (0 if converged, 1 if maximum number of function calls reached).
- numfuncint
(Optional output) The number of function calls made.
See also
minimize_scalar
Interface to minimization algorithms for scalar univariate functions. See the ‘Bounded’ method in particular.
Notes
Finds a local minimizer of the scalar function func in the interval x1 < xopt < x2 using Brent’s method. (See
brent
for auto-bracketing.)References
[1]Forsythe, G.E., M. A. Malcolm, and C. B. Moler. “Computer Methods for Mathematical Computations.” Prentice-Hall Series in Automatic Computation 259 (1977).
[2]Brent, Richard P. Algorithms for Minimization Without Derivatives. Courier Corporation, 2013.
Examples
fminbound
finds the minimizer of the function in the given range. The following examples illustrate this.>>> from scipy import optimize >>> def f(x): ... return (x-1)**2 >>> minimizer = optimize.fminbound(f, -4, 4) >>> minimizer 1.0 >>> minimum = f(minimizer) >>> minimum 0.0 >>> res = optimize.fminbound(f, 3, 4, full_output=True) >>> minimizer, fval, ierr, numfunc = res >>> minimizer 3.000005960860986 >>> minimum = f(minimizer) >>> minimum, fval (4.000023843479476, 4.000023843479476)