23

x と y の 2 つの集計データ配列がありますが、データを生成した関数がわかりません。x 軸に沿った任意の点で、データによって生成された線の積分を評価できるようにしたいと考えています。

区分関数をデータに補間してからそれを統合しようとするのではなく、私が問題を抱えていますが、配列を評価することによって単に積分を提供するために使用できるものはありますか?

解決策を探しているときに、iPython と Pandas への参照を見てきましたが、このタスクに役立つこれらのパッケージの部分を見つけることができませんでした。

配列を単純に統合する方法がない場合、このタスクを処理する最善の方法についてアドバイスをいただけますか?

4

2 に答える 2

24

Scipy には、数値積分を実行するための便利なツールがいくつかあります。

たとえば、scipy.integrate.simpsシンプソンのルールを実行するために使用でき、次のように渡すことができます。

scipy.integrate.simps(y, x=なし, dx=1, 軸=-1, 偶数='平均')

パラメータ:
y : array_like 統合する配列。

x : array_like、オプション指定された場合、y がサンプリングされるポイント。

dx : int、オプション y 軸に沿った積分点の間隔。x が None の場合にのみ使用されます。デフォルトは 1 です。

axis : int、オプションで統合する軸。デフォルトは最後の軸です。

偶数: {'avg', 'first', 'str'}, オプション

'avg' : 2 つの結果の平均: 1) 最後の間隔で台形規則を使用して最初の N-2 間隔を使用し、2) 最初の間隔で台形規則を使用して最後の N-2 間隔を使用します。

'first' : 最初の N-2 間隔にシンプソンの規則を使用し、最後の間隔に台形規則を使用します。

'last' : 最後の N-2 間隔にシンプソンの規則を使用し、最初の間隔に台形規則を使用します。

したがって、2 つの配列を使用して数値積分を行うことができます。

于 2013-07-11T19:48:52.037 に答える
15

Scipy には、役立つ統合機能があります。

積分に台形の累積和を使用する場合は、おそらく一連の点に最適です。

あなたはこれを行うことができます:

>>> from scipy import integrate
>>> x = np.linspace(-2, 2, num=20)
>>> y = x
>>> y_int = integrate.cumtrapz(y, x, initial=0)
>>> plt.plot(x, y_int, 'ro', x, y[0] + 0.5 * x**2, 'b-')
>>> plt.show()

これにより、データがプロットされ、グラフィカルに表示されます。integrate.cumtrapz(y, x, initial=0)これは、 x と y が 2 つの配列である統合呼び出しです。

于 2013-07-11T19:49:00.370 に答える