[SciPy] 18. integrate. trapezoid, simpsonなどで離散的データの数値積分

python

はじめに

数値積分は、関数の定積分を数値的に近似計算する方法です。特に解析的に積分が困難な場合や、実験データなどの離散的なデータポイントから面積を求める場合に重要です。

SciPyで利用可能な数値積分手法

台形法 (trapezoid)

台形法は最も基本的な数値積分手法で、隣接するデータポイント間を直線で結び、その下の台形の面積を合計します。精度は比較的低いですが、計算コストが低く、実装が簡単です。

シンプソン法 (simpson)

シンプソン法は隣接する3点を使用して2次の多項式近似を行い、より高精度な積分結果を得られます。データポイント数が奇数である必要があります。

累積台形法 (cumulative_trapezoid)

累積台形法は台形法の累積和を計算し、積分の途中経過を配列として返します。これは積分曲線を描画したい場合などに便利です。

ロンバーグ積分 (romb)

ロンバーグ積分は台形法を繰り返し適用し、外挿法によって精度を高める手法です。データポイント数は2^k + 1(kは整数)である必要があります。

各手法の比較

手法精度計算コスト特記事項
台形法シンプルで実装が容易
シンプソン法データポイント数が奇数必要
ロンバーグ積分データポイント数が2^k+1必要

コード

解説

モジュールのインポート

バージョン

データの生成

データを図で表示

trapezoidによる積分

台形公式により積分を行なった結果が得られる。

simpsonによる積分

シンプソンの公式を使った積分値が得られる。

cumulative_trapezoidによる積分

cumulative_trapezoidを使用することで、各区間における累積積分値を算出できます。上の図はその結果を視覚的に表したものです。

rombによる積分

romb関数を使用することでロンバーグ積分を計算できます。この手法ではデータ点の数が2^k + 1(kは整数)である必要があります。

コードをダウンロード(.pyファイル)

コードをダウンロード(.ipynbファイル)

参考

romb — SciPy v1.16.1 Manual
cumulative_trapezoid — SciPy v1.16.1 Manual
simpson — SciPy v1.16.1 Manual
trapezoid — SciPy v1.16.1 Manual

コメント