scipy.integrate.

梯形積分#

scipy.integrate.trapezoid(y, x=None, dx=1.0, axis=-1)[原始碼]#

使用複合梯形法則沿給定軸積分。

如果提供 x,則積分會沿其元素依序進行 - 它們不會被排序。

沿給定軸在每個 1 維切片上積分 y (x),計算 \(\int y(x) dx\)。當指定 x 時,這會沿參數曲線積分,計算 \(\int_t y(t) dt = \int_t y(t) \left.\frac{dx}{dt}\right|_{x=x(t)} dt\)

參數:
yarray_like

要積分的輸入陣列。

xarray_like,optional

對應於 y 值的樣本點。如果 x 為 None,則樣本點假設為均勻間隔 dx。預設值為 None。

dxscalar,optional

x 為 None 時,樣本點之間的間距。預設值為 1。

axisint,optional

要沿其積分的軸。預設值為最後一個軸。

回傳值:
梯形積分float 或 ndarray

y = n 維陣列的定積分,透過梯形法則沿單一軸逼近。如果 y 是一維陣列,則結果為浮點數。如果 n 大於 1,則結果為 n-1 維陣列。

註解

影像 [2] 說明梯形法則 – 點的 y 軸位置將取自 y 陣列,預設情況下,點之間的 x 軸距離將為 1.0,或者可以使用 x 陣列或 dx 純量提供。傳回值將等於紅色線條下方的組合面積。

參考文獻

範例

在均勻間隔的點上使用梯形法則

>>> import numpy as np
>>> from scipy import integrate
>>> integrate.trapezoid([1, 2, 3])
4.0

樣本點之間的間距可以透過 xdx 引數選取

>>> integrate.trapezoid([1, 2, 3], x=[4, 6, 8])
8.0
>>> integrate.trapezoid([1, 2, 3], dx=2)
8.0

使用遞減的 x 對應於反向積分

>>> integrate.trapezoid([1, 2, 3], x=[8, 6, 4])
-8.0

更廣泛地說,x 用於沿參數曲線積分。我們可以使用以下方法估計積分 \(\int_0^1 x^2 = 1/3\)

>>> x = np.linspace(0, 1, num=50)
>>> y = x**2
>>> integrate.trapezoid(y, x)
0.33340274885464394

或估計圓的面積,注意到我們重複樣本以封閉曲線

>>> theta = np.linspace(0, 2 * np.pi, num=1000, endpoint=True)
>>> integrate.trapezoid(np.cos(theta), x=np.sin(theta))
3.141571941375841

trapezoid 可以沿指定的軸應用,以便在一次呼叫中執行多個計算

>>> a = np.arange(6).reshape(2, 3)
>>> a
array([[0, 1, 2],
       [3, 4, 5]])
>>> integrate.trapezoid(a, axis=0)
array([1.5, 2.5, 3.5])
>>> integrate.trapezoid(a, axis=1)
array([2.,  8.])