>  Docs Center  >  Libraries  >  Beaumont  >  BRACKET
Libraries

BRACKET

BRACKET

Purpose


  This procedure attempts to bracket the minimum of a one dimensional
  function. A minimum is bracketed by three points ax, bx, cx, if:
    1) bx is between ax and cx
    2) f(b) < f(a) and f(b) < f(c)
  In this situation, provided the function is continuous, there is
  guaranteed to be a local minimum in between a and c.
  The procedure is fairly robust in finding _some_ minimum, provided
  one exists. However, there is no guarantee that it will find the
  minimum closest to the starting location.
  The algorithm is lifted from Numerical Recipes, with some attempt
  to make the base cases a bit clearer

Category


  Numerical Recipes

Calling Sequence


  bracket, func, a, b, ax, bx, cx, fa, fb, fc, /verbose, _extra =
  extra, struct = struct

Inputs


  func: A string giving the name of the 1D function to bracket. The
        function must have the following calling sequence:
          function func, x, _extra = extra
        it may declare extra keywords, which can be supplied to
        bracket and passed along to the function
  a: The first trial abscissa
  b: The second trial abscissa. The search for the minimum starts at
    a and b, and proceeds downhill. Note that (a-b) should be
    scaled, if possible, to match the scale of the wiggles in the
    function. This will help in finding the nearest minimum

Optional Outputs


  ax: Named variable to hold the first abscissa of the bracket
  bx: Named variable to hold the second abscissa of the bracket
  cx: Named variable to hold the final abscissa of the bracket
  fa: Named variable to hold f(ax)
  fb: Named variable to hold f(bx)
  fc: Named variable to hold f(cx)

Keyword Parameters


  _extra: Any extra keywords will be passed to FUNC
  verbose: Set to an integer to control the amount of textual output
  to produce (see VERBIAGE procedure for details)
  struct: Set to a variable to receive the result in a structure.

Procedure


  The procedure is adapted from Numerical Recipes, 3rd ed., page
  491. It always keeps track of three x values (abc). It repeatedly
  steps downhill. At each iteration, it approximates the 3 most
  recent points as a parabola, and extrapolates to the parabola's min
  (if it exists). If parabolic extrapolation doesn't work (because
  the points are nearly co-linear or concave down), it just takes a
  moderately larger step than last time. It stops when the function
  starts increasing again.

Modification History


  June 2009: Written by Chris Beaumont
  August 2010: Added struct keyword. cnb.



© 2024 NV5 Geospatial Solutions, Inc. |  Legal
My Account    |    Contact Us