### 20.2 Minimizers

Often it is useful to find the minimum value of a function rather than just the zeroes where it crosses the x-axis. `fminbnd` is designed for the simpler, but very common, case of a univariate function where the interval to search is bounded. For unbounded minimization of a function with potentially many variables use `fminunc`. See Optimization, for minimization with the presence of constraint functions. Note that searches can be made for maxima by simply inverting the objective function (`Fto_max = -Fto_min`).

— Function File: [x, fval, info, output] = fminbnd (fun, a, b, options)

> Find a minimum point of a univariate function. fun should be a function handle or name. a, b specify a starting interval. options is a structure specifying additional options. Currently, `fminbnd` recognizes these options: `"FunValCheck"`, `"OutputFcn"`, `"TolX"`, `"MaxIter"`, `"MaxFunEvals"`. For description of these options, see optimset.

> On exit, the function returns x, the approximate minimum point and fval, the function value thereof. info is an exit flag that can have these values:

> - 1 The algorithm converged to a solution.
> - 0 Maximum number of iterations or function evaluations has been exhausted.
> - -1 The algorithm has been terminated from user output function.

> See also: optimset, fzero, fminunc.

— Function File: fminunc (fcn, x0)
— Function File: fminunc (fcn, x0, options)
— Function File: [x, fvec, info, output, grad, hess] = fminunc (fcn, ...)

> Solve an unconstrained optimization problem defined by the function fcn. fcn should accepts a vector (array) defining the unknown variables, and return the objective function value, optionally with gradient. In other words, this function attempts to determine a vector x such that fcn`(`x`)` is a local minimum. x0 determines a starting guess. The shape of x0 is preserved in all calls to fcn, but otherwise is treated as a column vector. options is a structure specifying additional options. Currently, `fminunc` recognizes these options: `"FunValCheck"`, `"OutputFcn"`, `"TolX"`, `"TolFun"`, `"MaxIter"`, `"MaxFunEvals"`, `"GradObj"`, `"FinDiffType"`, `"TypicalX"`, `"AutoScaling"`.

> If `"GradObj"` is `"on"`, it specifies that fcn, called with 2 output arguments, also returns the Jacobian matrix of right-hand sides at the requested point. `"TolX"` specifies the termination tolerance in the unknown variables, while `"TolFun"` is a tolerance for equations. Default is `1e-7` for both `"TolX"` and `"TolFun"`.

> For description of the other options, see `optimset`.

> On return, fval contains the value of the function fcn evaluated at x, and info may be one of the following values:

> 1
>   Converged to a solution point. Relative gradient error is less than specified by TolFun.
> 2
>   Last relative step size was less that TolX.
> 3
>   Last relative decrease in function value was less than TolF.
> 0
>   Iteration limit exceeded.
> -3
>   The trust region radius became excessively small.

> Optionally, fminunc can also yield a structure with convergence statistics (output), the output gradient (grad) and approximate Hessian (hess).

> Note: If you only have a single nonlinear equation of one variable, using `fminbnd` is usually a much better idea.

> See also: fminbnd, optimset.