Class min_brent_gsl (o2scl)¶
-
template<class func_t = funct>
class min_brent_gsl : public o2scl::min_bkt_base<funct>¶ One-dimensional minimization using Brent’s method (GSL)
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.
Temporary storage
-
double d¶
-
double e¶
-
double v¶
-
double w¶
-
double f_v¶
-
double f_w¶
-
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.
-
inline 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.
-
inline min_brent_gsl()¶
-
inline virtual ~min_brent_gsl()¶
-
inline int set(func_t &func, double xmin, double lower, double upper)¶
Set the function and the initial bracketing interval.
-
inline 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.
-
inline int iterate()¶
Perform an iteration.
- 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.
-
inline virtual int min_bkt(double &x2, double x1, double x3, double &fmin, func_t &func)¶
Calculate the minimum
fmin
offunc
withx2
bracketed betweenx1
andx3
.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.
-
inline virtual const char *type()¶
Return string denoting type (“min_brent_gsl”)
-
double d¶