Learn R Programming

pracma (version 1.8.8)

fminbnd: Finding Function Minimum

Description

Find minimum of single-variable function on fixed interval.

Usage

fminbnd(f, a, b, maxiter = 1000, maximum = FALSE,
        tol = 1e-07, rel.tol = tol, abs.tol = 1e-15, ...)

Arguments

f
function whose minimum or maximum is to be found.
a, b
endpoints of the interval to be searched.
maxiter
maximal number of iterations.
maximum
logical; shall maximum or minimum be found; default FALSE.
tol
relative tolerance; left over for compatibility.
rel.tol, abs.tol
relative and absolute tolerance.
...
additional variables to be passed to the function.

Value

  • List with
  • xminlocation of the minimum resp. maximum.
  • fminfunction value at the optimum.
  • niternumber of iterations used.
  • estim.precestimated precision.

Details

fminbnd finds the minimum of a function of one variable within a fixed interval. It applies Brent's algorithm, based on golden section search and parabolic interpolation.

fminbnd may only give local solutions. fminbnd never evaluates f at the endpoints.

References

R. P. Brent (1973). Algorithms for Minimization Without Derivatives. Dover Publications, reprinted 2002.

See Also

fibsearch, golden_ratio

Examples

Run this code
##  CHEBFUN example by Trefethen
f <- function(x) exp(x)*sin(3*x)*tanh(5*cos(30*x))
fminbnd(f, -1, 1)                   # fourth local minimum (from left)
g <- function(x) complexstep(f, x)  # complex-step derivative
xs <- findzeros(g, -1, 1)           # local minima and maxima
ys <- f(xs); n0 <- which.min(ys)    # index of global minimum
fminbnd(f, xs[n0-1], xs[n0+1])      # xmin:0.7036632, fmin: -1.727377

ezplot(f, -1, 1, n = 1000, col = "darkblue", lwd = 2)
ezplot(function(x) g(x)/150, -1, 1, n = 1000, col = "darkred", add = TRUE)
grid()

Run the code above in your browser using DataLab