トップQs
タイムライン
チャット
視点
数値積分
数値解析の一分野 ウィキペディアから
Remove ads
数値積分(すうちせきぶん、英: numerical integration)とは、狭義には与えられる関数の定積分の値を、解析的にではなく数値的に求める求積法のことであり、広義には与えられる導関数から原関数を求める手法、また微分方程式を数値的に解く手法 (常微分方程式の数値解法、偏微分方程式の数値解法) を含む[1]。数値解析の一分野である。
狭義の数値積分(関数の定積分の値を求める方法)は有限要素法などで応用されている[1]。 以下では、狭義の数値積分について述べる。
乱数を用いない積分法
要約
視点
1変数の定積分の数値積分として、乱数を使わない方法には、
- ニュートン・コーツの公式
- ロンバーグ積分 (台形公式と数列の加速法を組み合わせた公式)
- 積分点を適応的に取るガウス求積、ガウス=クロンロッド求積法、クレンショー・カーティス法
などがある。
ニュートン・コーツ系の公式の場合、中点則と台形公式の誤差項はどちらも2階導関数で表され、シンプソンの公式とシンプソンの3/8公式の誤差講はどちらも4階導関数で表される。滑らかな関数の場合には同じ誤差のグループ同士では結果に大きな違いは生じない。通常はシンプソンの公式の方が台形公式よりも近似誤差が小さいが、そうならない場合もある。
二重指数関数型数値積分公式、IMT積分[2]などの変数変換を用いた公式を適用すれば、被積分関数が端点に特異性を持つ場合でも、積分値を計算することが可能な場合もある。
多重積分
2変数以上の多重積分の場合は、外側から積分し、外の変数を定数として内側の積分を数値積分すれば良い。ただし一般に、変数の数が多くなると、統計的サンプリングに基づいたモンテカルロ法や準モンテカルロ法の方が計算効率が良くなる。 なお、1983年当時における多重積分の理論、アルゴリズムの状況は次元に応じて次のように分類されている[3][4]。
- Range O(2次元):満足のできる状況.
- Range I(3−7次元):積型公式(直積型公式)かその変形によりなんとか扱える.
- Range II(7−15次元):Ranges I と IIIの 境界領域.
- Range III(15次元以上):モンテカルロ法や準モンテカルロ法が必要になる.
精度保証付き数値積分
定積分の精度保証付き数値計算は、被積分関数の多項式近似と多項式の値を精度保証付き数値計算で求める技術を組み合わせて実現される。多項式の値を計算する際にはホーナー法が使われ、多項式近似にはテイラー展開や多項式補間が使われる[6]。
直交関数の零点を利用する近似公式
ガウス求積は直交多項式の零点を活用する積分公式である[1]。ベッセル関数の零点を活用する積分公式も開発されており、被積分関数がベッセル関数を含む場合に有効とされている[7][8]。
超関数を使った積分
特異点を持つ積分の場合、佐藤超函数を経由して複素数値積分に持ち込むことで特異点を避け、誤差を抑えられる手法が提案されている[9][10][11][12]。
部分積分を使った数値積分
Remove ads
乱数を用いる積分
→詳細は「モンテカルロ法 § 数値積分」を参照
被積分関数の定義域が高次元のために各変数ごとの積型積分近似公式では必要とする精度に対する計算量が多くなりすぎる場合(次元の呪いが発生する場合)にはモンテカルロ法の方が計算の能率が良くなる。
- 単純なモンテカルロ積分
- 加重サンプリングを行う VEGAS 法
- 層化抽出法を行うよう改良を加えた MISER 法
などがあり、このような数値積分法はモンテカルロ積分法とよばれる。
一様乱数の代わりに超一様分布列を使うと準モンテカルロ法になり、収束がより速くなる場合がある。
確率論やランダム行列理論などを用いて上記の近似公式とモンテカルロ積分法を融合させたアルゴリズムも提案されている[15]。
積分範囲が無限区間の場合
要約
視点
積分範囲が無限区間の場合は、下記の方法で置換積分で変換して数値積分する方法がある。ただし関数によっては違う方法を利用した方が良い場合もある。無限大に近づくときに急激に0に収束することが解析的に分かっている場合は、積分範囲を有界で区切ってしまえば良い場合もある。
Remove ads
数値積分が困難な場合
数値積分のアルゴリズムは、滑らかである、連続である、特異点の数や場所が限られている、など、それぞれアルゴリズムが何らかの前提条件を関数にかけていて、それに沿った物が正常に積分できる。例えば、無数に不連続点がある関数は、基本的に数値積分が困難である。更に、広義積分可能であることも通常は前提条件に入っていて、コーシーの主値積分としては積分可能であっても、広義積分不可能な関数は、前提が崩れるためおかしな結果になる場合がある。
例えば はコーシーの主値積分では 0 であるが、広義積分不可能であり[16]、これを数値積分すると(そもそも正しい結果が無いが)おかしな結果が返ってくることがある。定積分が広義積分可能であるかどうかは簡単には判断が付かない場合もあるため注意が必要である。
Remove ads
実装
近似計算
- QUADPACK - 乱数を使わない1変数の定積分が FORTRAN 77 で実装されている[17][18]。
- GNU Scientific Library ではこれをC言語に移植している。モンテカルロ積分や超一様分布列も実装されている。
- SciPy、R言語、GNU Octave、NAG数値計算ライブラリ、IMSL[19] などが QUADPACK を使用している。
- Boost Math Toolkit[20]
- Apache Commons Math では Java で実装されている。
- Cuba - 主にモンテカルロ積分が実装されている
- Mathematica・Maple・MATLAB などの数式処理システムおよび数値解析ソフトウェア
精度保証付き
Remove ads
出典
関連項目
関連文献
外部リンク
Wikiwand - on
Seamless Wikipedia browsing. On steroids.
Remove ads