Class min_brent_gsl (o2scl)¶
-
template<class
func_t
= funct>
classo2scl
::
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.
-
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.
-
min_brent_gsl
()¶
-
~min_brent_gsl
()¶
-
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.
- 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.
-
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.
-
const char *
type
()¶ Return string denoting type (“min_brent_gsl”)