簡體   English   中英

Python:在x中以不均勻的步長積分曲線下面積

[英]Python: integrating area under curve with uneven steps in x

我有一個 y 值列表和一個 x 值列表。 我想找到由這些點定義的曲線下的面積。 對於具有均勻間距的 x 值,我找到了幾個解決此問題的方法:

1) 在不知道函數的情況下,給定一組坐標計算曲線下的面積

2) 使用scipy對樣本進行離散積分

但是當 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM