trapezoidal
Computes the definite integral of a function using the trapezoidal rule.
Controller: CodeCogs
Interface
C++
Excel
Overview
This module computes the area beneath either a user supplied function or a set of discrete points, using an approximation which assumes the function is linear between each two consecutive points. Consider a two times differentiable function , two distinct abscissas and a positive integer . Then the following approximation holds: with an error bound of: This is a quadrature formula known as the trapezoidal rule. From the formula of the error bound you may notice that e.g. if one doubles the number of points , the approximation error is decreased four times. To better understand how this rule works, observe the following picture - the area between abscissas and is approximated by a trapezoid.MISSING IMAGE!
1/Trapezoidal_Rule-378.gif cannot be found in /users/1/Trapezoidal_Rule-378.gif. Please contact the submission author.
References:
- Mihai Postolache - "Metode Numerice", Editura Sirius
- Mathworld, http://mathworld.wolfram.com/TrapezoidalRule.html
Authors
- Lucian Bentea (September 2006)
Trapezoidal
doubletrapezoidal( | int | n | |
double | (*f)(double)[function pointer] | ||
double | a | ||
double | b | ) |
Example 1
- In what follows an approximation is found for the definite integral
and the absolute error from its actual value is estimated.
#include <codecogs/maths/calculus/quadrature/trapezoidal.h> #include <stdio.h> #include <math.h> // number of points #define N 100 // function to integrate double f(double x) { return sin(x); } // the primitive of f, to estimate errors double pf(double x) { return -cos(x); } int main() { // compute the approximate area double fi = Maths::Calculus::Quadrature::trapezoidal(N, f, 1, 3), // use the Leibniz-Newton formula to find a more precise estimate realfi = pf(3) - pf(1); // display problem data printf(" f(x) = sin(x)\n"); printf(" points = %d\n\n", N); // display the result and error estimate printf(" I(1, 3) = %.15lf\n", fi); printf("real value = %.15lf\n", realfi); printf(" error = %.15lf\n\n", fabs(fi - realfi)); return 0; }
Output
f(x) = sin(x) points = 100 I(1, 3) = 1.530243792301766 real value = 1.530294802468585 error = 0.000051010166819
Parameters
n the number of sample points of the function f, from which to approximate f the function to integrate a the inferior limit of integration b the superior limit of integration
Returns
- The definite integral of the given function from a to b.
Source Code
Source code is available when you buy a Commercial licence.
Not a member, then Register with CodeCogs. Already a Member, then Login.
Trapezoidal
doubletrapezoidal( | int | n | |
const double* | values | ||
double | a | ||
double | b | ) |
Example 2
- The code below gives an approximation for the definite integral
and estimates the absolute error from its actual value.
#include <codecogs/maths/calculus/quadrature/trapezoidal.h> #include <stdio.h> #include <math.h> // the primitive of f, to estimate errors double pf(double x) { return 2*sqrt(x*x*x)/3; } int main() { // values of the function at equally spaced abscissas double ordinates[7] = {1, 1.0247, 1.04881, 1.07238, 1.09544, 1.11803, 1.14017}, // compute the approximate area fi = Maths::Calculus::Quadrature::trapezoidal(7, ordinates, 1, 1.3), // use the Leibniz-Newton formula to find a more precise estimate realfi = pf(1.3) - pf(1); // display problem data printf(" f(x) = sqrt(x)\n"); printf(" points = 7\n\n"); // display the result and error estimate printf(" I(1, 1.3) = %.15lf\n", fi); printf("real value = %.15lf\n", realfi); printf(" error = %.15lf\n\n", fabs(fi - realfi)); return 0; }
Output
f(x) = sqrt(x) points = 7 I(1, 1.3) = 0.321472250000000 real value = 0.321485368419253 error = 0.000013118419253
Parameters
n the number of sample points of the function f, from which to approximate values an array with the values of the function at equally spaced abscissas a the inferior limit of integration b the superior limit of integration
Returns
- The definite integral of the given function from a to b.
Source Code
Source code is available when you buy a Commercial licence.
Not a member, then Register with CodeCogs. Already a Member, then Login.