TrapezoidIntegral< IntegrationPolicy > Class Template Reference

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

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

Inherits Integrator.

Public Member Functions

 TrapezoidIntegral (Real accuracy, Size maxIterations)
 
- 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
 
- 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
 

Detailed Description

template<class IntegrationPolicy>
class QuantLib::TrapezoidIntegral< IntegrationPolicy >

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 trapezoid formula

\[ \int_{a}^{b} f \mathrm{d}x = \frac{1}{2} f(x_{0}) + f(x_{1}) + f(x_{2}) + \dots + f(x_{N-1}) + \frac{1}{2} f(x_{N}) \]

where $ x_0 = a $, $ x_N = b $, and $ x_i = a+i \Delta x $ with $ \Delta x = (b-a)/N $. The number $ N $ of intervals is repeatedly increased until the target accuracy is reached.

Tests:
the correctness of the result is tested by checking it against known good values.