### 1.11 Unconstrained BFGS algorithm ¶

BFGS or limited memory BFGS minimization of a function. No constraits are honoured.

#### Helptext: ¶

    bfgsmin: bfgs or limited memory bfgs minimization of function

    Usage: [x, obj_value, convergence, iters] = bfgsmin(f, args, control)

    The function must be of the form
    [value<, derivative>] = f(arg_1, arg_2,..., arg_n)
    By default, minimization is w.r.t. arg_1, but it can be done
    w.r.t. any argument that is a vector. Numeric derivatives are
    used unless analytic derivatives are supplied. See bfgsmin_example.m
    for methods.

    Arguments:
    * f: name of function to minimize (string)
    * args: a cell array that holds all arguments of the function
    	The argument with respect to which minimization is done
    	MUST be a vector
    * control: an optional cell array of 1-9 elements. If a cell
      array shorter than 9 elements is provided, the trailing elements
      are provided with default values. If elements are set to an empty
      matrix (so that isempty() is true), they are set to the
      corresponding default values.
    	* elem 1: maximum iterations  (positive integer, or -1 or Inf for unlimited (default))
    	* elem 2: verbosity
    		0 = no screen output (default)
    		1 = only final results
    		2 = summary every iteration
    		3 = detailed information
    	* elem 3: convergence criterion
    		1 = strict (function, gradient and param change) (default)
    		0 = weak - only function convergence required
    	* elem 4: arg in f_args with respect to which minimization is done (default is first)
    	* elem 5: (optional) Memory limit for lbfgs. If it's a positive integer
    		then lbfgs will be use. Otherwise ordinary bfgs is used
    	* elem 6: function change tolerance, default 1e-12
    	* elem 7: parameter change tolerance, default 1e-6
    	* elem 8: gradient tolerance, default 1e-5
         * elem 9: a boolean, telling if f() returns a second output
                   with the analytic derivative, default false

    Returns:
    * x: the minimizer
    * obj_value: the value of f() at x
    * convergence: 1 if normal conv, other values if not
    * iters: number of iterations performed

    Example: see bfgsmin_example.m