[英]Python: integrating area under curve with uneven steps in x
我有一個 y 值列表和一個 x 值列表。 我想找到由這些點定義的曲線下的面積。 對於具有均勻間距的 x 值,我找到了幾個解決此問題的方法:
但是當 x 值不均勻分布時,這兩種方法都不起作用。
例如:
>>> from scipy.integrate import simps
>>> y = np.array([1,1,1,1])
>>> x = np.array([0,5,20,30])
>>> simps(y,x)
-inf
當然,在上面的代碼中使用 x = np.array([0,10,20,30]) 返回 30.0,正如預期的那樣。
任何人都可以建議一種方法來找到具有不均勻 x 間距的曲線下的面積嗎?
我只是去尋找一個簡單的梯形規則:
import numpy as np
x = np.array([0,5,20,30])
y = np.array([1,1,1,1])
s = np.sum((x[1:] - x[:-1]) * (y[1:] + y[:-1]) / 2)
# same as
# s = 0.0
# for k in range(len(x) - 1):
# s += (x[k+1] - x[k]) * (y[k+1] + y[k]) / 2
print(s)
30.0
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.