dpnp.trapezoid
- dpnp.trapezoid(y, x=None, dx=1.0, axis=-1)[source]
Integrate along the given axis using the composite trapezoidal rule.
If x is provided, the integration happens in sequence along its elements - they are not sorted.
Integrate y (x) along each 1d slice on the given axis, compute \(\int y(x) dx\). When x is specified, this integrates along the parametric curve, computing \(\int_t y(t) dt = \int_t y(t) \left.\frac{dx}{dt}\right|_{x=x(t)} dt\).
For full documentation refer to
numpy.trapezoid
.- Parameters:
y ({dpnp.ndarray, usm_ndarray}) -- Input array to integrate.
x ({dpnp.ndarray, usm_ndarray, None}, optional) -- The sample points corresponding to the y values. If x is
None
, the sample points are assumed to be evenly spaced dx apart. Default:None
.dx (scalar, optional) -- The spacing between sample points when x is
None
. Default:1
.axis (int, optional) -- The axis along which to integrate. Default:
-1
.
- Returns:
out -- Definite integral of y = n-dimensional array as approximated along a single axis by the trapezoidal rule. The result is an n-1 dimensional array.
- Return type:
dpnp.ndarray
See also
dpnp.sum
Sum of array elements over a given axis.
dpnp.cumsum
Cumulative sum of the elements along a given axis.
Examples
>>> import dpnp as np
Use the trapezoidal rule on evenly spaced points:
>>> y = np.array([1, 2, 3]) >>> np.trapezoid(y) array(4.)
The spacing between sample points can be selected by either the x or dx arguments:
>>> y = np.array([1, 2, 3]) >>> x = np.array([4, 6, 8]) >>> np.trapezoid(y, x=x) array(8.) >>> np.trapezoid(y, dx=2) array(8.)
Using a decreasing x corresponds to integrating in reverse:
>>> y = np.array([1, 2, 3]) >>> x = np.array([8, 6, 4]) >>> np.trapezoid(y, x=x) array(-8.)
More generally x is used to integrate along a parametric curve. We can estimate the integral \(\int_0^1 x^2 = 1/3\) using:
>>> x = np.linspace(0, 1, num=50) >>> y = x**2 >>> np.trapezoid(y, x) array(0.33340275)
Or estimate the area of a circle, noting we repeat the sample which closes the curve:
>>> theta = np.linspace(0, 2 * np.pi, num=1000, endpoint=True) >>> np.trapezoid(np.cos(theta), x=np.sin(theta)) array(3.14157194)
dpnp.trapezoid
can be applied along a specified axis to do multiple computations in one call:>>> a = np.arange(6).reshape(2, 3) >>> a array([[0, 1, 2], [3, 4, 5]]) >>> np.trapezoid(a, axis=0) array([1.5, 2.5, 3.5]) >>> np.trapezoid(a, axis=1) array([2., 8.])