numpy.trapezoid#
- numpy.trapezoid(y, x=None, dx=1.0, axis=-1)[source]#
使用複合梯形法則沿給定軸積分。
如果提供了 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\)。
2.0.0 版本新增。
- 參數:
- yarray_like (類陣列)
要積分的輸入陣列。
- xarray_like (類陣列), optional (選填)
對應於 y 值的取樣點。如果 x 為 None,則假定取樣點均勻間隔 dx。預設值為 None。
- dxscalar (純量), optional (選填)
當 x 為 None 時,取樣點之間的間距。預設值為 1。
- axisint (整數), optional (選填)
要沿著積分的軸。
- 回傳值:
- trapezoidfloat (浮點數) 或 ndarray
y 的定積分 = n 維陣列,由梯形法則沿單一軸近似。如果 y 是一維陣列,則結果為浮點數。如果 n 大於 1,則結果為 n-1 維陣列。
註解
圖片 [2] 說明了梯形法則 – 點的 y 軸位置將從 y 陣列中取得,預設情況下,點之間的 x 軸距離為 1.0,或者可以使用 x 陣列或 dx 純量提供。回傳值將等於紅線下方的組合面積。
參考文獻
[1]Wikipedia 頁面:https://en.wikipedia.org/wiki/Trapezoidal_rule
範例
>>> import numpy as np
在均勻間隔的點上使用梯形法則
>>> np.trapezoid([1, 2, 3]) 4.0
取樣點之間的間距可以透過
x
或dx
參數選擇>>> np.trapezoid([1, 2, 3], x=[4, 6, 8]) 8.0 >>> np.trapezoid([1, 2, 3], dx=2) 8.0
使用遞減的
x
對應於反向積分>>> np.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 >>> np.trapezoid(y, x) 0.33340274885464394
或者估計圓的面積,注意我們重複取樣點以封閉曲線
>>> theta = np.linspace(0, 2 * np.pi, num=1000, endpoint=True) >>> np.trapezoid(np.cos(theta), x=np.sin(theta)) 3.141571941375841
np.trapezoid
可以沿著指定的軸應用,以在一次呼叫中執行多個計算>>> 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.])