deriv Class Template Reference

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

#include <deriv.h>

Inheritance diagram for deriv:

cern_deriv eqi_deriv gsl_deriv

Detailed Description

template<class param_t, class func_t>
class deriv< param_t, 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 54 of file deriv.h.


Data Structures

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

Public Member Functions

virtual double calc (double x, param_t &pa, func_t &func)
 Calculate the first derivative of func w.r.t. x.
virtual double calc2 (double x, param_t &pa, func_t &func)
 Calculate the second derivative of func w.r.t. x.
virtual double calc3 (double x, param_t &pa, func_t &func)
 Calculate the third derivative of func w.r.t. x.
virtual double get_err ()
 Get uncertainty of last calculation.
virtual int calc_err (double x, param_t &pa, func_t &func, double &dfdx, double &err)=0
 Calculate the first derivative of func w.r.t. x and the uncertainty.
virtual int calc2_err (double x, param_t &pa, func_t &func, double &d2fdx2, double &err)
 Calculate the second derivative of func w.r.t. x and the uncertainty.
virtual int calc3_err (double x, param_t &pa, 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 calc_int (double x, dpars &pa, o2scl::funct< dpars > &func)
 Calculate the first derivative of func w.r.t. x.
virtual int calc_err_int (double x, dpars &pa, o2scl::funct< dpars > &func, double &dfdx, double &err)=0
 Calculate the first derivative of func w.r.t. x and the uncertainty.
double derivfun (double x, dpars &dp)
 The function for the second derivative.
double derivfun2 (double x, dpars &dp)
 The function for the third derivative.

Protected Attributes

bool from_calc
 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

virtual double calc ( double  x,
param_t &  pa,
func_t &  func 
) [inline, virtual]

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

Definition at line 93 of file deriv.h.

virtual int calc_err_int ( double  x,
dpars pa,
o2scl::funct< dpars > &  func,
double &  dfdx,
double &  err 
) [protected, pure virtual]

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

virtual double calc_int ( double  x,
dpars pa,
o2scl::funct< dpars > &  func 
) [inline, protected, virtual]

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

Definition at line 182 of file deriv.h.


The documentation for this class was generated from the following file:

Documentation generated with Doxygen and provided under the GNU Free Documentation License. See License Information for details.

Project hosting provided by SourceForge.net Logo, O2scl Sourceforge Project Page