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