数値積分
数値積分(すうちせきぶん、英: 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次元以上):モンテカルロ法, 準モンテカルロ法が必要になる.
高次元空間での数値積分は金融工学などで必要とされているため、活発に研究されている[4][5]。
精度保証付き数値積分
編集定積分の精度保証付き数値計算は、被積分関数の多項式近似と多項式の値を精度保証付き数値計算する技術の組み合わせで実現される。多項式の値を計算する際はホーナー法が使われ、多項式近似にはテイラー展開や多項式補間が使われる[6]。
特殊関数の零点を活用する近似公式
編集ガウス求積は直交多項式の零点を活用する積分公式である[1]。ベッセル関数の零点を活用する積分公式も開発されており、被積分関数がベッセル関数を含む場合に有効とされている[7][8]。
超関数を使った積分
編集特異点を持つ積分の場合、佐藤超函数を経由して複素数値積分に持ち込むことで特異点を避け、誤差を抑えられる手法が提案されている[9][10][11][12]。
部分積分を使った数値積分
編集乱数を使った積分
編集被積分関数の定義域が高次元であったりして近似公式がうまく計算できないような場合(次元の呪いが発生する場合)、モンテカルロ法が上手く行く場合もある。
- 単純なモンテカルロ積分
- 加重サンプリングを行う VEGAS 法
- 層化抽出法を行うよう改良を加えた MISER 法
などがあり、このような数値積分法はモンテカルロ積分とよばれる。
積分範囲が無限区間の場合
編集積分範囲が無限区間の場合は、下記の方法で置換積分で変換して数値積分する方法がある。ただし関数によっては違う方法を利用した方が良い場合もある。無限大に近づくときに急激に0に収束することが解析的に分かっている場合は、積分範囲を有界で区切ってしまえば良い場合もある。
数値積分が困難な場合
編集数値積分のアルゴリズムは、滑らかである、連続である、特異点の数や場所が限られている、など、それぞれアルゴリズムが何らかの前提条件を関数にかけていて、それに沿った物が正常に積分できる。例えば、無数に不連続点がある関数は、基本的に数値積分が困難である。更に、広義積分可能であることも通常は前提条件に入っていて、コーシーの主値積分としては積分可能であっても、広義積分不可能な関数は、前提が崩れるためおかしな結果になる場合がある。
例えば はコーシーの主値積分では 0 であるが、広義積分不可能であり[16]、これを数値積分すると(そもそも正しい結果が無いが)おかしな結果が返ってくることがある。定積分が広義積分可能であるかどうかは簡単には判断が付かない場合もあるため注意が必要である。
実装
編集近似計算
編集- 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 などの数式処理システムおよび数値解析ソフトウェア
精度保証付き
編集出典
編集- ^ a b c 山本哲朗『数値解析入門』(増訂版)サイエンス社〈サイエンスライブラリ 現代数学への入門 14〉、2003年6月。ISBN 4-7819-1038-6。
- ^ 伊理正夫, 森口繁一, 高澤嘉光「ある数値積分公式について (科学計算基本ライブラリーのアルゴリズムの研究会報告集)」『数理解析研究所講究録』第91巻、京都大学数理解析研究所、1970年8月、82-118頁、CRID 1050001201939101568、hdl:2433/108132、ISSN 1880-2818。
- ^ Davis,P. J.,and Rabinowitz,P.,Methods of Numerical Integration,2nd Edition, Academic Press,San Diego,1984.
- ^ a b 手塚集「数値多重積分に関する話題(<特集>数値計算)」『応用数理』第8巻第4号、日本応用数理学会、1998年、267-276頁、CRID 1390282680742275200、doi:10.11540/bjsiam.8.4_267、ISSN 09172270。
- ^ 加藤公一「量子コンピュータを用いた数値積分計算について」(PDF)『Unisys技報 : Unisys technology review』第26巻第2号、日本ユニシス、2006年8月、150-167頁、CRID 1521980704882269440、ISSN 09149996。
- ^ 大石進一『精度保証付き数値計算』コロナ社〈現代非線形科学シリーズ〉、2000年。ISBN 9784339026054 。
- ^ 緒方秀教, 杉原正顯「Bessel関数を含む振動積分に対する数値積分公式(数値計算アルゴリズムの現状と展望II)」『数理解析研究所講究録』第915巻、京都大学数理解析研究所、1995年6月、171-181頁、CRID 1050001202174401664、hdl:2433/59609、ISSN 1880-2818。
- ^ 緒方秀教, 杉原正顯「Bessel関数の零点を標本点に持つ補間および数値積分公式」『日本応用数理学会論文誌』第6巻第1号、日本応用数理学会、1996年、39-66頁、doi:10.11540/jsiamt.6.1_39。
- ^ 緒方秀教「佐藤超函数論に基づく数値解析」『応用数理』第27巻第4号、日本応用数理学会、2017年12月、8-15頁、CRID 1390001205765195776、doi:10.11540/bjsiam.27.4_8、ISSN 2432-1982。
- ^ 緒方秀教「佐藤超函数論に基づく数値積分 (現象解明に向けた数値解析学の新展開 II)」『数理解析研究所講究録』第2037巻、京都大学数理解析研究所、2017年7月、57-60頁、CRID 1050564288162787200、hdl:2433/236858、ISSN 1880-2818。
- ^ 緒方秀教, 平山弘「数値積分に対する超函数法」『日本応用数理学会論文誌』第26巻第1号、日本応用数理学会、2016年、33-43頁、CRID 1390001205769013120、doi:10.11540/jsiamt.26.1_33、ISSN 2424-0982。
- ^ Ogata, Hidenori (2019). “A numerical method of computing oscillatory integral related to hyperfunction theory”. arXiv preprint arXiv:1909.04911. doi:10.48550/arXiv.1909.04911 .
- ^ 平山弘「部分積分法による半無限区間振動型積分の数値計算法」『日本応用数理学会論文誌』第7巻第2号、日本応用数理学会、1997年、131-138頁、CRID 1390001205768016384、doi:10.11540/jsiamt.7.2_131、ISSN 09172246。
- ^ 平山弘, 館野裕文, 平野照比古「部分積分法による数値積分法」『数理解析研究所講究録』第1395巻、京都大学数理解析研究所、2004年10月、190-195頁、CRID 1050001202108546176、hdl:2433/25947、ISSN 1880-2818。
- ^ Nakatsukasa, Y. (2018). "Approximate and integrate: Variance reduction in Monte Carlo integration via function approximation". arXiv preprint arXiv:1806.05492.
- ^ integrate from -1 to 1 1/x dx - Wolfram|Alpha
- ^ QUADPACK (nines)
- ^ quadpack
- ^ int_fcn_sing - IMSL C Math Library
- ^ Chapter 11. Quadrature and Differentiation - 1.69.0
- ^ S.M. Rump: INTLAB - INTerval LABoratory. In Tibor Csendes, editor, Developments in Reliable Computing, pages 77-104. Kluwer Academic Publishers, Dordrecht, 1999.
- ^ Johansson, F. (2017). Arb: "efficient arbitrary-precision midpoint-radius interval arithmetic". IEEE Transactions on Computers, 66(8), 1281-1292, doi:10.1109/TC.2017.2690633.
- ^ Johansson, F. (2018, July). Numerical integration in arbitrary-precision ball arithmetic. In International Congress on Mathematical Software (pp. 255-263). Springer, Cham.
- ^ Johansson, F., & Mezzarobba, M. (2018). Fast and Rigorous Arbitrary-Precision Computation of Gauss--Legendre Quadrature Nodes and Weights. en:SIAM Journal on Scientific Computing, 40(6), C726-C747.
関連項目
編集関連文献
編集- 日高孝次:「数値積分法」、岩波書店(1948年)。
- 日高孝次:「数値積分と数値計算」、岩波書店(1949年)。
- 日高孝次:「数値積分法」、現代工学社(1974年)。※ 岩波書店から出ていた上下巻の合本復刻。
- P.Rabinowitz、 森正武(訳):「計算機による数値積分法」、日本コンピュータ協会(1981年2月)。
- 森正武:「数値解析」(第2版)、共立出版(共立数学講座)、ISBN 978-4320017016(2002年2月1日)。
- 杉原正顯、室田一雄:「数値計算法の数理」、岩波書店(2003年5月23日)。
- 田中健一郎、岡山友昭:「変数変換型数値計算法」、岩波数学叢書、ISBN 978-4-000298605(2023年5月17日).
外部リンク
編集- Lobatto Quadrature Wolfram Mathworld の記事
- Lobatto quadrature formula Encyclopedia of Mathematics の記事
- 桂田祐史:「数値積分解説」(2019年6月30日)
- Menghan Wu; Haiyong Wang: "Gaussian quadrature rules for composite highly oscillatory integrals", Math. Comp. (2023年7月21日)doi:10.1090/mcom/3878