Documentation

This is machine translation

Translated by
Mouse over text to see original. Click the button below to return to the English verison of the page.

trapz

Trapezoidal numerical integration

Syntax

• Q = trapz(Y)
example
• Q = trapz(X,Y)
example
• Q = trapz(___,dim)
example

Description

example

Q = trapz(Y) returns the approximate integral of Y via the trapezoidal method with unit spacing. The size of Y determines the dimension to integrate along:If Y is a vector, then trapz(Y) is the approximate integral of Y.If Y is a matrix, then trapz(Y) integrates over each column and returns a row vector of integration values.If Y is a multidimensional array, then trapz(Y) integrates over the first dimension whose size does not equal 1. The size of this dimension becomes 1, and the sizes of other dimensions remain unchanged.

example

Q = trapz(X,Y) integrates Y with spacing increment X. By default, trapz operates on the first dimension of Y whose size does not equal 1. length(X) must be equal to the size of this dimension . If X is a scalar, then trapz(X,Y) is equivalent to X*trapz(Y).

example

Q = trapz(___,dim) integrates along the dimension dim using any of the previous syntaxes. You must specify Y, and optionally can specify X. The length of X, if specified, must be the same as size(Y,dim). For example, if Y is a matrix, then trapz(X,Y,2) integrates each row of Y.

Examples

collapse all

Create a numeric vector of data.

Y = [1 4 9 16 25]; 

Y contains function values for in the domain [1,5].

Use trapz to integrate the data points with unit spacing.

Q = trapz(Y) 
Q = 42 

This approximate integration yields a value of 42. In this case, the exact answer is a little less, . The trapz function overestimates the value of the integral because f(x) is concave up.

Create a domain vector, X.

X = 0:pi/100:pi; 

Calculate the sine of X and store the result in Y.

Y = sin(X); 

Integrate the function values contained in Y using trapz.

Q = trapz(X,Y) 
Q = 1.9998 

When the spacing between points is constant, but not equal to 1, you can multiply by the spacing value, in this case pi/100*trapz(Y). The answer is the same if you pass the value directly to the function with trapz(X,Y).

Create a vector of time values, X. Also create a matrix, Y, containing values evaluated at the irregular intervals in X.

X = [1 2.5 7 10]'; Y = [5.2 4.8 4.9 5.1; 7.7 7.0 6.5 6.8; 9.6 10.5 10.5 9.0; 13.2 14.5 13.8 15.2] 
Y = 5.2000 4.8000 4.9000 5.1000 7.7000 7.0000 6.5000 6.8000 9.6000 10.5000 10.5000 9.0000 13.2000 14.5000 13.8000 15.2000 

The columns of Y represent velocity data, taken at the times contained in X, for several different trials.

Use trapz to integrate each column independently and find the total distance traveled in each trial. Since the function values are not evaluated at constant intervals, specify X to indicate the spacing between the data points.

Q = trapz(X,Y) 
Q = 82.8000 85.7250 83.2500 80.7750 

The result is a row vector of integration values, one for each column in Y. By default, trapz integrates along the first dimension of Y whose size does not equal 1.

Alternatively, you can integrate the rows of a matrix by specifying dim = 2.

In this case, use trapz on Y', which contains the velocity data in the rows.

dim = 2; Q1 = trapz(X,Y',dim) 
Q1 = 82.8000 85.7250 83.2500 80.7750 

The result is a column vector of integration values, one for each row in Y'.

Created a grid of domain values.

x = -3:.1:3; y = -5:.1:5; [X,Y] = meshgrid(x,y); 

Calculate the function over the grid.

F = X.^2 + Y.^2; 

trapz integrates numeric data rather than functional expressions, so in general the expression does not need to be known to use trapz on a matrix of data.

Use trapz to approximate the double integral

 

To perform double or triple integrations on an array of numeric data, nest function calls to trapz.

I = trapz(y,trapz(x,F,2)) 
I = 680.2000 

trapz performs the integration over x first, producing a column vector. Then, the integration over y reduces the column vector to a single scalar. trapz slightly overestimates the exact answer of 680 because f(x,y) is concave up.

Input Arguments

collapse all

Numeric data, specified as a vector, matrix, or multidimensional array. By default, trapz integrates along the first dimension of Y whose size does not equal 1.

Data Types: single | double
Complex Number Support: Yes

Point spacing, specified as 1 (default), a uniform scalar spacing, or a vector of nonuniform spacings. If X is a vector, then length(X) must be the same as the size of the integration dimension in Y.

Data Types: single | double
Complex Number Support: Yes

Dimension to operate along, specified as a positive integer scalar. If no value is specified, then the default is the first array dimension whose size does not equal 1.

Consider a two-dimensional input array, Y:

• trapz(Y,1) works on successive elements in the columns of Y and returns a row vector of integration values.

• trapz(Y,2) works on successive elements in the rows of Y and returns a column vector of integration values.

If dim is greater than ndims(Y), then trapz returns an array of zeros of the same size as Y.

collapse all

Trapezoidal Method

trapz performs numerical integration via the trapezoidal method. This method approximates the integration over an interval by breaking the area down into trapezoids with more easily computable areas.

For an integration with N+1 evenly spaced points, the approximation is

$\begin{array}{c}\underset{a}{\overset{b}{\int }}f\left(x\right)dx\text{\hspace{0.17em}}\text{\hspace{0.17em}}\approx \text{\hspace{0.17em}}\text{\hspace{0.17em}}\frac{b-a}{2N}\sum _{n=1}^{N}\left(f\left({x}_{n}\right)+f\left({x}_{n+1}\right)\right)\\ =\frac{b-a}{2N}\left[f\left({x}_{1}\right)+2f\left({x}_{2}\right)+...+2f\left({x}_{N}\right)+f\left({x}_{N+1}\right)\right]\text{\hspace{0.17em}}\text{\hspace{0.17em}},\end{array}$

where the spacing between each point is equal to the scalar value $\frac{b-a}{N}$.

If the spacing between the points is not constant, then the formula generalizes to

$\underset{a}{\overset{b}{\int }}f\left(x\right)dx\text{\hspace{0.17em}}\text{\hspace{0.17em}}\approx \text{\hspace{0.17em}}\text{\hspace{0.17em}}\text{\hspace{0.17em}}\frac{1}{2}\sum _{n=1}^{N}\left({x}_{n+1}-{x}_{n}\right)\left[f\left({x}_{n}\right)+f\left({x}_{n+1}\right)\right]\text{\hspace{0.17em}},$

where $\left({x}_{n+1}-{x}_{n}\right)$ is the spacing between each consecutive pair of points.

Tips

• trapz reduces the size of the dimension it operates on to 1, and returns only the final integration value. cumtrapz also returns the intermediate integration values, preserving the size of the dimension it operates on.