Multi-dimensional Romberg Integration
Keywords: multi-dimensional romberg integration integrate multi dimensional dimension syntax description include m r f b n p e float floatvector example source code

| Prev | Next |  |  |  |  |  |

Multi-dimensional Romberg Integration
Syntax
`# include <cppad/utility/romberg_mul.hpp>
` `RombergMul<Fun, SizeVector, FloatVector, m> R` `
` `r = R(F, a, b, n, p, e)`
Description
Returns the Romberg integration estimate r for the multi-dimensional integral r = ∫ a [ 0 ] b [ 0 ] ⋯ ∫ a [ m -1 ] b [ m -1 ] F ( x ) d x 0 ⋯ d x m -1 + ∑ i = 0 m -1 O [( b [ i ] - a [ i ] ) / 2 n [ i ] -1 ] 2 ( p [ i ] + 1 )
Include
The file `cppad/romberg_mul.hpp` is included by `cppad/cppad.hpp` but it can also be included separately with out the rest of the `CppAD` routines.
m
The template parameter `m` must be convertible to a `size_t` object with a value that can be determined at compile time; for example `2`. It determines the dimension of the domain space for the integration.
r
The return value `r` has prototype `
Float r
` It is the estimate computed by `RombergMul` for the integral above (see description of Float below).
F
The object `F` has the prototype `
Fun &F
` It must support the operation `
F(x)
` The argument `x` to `F` has prototype `
const Float &x
` The return value of `F` is a `Float` object
a
The argument `a` has prototype `
const FloatVector &a
` It specifies the lower limit for the integration (see description of FloatVector below).
b
The argument `b` has prototype `
const FloatVector &b
` It specifies the upper limit for the integration.
n
The argument `n` has prototype `
const SizeVector &n
` A total number of 2 n [ i ] -1 + 1 evaluations of `F(x)` are used to estimate the integral with respect to d x i .
p
The argument `p` has prototype `
const SizeVector &p
` For i = 0 , … , m -1 , n [ i ] determines the accuracy order in the approximation for the integral that is returned by `RombergMul`. The values in `p` must be less than or equal `n` ; i.e., `p[i] <= n[i]` .
e
The argument `e` has prototype `
Float &e
` The input value of `e` does not matter and its output value is an approximation for the absolute error in the integral estimate.
Float
The type `Float` is defined as the type of the elements of FloatVector . The type `Float` must satisfy the conditions for a NumericType type. The routine CheckNumericType will generate an error message if this is not the case. In addition, if `x` and `y` are `Float` objects, `
x < y
` returns the `bool` value true if `x` is less than `y` and false otherwise.
FloatVector
The type `FloatVector` must be a SimpleVector class. The routine CheckSimpleVector will generate an error message if this is not the case.
Example
The file Rombergmul.cpp contains an example and test a test of using this routine. It returns true if it succeeds and false otherwise.
Source Code
The source code for this routine is in the file `cppad/romberg_mul.hpp`.

Input File: cppad/utility/romberg_mul.hpp