Skip to main content
`Ctrl`+`K`
scipy.optimize.

# fminbound

scipy.optimize.fminbound(func, x1, x2, args=(), xtol=1e-05, maxfun=500, full_output=0, disp=1)

  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.

    disp: int, 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)