octave: Minimizers

 
 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’ or ‘fminsearch’.  The two
 functions use different internal algorithms and some knowledge of the
 objective function is required.  For functions which can be
 differentiated, ‘fminunc’ is appropriate.  For functions with
 discontinuities, or for which a gradient search would fail, use
 ‘fminsearch’.  SeeOptimization, 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’).
 
  -- : [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 a description
      of these options, see Seeoptimset XREFoptimset.
 
      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.
 
      Notes: The search for a minimum is restricted to be in the interval
      bound by A and B.  If you only have an initial point to begin
      searching from you will need to use an unconstrained minimization
      algorithm such as ‘fminunc’ or ‘fminsearch’.  ‘fminbnd’ internally
      uses a Golden Section search strategy.
 
DONTPRINTYET       See also: Seefzero XREFfzero, Seefminunc XREFfminunc, *noteDONTPRINTYET       See also: Seefzero XREFfzero, Seefminunc XREFfminunc, See
      fminsearch XREFfminsearch, Seeoptimset XREFoptimset.
 
  -- : fminunc (FCN, X0)
  -- : fminunc (FCN, X0, OPTIONS)
  -- : [X, FVAL, INFO, OUTPUT, GRAD, HESS] = fminunc (FCN, ...)
      Solve an unconstrained optimization problem defined by the function
      FCN.
 
      FCN should accept a vector (array) defining the unknown variables,
      and return the objective function value, optionally with gradient.
      ‘fminunc’ 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, when called with two
      output arguments, also returns the Jacobian matrix of partial first
      derivatives at the requested point.  ‘TolX’ specifies the
      termination tolerance for the unknown variables X, while ‘TolFun’
      is a tolerance for the objective function value FVAL.  The default
      is ‘1e-7’ for both options.
 
      For a description of the other options, see ‘optimset’.
 
      On return, X is the location of the minimum and FVAL contains the
      value of the objective function at X.
 
      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 than ‘TolX’.
 
      3
           Last relative change in function value was less than ‘TolFun’.
 
      0
           Iteration limit exceeded—either maximum number of algorithm
           iterations ‘MaxIter’ or maximum number of function evaluations
           ‘MaxFunEvals’.
 
      -1
           Algorithm terminated by ‘OutputFcn’.
 
      -3
           The trust region radius became excessively small.
 
      Optionally, ‘fminunc’ can return a structure with convergence
      statistics (OUTPUT), the output gradient (GRAD) at the solution X,
      and approximate Hessian (HESS) at the solution X.
 
      Application Notes: If the objective function is a single nonlinear
      equation of one variable then using ‘fminbnd’ is usually a better
      choice.
 
      The algorithm used by ‘fminunc’ is a gradient search which depends
      on the objective function being differentiable.  If the function
      has discontinuities it may be better to use a derivative-free
      algorithm such as ‘fminsearch’.
 
DONTPRINTYET       See also: Seefminbnd XREFfminbnd, *notefminsearch:
DONTPRINTYET       See also: Seefminbnd XREFfminbnd, Seefminsearch

      XREFfminsearch, Seeoptimset XREFoptimset.
 
  -- : X = fminsearch (FUN, X0)
  -- : X = fminsearch (FUN, X0, OPTIONS)
  -- : [X, FVAL] = fminsearch (...)
 
      Find a value of X which minimizes the function FUN.
 
      The search begins at the point X0 and iterates using the Nelder &
      Mead Simplex algorithm (a derivative-free method).  This algorithm
      is better-suited to functions which have discontinuities or for
      which a gradient-based search such as ‘fminunc’ fails.
 
      Options for the search are provided in the parameter OPTIONS using
      the function ‘optimset’.  Currently, ‘fminsearch’ accepts the
      options: "TolX", "MaxFunEvals", "MaxIter", "Display".  For a
      description of these options, see ‘optimset’.
 
      On exit, the function returns X, the minimum point, and FVAL, the
      function value thereof.
 
      Example usages:
 
           fminsearch (@(x) (x(1)-5).^2+(x(2)-8).^4, [0;0])
 
           fminsearch (inline ("(x(1)-5).^2+(x(2)-8).^4", "x"), [0;0])
 
      See also: Seefminbnd XREFfminbnd, Seefminunc XREFfminunc,
      Seeoptimset XREFoptimset.