Class min_base (o2scl)¶
-
template<class func_t = funct, class dfunc_t = func_t>
class min_base¶ One-dimensional minimization [abstract base].
Subclassed by o2scl::min_bkt_base< funct >, o2scl::min_bkt_base< func_t, dfunc_t >, o2scl::min_de_base< func_t, dfunc_t >
Public Functions
-
inline min_base()¶
-
inline virtual ~min_base()¶
-
inline 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.
Depending on the value of the variable verbose, this prints out the iteration information. If verbose=0, then no information is printed, while if verbose>1, then after each iteration, the present values of x and y are output to std::cout along with the iteration number. If verbose>=2 then each iteration waits for a character.
-
virtual int min(double &x, double &fmin, func_t &func) = 0¶
Calculate the minimum
min
offunc
w.r.t ‘x’.If this is not overloaded, it attempts to bracket the minimum using bracket() and then calls min_bkt() with the newly bracketed minimum.
-
virtual int min_bkt(double &x2, double x1, double x3, double &fmin, func_t &func) = 0¶
Calculate the minimum
min
offunc
with x2 bracketed between x1 and x3.If this is not overloaded, it ignores the bracket and calls min().
-
virtual int min_de(double &x, double &fmin, func_t &func, dfunc_t &df) = 0¶
Calculate the minimum
min
offunc
with derivativedfunc
w.r.t ‘x’.If this is not overloaded, it attempts to bracket the minimum using bracket() and then calls min_bkt_de() with the newly bracketed minimum.
-
inline 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 functionfunc
.Upon success,
fa=func(ax)
,fb=func(bx)
, andfc=func(cx)
withfb<fa
,fb<fc
andax<bx<cx
. The initial values ofcx
,fa
,fb
, andfc
are all ignored.The number of iterations is controlled by bracket_iter.
- Idea for Future:
Improve this algorithm with the golden ratio method in gsl/min/bracketing.c?
Note
This algorithm can fail if there’s a minimum which has a much smaller size than \( bx-ax \), or if the function has the same value at
ax
,bx
, and the midpoint(ax+bx)/2
.
-
inline virtual const char *type()¶
Return string denoting type (“min”)
Public Members
-
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”.
-
inline min_base()¶