GaussLobattoIntegral Class Reference

Integral of a one-dimensional function. More...

#include <ql/math/integrals/gausslobattointegral.hpp>

Inherits Integrator.

Public Member Functions

 GaussLobattoIntegral (Size maxIterations, Real absAccuracy, Real relAccuracy=Null< Real >(), bool useConvergenceEstimate=true)
 
- Public Member Functions inherited from Integrator
 Integrator (Real absoluteAccuracy, Size maxEvaluations)
 
Real operator() (const boost::function< Real(Real)> &f, Real a, Real b) const
 
Real absoluteError () const
 
Size numberOfEvaluations () const
 
virtual bool integrationSuccess () const
 
void setAbsoluteAccuracy (Real)
 
void setMaxEvaluations (Size)
 
Real absoluteAccuracy () const
 
Size maxEvaluations () const
 

Protected Member Functions

Real integrate (const boost::function< Real(Real)> &f, Real a, Real b) const
 
Real adaptivGaussLobattoStep (const boost::function< Real(Real)> &f, Real a, Real b, Real fa, Real fb, Real is) const
 
Real calculateAbsTolerance (const boost::function< Real(Real)> &f, Real a, Real b) const
 
- Protected Member Functions inherited from Integrator
virtual Real integrate (const boost::function< Real(Real)> &f, Real a, Real b) const =0
 
void setAbsoluteError (Real error) const
 
void setNumberOfEvaluations (Size evaluations) const
 
void increaseNumberOfEvaluations (Size increase) const
 

Protected Attributes

Real relAccuracy_
 
const bool useConvergenceEstimate_
 

Static Protected Attributes

static const Real alpha_
 
static const Real beta_
 
static const Real x1_
 
static const Real x2_
 
static const Real x3_
 

Detailed Description

Integral of a one-dimensional function.

Given a target accuracy $ \epsilon $, the integral of a function $ f $ between $ a $ and $ b $ is calculated by means of the Gauss-Lobatto formula

References: This algorithm is a C++ implementation of the algorithm outlined in

W. Gander and W. Gautschi, Adaptive Quadrature - Revisited. BIT, 40(1):84-101, March 2000. CS technical report: ftp.inf.ethz.ch/pub/publications/tech-reports/3xx/306.ps.gz

The original MATLAB version can be downloaded here http://www.inf.ethz.ch/personal/gander/adaptlob.m