Object-oriented Scientific Computing Library: Version 0.910
Public Member Functions | Data Fields | Protected Member Functions | Protected Attributes
cern_minimize< func_t > Class Template Reference

One-dimensional minimization (CERNLIB) More...

#include <cern_minimize.h>

Inheritance diagram for cern_minimize< func_t >:
minimize_bkt< func_t, dfunc_t > minimize< func_t, dfunc_t >

Detailed Description

template<class func_t = funct>
class cern_minimize< func_t >

The golden section search is applied in the interval $ (a,b) $ using a fixed number $ n $ of function evaluations where

\[ n=\left[ 2.08 \ln(|a-b|/\mathrm{tol\_abs})+\frac{1}{2}\right]+1 \]

The accuracy depends on the function. A choice of $ \mathrm{tol\_abs}>10^{-8} $ usually results in a relative error of $x$ which is smaller than or of the order of $ \mathrm{tol\_abs} $ .

This routine strictly searches the interval $ (a,b) $ . If the function is nowhere flat in this interval, then min_bkt() will return either $ a $ or $ b $ and min_type is set to 1. 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.

Note:
The number of function evaluations can be quite large if multi_min::tol_abs is sufficiently small. If multi_min::tol_abs is exactly zero, then the error handler will be called.

Based on the CERNLIB routines RMINFC and DMINFC, which was based on Fletcher87, and Krabs83 and is documented at http://wwwasdoc.web.cern.ch/wwwasdoc/shortwrupsdir/d503/top.html

Definition at line 69 of file cern_minimize.h.

Public Member Functions

virtual int min_bkt (double &x, double a, double b, double &y, func_t &func)
 Calculate the minimum min of func between a and b.
int set_delta (double d)
 Set the value of $ \delta $.
virtual const char * type ()
 Return string denoting type ("cern_minimize")

Data Fields

int min_type
 Type of minimum found.

Protected Member Functions

int nint (double x)
 C analog of Fortran's "Nearest integer" function.

Protected Attributes

double delta
 The value of delta as specified by the user.
bool delta_set
 True if the value of delta has been set.

Member Function Documentation

template<class func_t = funct>
virtual int cern_minimize< func_t >::min_bkt ( double &  x,
double  a,
double  b,
double &  y,
func_t &  func 
) [inline, virtual]

The initial value of x is ignored.

If there is no minimum in the given interval, then on exit x will be equal to either a or b and min_type will be set to 1 instead of zero. The error handler is not called, as this need not be interpreted as an error.

Implements minimize_bkt< func_t, dfunc_t >.

Definition at line 106 of file cern_minimize.h.

template<class func_t = funct>
int cern_minimize< func_t >::set_delta ( double  d) [inline]

If this is not called before min_bkt() is used, then the suggested value $ \delta=10 \mathrm{tol_abs} $ is used.

Definition at line 183 of file cern_minimize.h.


The documentation for this class was generated from the following file:
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines

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

Get Object-oriented Scientific Computing
Lib at SourceForge.net. Fast, secure and Free Open Source software
downloads.