composite_inte Class Template Reference

Naive multi-dimensional integration over a hypercube. More...

#include <composite_inte.h>

Inheritance diagram for composite_inte:

multi_inte

Detailed Description

template<class param_t, class func_t = multi_funct<param_t>, class vec_t = ovector_base, class alloc_vec_t = ovector, class alloc_t = ovector_alloc>
class composite_inte< param_t, func_t, vec_t, alloc_vec_t, alloc_t >

Naive multi-dimensional integration over a hypercube.

Naively combine several one-dimensional integration objects from class inte in order to perform a multi-dimensional integration over a region defined by constant limits. For more general regions of integration, use children of the class gen_inte.

The 1-dimensional integration routines are specified in the function set_oned_inte().

The integration routines are called in order of the index specified in the function set_oned_inte(). For n-dimensional integration, n one-dimensional integration objects should be specified, with indexes 0 through n-1. The integration routines are called in order of their index, so that the outermost integration is done by the routine specified with index 0.

\[ \int_{x_0=a_0}^{x_0=b_0} \int_{x_1=a_1}^{x_1=b_1} ... \int_{x_{\mathrm{n}-1}=a_{\mathrm{n}-1}}^ {x_{\mathrm{n}-1}=b_{\mathrm{n}-1}} f(x_0,x_1,...,x_{\mathrm{n}}) \]

No error estimate is performed. Error estimation for multiple dimension integrals is provided by the Monte Carlo integration classes (see mcarlo_inte).

Idea for future:
Create a function to set an entire array of one-dimensional integration objects at once

Definition at line 70 of file composite_inte.h.


Public Member Functions

int set_oned_inte (inte< size_t > &it, size_t i)
 Set the one-dimensional integration object with index i.
virtual int minteg_err (func_t &func, size_t n, const vec_t &a, const vec_t &b, param_t &pa, double &res, double &err)
 Integrate function func over the hypercube from $ x_i=a_i $ to $ x_i=b_i $ for $ 0<i< $ ndim-1.
virtual const char * type ()
 Return string denoting type ("composite_inte").

Data Fields

size_t max_dim
 The maxiumum number of integration dimensions (default 100).

Protected Member Functions

double odfunc (double x, size_t &ix)
 The one-dimensional integration function.

Protected Attributes

const vec_t * ax
 The user-specified upper limits.
const vec_t * bx
 The user-specified lower limits.
alloc_vec_t * cx
 The independent variable vector.
func_t * mf
 The user-specified function.
size_t ndim
 The user-specified number of dimensions.
param_t * vp
 The user-specified parameter.
alloc_t ao
 Memory allocator for objects of type alloc_vec_t.
funct_mfptr_noerr
< composite_inte< param_t,
func_t, vec_t, alloc_vec_t,
alloc_t >, size_t > * 
fmn
 This function to send to the integrators.
size_t nint
 The size of the integration object arrays.
inte< size_t > ** iptrs
 Pointers to the integration objects.
bool * tptrs
 Flag indicating if integration object has been set.

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