numpy.trapezoid#
- numpy.trapezoid(y,x=None,dx=1.0,axis=-1)[source]#
Integrate along the given axis using the composite trapezoidal rule.
Ifx is provided, the integration happens in sequence along itselements - they are not sorted.
Integratey (x) along each 1d slice on the given axis, compute\(\int y(x) dx\).Whenx 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\).
New in version 2.0.0.
- Parameters:
- yarray_like
Input array to integrate.
- xarray_like, optional
The sample points corresponding to they values. Ifx is None,the sample points are assumed to be evenly spaceddx apart. Thedefault is None.
- dxscalar, optional
The spacing between sample points whenx is None. The default is 1.
- axisint, optional
The axis along which to integrate.
- Returns:
- trapezoidfloat or ndarray
Definite integral ofy = n-dimensional array as approximated alonga single axis by the trapezoidal rule. Ify is a 1-dimensional array,then the result is a float. Ifn is greater than 1, then the resultis ann-1 dimensional array.
Notes
Image[2] illustrates trapezoidal rule – y-axis locations of pointswill be taken fromy array, by default x-axis distances betweenpoints will be 1.0, alternatively they can be provided withx arrayor withdx scalar. Return value will be equal to combined area underthe red lines.
References
[1]Wikipedia page:https://en.wikipedia.org/wiki/Trapezoidal_rule
[2]Illustration image:https://en.wikipedia.org/wiki/File:Composite_trapezoidal_rule_illustration.png
Examples
>>>importnumpyasnp
Use the trapezoidal rule on evenly spaced points:
>>>np.trapezoid([1,2,3])4.0
The spacing between sample points can be selected by either the
xordxarguments:>>>np.trapezoid([1,2,3],x=[4,6,8])8.0>>>np.trapezoid([1,2,3],dx=2)8.0
Using a decreasing
xcorresponds to integrating in reverse:>>>np.trapezoid([1,2,3],x=[8,6,4])-8.0
More generally
xis used to integrate along a parametric curve. We canestimate the integral\(\int_0^1 x^2 = 1/3\) using:>>>x=np.linspace(0,1,num=50)>>>y=x**2>>>np.trapezoid(y,x)0.33340274885464394
Or estimate the area of a circle, noting we repeat the sample which closesthe curve:
>>>theta=np.linspace(0,2*np.pi,num=1000,endpoint=True)>>>np.trapezoid(np.cos(theta),x=np.sin(theta))3.141571941375841
np.trapezoidcan be applied along a specified axis to do multiplecomputations in one call:>>>a=np.arange(6).reshape(2,3)>>>aarray([[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.])