All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Data Structures | Public Member Functions | Data Fields | Protected Member Functions | Protected Attributes
o2scl::deriv_base< func_t > Class Template Referenceabstract

Numerical differentiation base [abstract base]. More...

Detailed Description

template<class func_t = funct11>
class o2scl::deriv_base< func_t >

This base class does not perform any actual differentiation. Use one of the children cern_deriv, gsl_deriv, or eqi_deriv instead.

This base class contains some code to automatically apply the first derivative routines to compute second or third derivatives. The error estimates for these will likely be underestimated.

Note
Because this class template aims to automatically provide second and third derivatives, one must overload either both calc() and calc_int() or both calc_err() and calc_err_int().
Idea for Future:
Improve the methods for second and third derivatives

Definition at line 55 of file deriv.h.

#include <deriv.h>

Inheritance diagram for o2scl::deriv_base< func_t >:
o2scl::deriv_cern< func_t > o2scl::deriv_eqi< func_t, vec_t > o2scl::deriv_gsl< func_t >

Data Structures

struct  dpars
 A structure for passing the function to second and third derivatives [protected]. More...
 

Public Member Functions

virtual double deriv (double x, func_t &func)
 Calculate the first derivative of func w.r.t. x. More...
 
virtual double deriv2 (double x, func_t &func)
 Calculate the second derivative of func w.r.t. x.
 
virtual double deriv3 (double x, func_t &func)
 Calculate the third derivative of func w.r.t. x.
 
virtual double get_err ()
 Get uncertainty of last calculation.
 
virtual int deriv_err (double x, func_t &func, double &dfdx, double &err)=0
 Calculate the first derivative of func w.r.t. x and the uncertainty.
 
virtual int deriv2_err (double x, func_t &func, double &d2fdx2, double &err)
 Calculate the second derivative of func w.r.t. x and the uncertainty.
 
virtual int deriv3_err (double x, func_t &func, double &d3fdx3, double &err)
 Calculate the third derivative of func w.r.t. x and the uncertainty.
 
virtual const char * type ()
 Return string denoting type ("deriv")
 

Data Fields

bool err_nonconv
 If true, call the error handler if the routine does not "converge".
 
int verbose
 Output control.
 

Protected Member Functions

virtual double deriv_int (double x, funct11 &func)
 Calculate the first derivative of func w.r.t. x. More...
 
virtual int deriv_err_int (double x, funct11 &func, double &dfdx, double &err)=0
 Calculate the first derivative of func w.r.t. x and the uncertainty. More...
 
double derivfun (double x, func_t *fp)
 The function for the second derivative.
 
double derivfun2 (double x, func_t *fp)
 The function for the third derivative.
 

Protected Attributes

bool from_deriv
 Avoids infinite loops in case the user calls the base class version.
 
double derr
 The uncertainity in the most recent derivative computation.
 

Member Function Documentation

template<class func_t = funct11>
virtual double o2scl::deriv_base< func_t >::deriv ( double  x,
func_t &  func 
)
inlinevirtual

After calling deriv(), the error may be obtained from get_err().

Definition at line 96 of file deriv.h.

template<class func_t = funct11>
virtual int o2scl::deriv_base< func_t >::deriv_err_int ( double  x,
funct11 func,
double &  dfdx,
double &  err 
)
protectedpure virtual

This is an internal version of deriv_err() which is used in computing second and third derivatives

Implemented in o2scl::deriv_eqi< func_t, vec_t >, o2scl::deriv_cern< func_t >, and o2scl::deriv_gsl< func_t >.

template<class func_t = funct11>
virtual double o2scl::deriv_base< func_t >::deriv_int ( double  x,
funct11 func 
)
inlineprotectedvirtual

This is an internal version of deriv() which is used in computing second and third derivatives

Definition at line 200 of file deriv.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).
Hosted at Get Object-oriented Scientific Computing
Lib at SourceForge.net. Fast, secure and Free Open Source software
downloads..