5

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間隔が不均一な曲線の下の領域を見つける方法を誰かが提案できますか?

4

1 に答える 1

0

単純な台形規則を使用します。

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
于 2020-06-15T12:16:35.090 に答える