Learn R Programming

pracma (version 1.9.3)

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
xmin
location of the minimum resp. maximum.
fmin
function value at the optimum.
niter
number of iterations used.
estim.prec
estimated 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

## Not run: 
# 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()## End(Not run)

Run the code above in your browser using DataLab