Next: Minimization Caveats, Up: One dimensional Minimization [Index]

The minimization algorithms begin with a bounded region known to contain
a minimum. The region is described by a lower bound *a* and an
upper bound *b*, with an estimate of the location of the minimum
*x*.

The value of the function at *x* must be less than the value of the
function at the ends of the interval,

f(a) > f(x) < f(b)

This condition guarantees that a minimum is contained somewhere within
the interval. On each iteration a new point *x'* is selected using
one of the available algorithms. If the new point is a better estimate
of the minimum, i.e. where *f(x') < f(x)*, then the current
estimate of the minimum *x* is updated. The new point also allows
the size of the bounded interval to be reduced, by choosing the most
compact set of points which satisfies the constraint *f(a) > f(x) <
f(b)*. The interval is reduced until it encloses the true minimum to a
desired tolerance. This provides a best estimate of the location of the
minimum and a rigorous error estimate.

Several bracketing algorithms are available within a single framework. The user provides a high-level driver for the algorithm, and the library provides the individual functions necessary for each of the steps. There are three main phases of the iteration. The steps are,

- initialize minimizer state,
`s`, for algorithm`T` - update
`s`using the iteration`T` - test
`s`for convergence, and repeat iteration if necessary

The state for the minimizers is held in a `gsl_min_fminimizer`

struct. The updating procedure uses only function evaluations (not
derivatives).

Next: Minimization Caveats, Up: One dimensional Minimization [Index]