Public Member Functions | Public Attributes | Protected Member Functions | Protected Attributes | List of all members
o2scl::min_brent_gsl< func_t > Class Template Reference

One-dimensional minimization using Brent's method (GSL) More...

#include <min_brent_gsl.h>

Inheritance diagram for o2scl::min_brent_gsl< func_t >:
o2scl::min_bkt_base< func_t > o2scl::min_base< func_t, func_t >

Public Member Functions

int set (func_t &func, double xmin, double lower, double upper)
 Set the function and the initial bracketing interval.
 
int set_with_values (func_t &func, double xmin, double fmin, double lower, double fl, double upper, double fu)
 Set the function, the initial bracketing interval, and the corresponding function values.
 
int iterate ()
 Perform an iteration. More...
 
virtual int min_bkt (double &x2, double x1, double x3, double &fmin, func_t &func)
 Calculate the minimum fmin of func with x2 bracketed between x1 and x3. More...
 
virtual const char * type ()
 Return string denoting type ("min_brent_gsl")
 
- Public Member Functions inherited from o2scl::min_bkt_base< func_t >
virtual int min (double &x, double &fmin, func_t &func)
 Calculate the minimum min of func w.r.t 'x'. More...
 
virtual int min_de (double &x, double &fmin, func_t &func, func_t &df)
 Calculate the minimum min of func with derivative dfunc w.r.t 'x'. More...
 
- Public Member Functions inherited from o2scl::min_base< func_t, func_t >
virtual int print_iter (double x, double y, int iter, double value=0.0, double limit=0.0, std::string comment="")
 Print out iteration information. More...
 
virtual int bracket (double &ax, double &bx, double &cx, double &fa, double &fb, double &fc, func_t &func)
 Given interval (ax,bx), attempt to bracket a minimum for function func. More...
 

Public Attributes

double x_minimum
 Location of minimum.
 
double x_lower
 Lower bound.
 
double x_upper
 Upper bound.
 
double f_minimum
 Minimum value.
 
double f_lower
 Value at lower bound.
 
double f_upper
 Value at upper bound.
 
- Public Attributes inherited from o2scl::min_bkt_base< func_t >
int bracket_iter
 The number of iterations for automatically bracketing a minimum (default 20)
 
- Public Attributes inherited from o2scl::min_base< func_t, func_t >
int verbose
 Output control.
 
int ntrial
 Maximum number of iterations.
 
double tol_rel
 The tolerance for the minimum function value.
 
double tol_abs
 The tolerance for the location of the minimum.
 
int last_ntrial
 The number of iterations used in the most recent minimization.
 
int bracket_iter
 The number of iterations for automatically bracketing a minimum (default 20)
 
bool err_nonconv
 If true, call the error handler if the routine does not "converge".
 

Protected Member Functions

int compute_f_values (func_t &func, double xminimum, double *fminimum, double xlower, double *flower, double xupper, double *fupper)
 Compute the function values at the various points.
 

Protected Attributes

func_t * uf
 The function.
 
Temporary storage
double d
 
double e
 
double v
 
double w
 
double f_v
 
double f_w
 

Detailed Description

template<class func_t = funct11>
class o2scl::min_brent_gsl< func_t >

The minimization in the function min_bkt() is complete when the bracketed interval is smaller than $ \mathrm{tol} = \mathrm{tol\_abs} + \mathrm{tol\_rel} \cdot \mathrm{min} $, where $ \mathrm{min} = \mathrm{min}(|\mathrm{lower}|,|\mathrm{upper}|) $.

Note that this algorithm requires that the initial guess already brackets the minimum, i.e. $ x_1 < x_2 < x_3 $, $ f(x_1) > f(x_2) $ and $ f(x_3) > f(x_2) $. This is different from min_cern, where the initial value of the first parameter to min_cern::min_bkt() is ignored.

The set functions throw an error if the initial bracket is not correctly specified. The function iterate() never calls the error handler. The function min_bkt() calls the error handler if the tolerances are negative or if the number of iterations is insufficient to give the specified tolerance.

Setting min_base::err_nonconv to false will force min_bkt() not to call the error handler when the number of iterations is insufficient.

Note that if there are more than 1 local minima in the specified interval, there is no guarantee that this method will find the global minimum.

See also root_brent_gsl for a similar algorithm applied as a solver rather than a minimizer.

Note
There was a bug in this minimizer which was fixed for GSL-1.11 which has also been fixed here.

Definition at line 95 of file min_brent_gsl.h.

Member Function Documentation

◆ iterate()

template<class func_t = funct11>
int o2scl::min_brent_gsl< func_t >::iterate ( )
inline
Idea for Future:
It looks like x_left and x_right can be removed. Also, it would be great to replace the one-letter variable names with something more meaningful.

Definition at line 206 of file min_brent_gsl.h.

◆ min_bkt()

template<class func_t = funct11>
virtual int o2scl::min_brent_gsl< func_t >::min_bkt ( double &  x2,
double  x1,
double  x3,
double &  fmin,
func_t &  func 
)
inlinevirtual

Note that this algorithm requires that the initial guess already brackets the minimum, i.e. $ x_1 < x_2 < x_3 $, $ f(x_1) > f(x_2) $ and $ f(x_3) > f(x_2) $. This is different from min_cern, where the initial value of the first parameter to min_cern::min_bkt() is ignored.

Implements o2scl::min_bkt_base< func_t >.

Definition at line 342 of file min_brent_gsl.h.


The documentation for this class was generated from the following file:

Documentation generated with Doxygen. Provided under the GNU Free Documentation License (see License Information).