Numerical Integration Methods
Numerical Integration Methods
Trapezoidal rule
The function f(x) (in blue) is approximated by a linear function (in red).
In numerical analysis, the trapezoidal rule (also known as the trapezoid rule or trapezium rule) is an approximate technique for calculating the definite integral
The trapezoidal rule works by approximating the region under the graph of the function f(x) as a trapezoid and calculating its area. It follows that
Numerical Implementation
Uniform Grid
For a domain discretized into "N" equally spaced panels, or "N+1" grid points (1, 2, ..., N+1), where the grid spacing is "h=(b-a)/N", the approximation to the integral becomes
Non-uniform Grid
When the grid spacing is non-uniform, one can use the formula
Error analysis
The error of the composite trapezoidal rule is the difference between the value of the integral and the numerical result:
It follows that if the integrand is concave up (and thus has a positive second derivative), then the error is negative and the trapezoidal rule overestimates the true value. This can also be seen from the geometric picture: the trapezoids include all of the area under the curve and extend over it. Similarly, a concavedown function yields an underestimate because area is unaccounted for under the curve, but none is counted above. If the interval of the integral being approximated includes an inflection point, then the error is harder to identify. In general, three techniques are used in the analysis of error:[5] 1. Fourier series 2. Residue calculus 3. EulerMaclaurin summation formula:[6][7] An asymptotic error estimate for N is given by
Further terms in this error estimate are given by the EulerMaclaurin summation formula. It is argued that the speed of convergence of the trapezoidal rule reflects and can be used as a definition of classes of smoothness of the functions.[2]
Periodic functions
The trapezoidal rule often converges very quickly for periodic functions.[3] This can be explained intuitively as: "When the function is periodic and one integrates over one full period, there are about as many sections of the graph that are concave up as concave down, so the errors cancel."[5] More detailed analysis can be found in.[2][3]
"Rough" functions
This section requires expansion. For various classes of functions that are not twice-differentiable, the trapezoidal rule has sharper bounds than Simpson's rule.[1]
Sample implementations
Excel
The trapezoidal rule is easily implemented in Excel. As an example, we show the integral of f(x) = x .
2
Python
The (composite) trapezoidal rule can be implemented in Python as follows:
#!/usr/bin/env python def trapezoidal_rule(f, a, b, N):
"""Approximate the definite integral of f from a to b by the composite trapezoidal rule, using N subintervals""" return (b-a) * ( f(a)/2 + f(b)/2 + sum([f(a + (ba)*k/N) for k in xrange(1,N)]) ) / N print trapezoidal_rule(lambda x:x**9, 0.0, 10.0, 100000) # displays 1000000000.75
This method is also built-in to MATLAB under the function name trapz.
C++
In C++, one can implement the trapezoidal rule as follows.
template <class ContainerA, class ContainerB> double trapezoid_integrate(const ContainerA &x, const ContainerB &y) { if (x.size() != y.size()) { throw std::logic_error("x and y must be the same size"); } double sum = 0.0; for (int i = 1; i < x.size(); i++) { sum += (x[i] - x[i-1]) * (y[i] + y[i-1]); } return sum * 0.5; }
Here, x and y can be any object of a class implementing operator[] and size().
respectively. It follows that the leading error term vanishes if we take the weighted average