Public Member Functions | Public Attributes | List of all members
o2scl::min_base< func_t, dfunc_t > Class Template Referenceabstract

One-dimensional minimization [abstract base]. More...

#include <min.h>

Inheritance diagram for o2scl::min_base< func_t, dfunc_t >:
o2scl::min_bkt_base< func_t, dfunc_t > o2scl::min_de_base< func_t, dfunc_t >

Public Member Functions

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 min (double &x, double &fmin, func_t &func)=0
 Calculate the minimum min of func w.r.t 'x'. More...
 
virtual int min_bkt (double &x2, double x1, double x3, double &fmin, func_t &func)=0
 Calculate the minimum min of func with x2 bracketed between x1 and x3. More...
 
virtual int min_de (double &x, double &fmin, func_t &func, dfunc_t &df)=0
 Calculate the minimum min of func with derivative dfunc w.r.t 'x'. 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...
 
virtual const char * type ()
 Return string denoting type ("min")
 

Public Attributes

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".
 

Detailed Description

template<class func_t = funct11, class dfunc_t = func_t>
class o2scl::min_base< func_t, dfunc_t >

Definition at line 42 of file min.h.

Member Function Documentation

◆ bracket()

template<class func_t = funct11, class dfunc_t = func_t>
virtual int o2scl::min_base< func_t, dfunc_t >::bracket ( double &  ax,
double &  bx,
double &  cx,
double &  fa,
double &  fb,
double &  fc,
func_t &  func 
)
inlinevirtual

Upon success, fa=func(ax), fb=func(bx), and fc=func(cx) with fb<fa, fb<fc and ax<bx<cx. The initial values of cx, fa, fb, and fc are all ignored.

The number of iterations is controlled by bracket_iter.

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.
Idea for Future:
Improve this algorithm with the golden ratio method in gsl/min/bracketing.c?

Definition at line 157 of file min.h.

◆ min()

template<class func_t = funct11, class dfunc_t = func_t>
virtual int o2scl::min_base< func_t, dfunc_t >::min ( double &  x,
double &  fmin,
func_t &  func 
)
pure virtual

If this is not overloaded, it attempts to bracket the minimum using bracket() and then calls min_bkt() with the newly bracketed minimum.

Implemented in o2scl::min_de_base< func_t, dfunc_t >, o2scl::min_bkt_base< func_t, dfunc_t >, and o2scl::min_bkt_base< func_t >.

◆ min_bkt()

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

◆ min_de()

template<class func_t = funct11, class dfunc_t = func_t>
virtual int o2scl::min_base< func_t, dfunc_t >::min_de ( double &  x,
double &  fmin,
func_t &  func,
dfunc_t &  df 
)
pure virtual

If this is not overloaded, it attempts to bracket the minimum using bracket() and then calls min_bkt_de() with the newly bracketed minimum.

Implemented in o2scl::min_de_base< func_t, dfunc_t >, o2scl::min_bkt_base< func_t, dfunc_t >, and o2scl::min_bkt_base< func_t >.

◆ print_iter()

template<class func_t = funct11, class dfunc_t = func_t>
virtual int o2scl::min_base< func_t, dfunc_t >::print_iter ( double  x,
double  y,
int  iter,
double  value = 0.0,
double  limit = 0.0,
std::string  comment = "" 
)
inlinevirtual

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.

Definition at line 90 of file min.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).