ガウス求積

提供: testwiki
2025年2月12日 (水) 00:28時点におけるimported>Bcxfubotによる版 (外部リンクの修正 http:// -> https:// (www.gnu.org) (Botによる編集))
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
ナビゲーションに移動 検索に移動

ガウス求積(ガウスきゅうせき、テンプレート:Lang-en-short)またはガウスの数値積分公式とは、カール・フリードリヒ・ガウスに因んで名づけられた数値解析における数値積分法の一種であり、実数のある閉区間(慣例的に テンプレート:Math に標準化される)で定義された実数値関数のその閉区間に渡る定積分値を、比較的少ない演算で精度良く求めることができるアルゴリズムである。

テンプレート:Mvar を正の整数とし、テンプレート:Math を 任意の多項式関数とする。テンプレート:Mathテンプレート:Math に渡る定積分値 テンプレート:Mvar を、

テンプレート:Indent

の形でなるべく正確に近似する公式を考える。ここで、テンプレート:Mvar積分点またはガウス点 (ガウスノード)と呼ばれる テンプレート:Math 内の テンプレート:Mvar 個の点であり、テンプレート:Mvar重みと呼ばれるn個の実数である。

実は、テンプレート:Mvar 次のルジャンドル多項式テンプレート:Mvar 個の零点(これらは全て テンプレート:Math 内にある)を積分点として選び、テンプレート:Mvar を適切に選ぶと、テンプレート:Mathテンプレート:Math 次以下の多項式であれば上記の式が厳密に成立することが示せる。この場合、テンプレート:Mvarテンプレート:Math によらず一意的に定まる。この方法を テンプレート:Mvar 次のガウス・ルジャンドル (Gauss–Legendre) 公式と呼び、通常はガウス求積またはガウスの数値積分公式と言えばこの方法を指している[1]

テンプレート:Mathテンプレート:Math次を超える多項式関数の場合、または多項式関数でない場合には、上記の公式は厳密には成立しないが、テンプレート:Mathテンプレート:Math 次以下の多項式関数で精度よく近似できる場合には、上記の公式を テンプレート:Math に対して適用することにより、その テンプレート:Math における定積分値を精度よく得ることが期待できる。それ以外のたとえば、特異点のある関数の積分にはこの公式をそのまま適用することはできないが、被積分関数を テンプレート:Math と表すことができて、テンプレート:Math が多項式で近似できて、テンプレート:Math が既知の関数(重み関数、通常は正値関数)であれば、それに対応する適切な離散的重み テンプレート:Mvar を使って次のように表せる。

テンプレート:Indent

典型的な重み関数としては、W(x)=(1x2)1/2(ガウス–チェビシェフ)や W(x)=exp(x2)(ガウス–エルミート)がある。この場合の テンプレート:Mvar 個の積分点 テンプレート:Mvar はルジャンドル多項式と同様に、ある直交多項式のクラスに属する テンプレート:Mvar 次多項式の根である[2][3]

重み関数と指定区間に付随するn次の直交多項式を考え、それの区間内にあるn個の零点を分点にとして被積分関数f(x)をHermite補間公式で近似したものを考えると、直交多項式の重み関数に対する直交性から、f(x)に重み関数を掛けて積分したものは、直交関数のn個の零点に於けるf(x)の関数値それぞれに重みをかけたものの和で近似される(結果的にf(x)の各分点における導関数値は積分の近似値には寄与しない)。このようにして重み関数に対応するガウス型の数値積分公式を導くことができて、分点がnであるときには被積分関数が2n−1次以下の任意の多項式に対して正確な積分値を与えるということが示せる.

ガウス・ルジャンドル公式による求積

上述のように テンプレート:Mvar 次のこの方法には、テンプレート:Mvar 次のルジャンドル多項式 テンプレート:Math が対応している。このときの テンプレート:Mvar 次多項式は テンプレート:Math となるよう正規化され、テンプレート:Mvar 番目のガウスノード テンプレート:Mvarテンプレート:Mvar 番目の テンプレート:Mvar の根である。重みは次の式で与えられる[4]テンプレート:Indent

低次の求積法は次のようになる。

点の個数 テンプレート:Mvar テンプレート:Mvar 重み テンプレート:Mvar
テンプレート:Math テンプレート:Math テンプレート:Math
テンプレート:Math ±1/3 テンプレート:Math
テンプレート:Math テンプレート:Math テンプレート:Math
±3/5 テンプレート:Math
テンプレート:Math ±(326/5)/7 18+3036
±(3+26/5)/7 183036
テンプレート:Math テンプレート:Math テンプレート:Math
±135210/7 322+1370900
±135+210/7 3221370900

区間の変更

一般的な区間 テンプレート:Math についての積分は、ガウス求積法を適用する前にその区間を標準区間 テンプレート:Math に変更する必要がある。この区間変更は以下のように線型変換で行う。

テンプレート:Indent

ガウス求積法を適用すると、以下で積分の近似値が得られる。

テンプレート:Indent

他の形式

正の重み関数 テンプレート:Mvar を導入することで、より汎用的な積分問題の表現も可能であり、区間 テンプレート:Math 以外にも適用可能である。すなわち、次の形式の問題である。

テンプレート:Indent

テンプレート:Mvar, テンプレート:Mvar, テンプレート:Mvar は適当に選択する。テンプレート:Math, テンプレート:Math, テンプレート:Math のとき、前述の問題と同じ形式になる。それ以外の選択では、別の求積法になる。そのうちの一部を下記の表に示す。"A & S" という欄は、Abramowitz and Stegun[4]にある式番号である。

区間 テンプレート:Math 直交多項式 A & S 解説など
テンプレート:Math テンプレート:Math ルジャンドル多項式 25.4.29 本項(上)で解説
テンプレート:Math (1x)α(1+x)β,α,β>1 ヤコビ多項式 25.4.33 (β=0)
テンプレート:Math 11x2 チェビシェフ多項式(第一種) 25.4.38 テンプレート:仮リンク
テンプレート:Math 1x2 チェビシェフ多項式(第二種) 25.4.40 チェビシェフ・ガウス求積法
テンプレート:Math exp(x) ラゲール多項式 25.4.45 テンプレート:仮リンク
テンプレート:Math exp(x2) エルミート多項式 25.4.46 テンプレート:仮リンク

基礎となる定理

テンプレート:Mvar が自明でない テンプレート:Mvar 次の多項式で、次のように表されるとする。

テンプレート:Indent

テンプレート:Mvar のn個の零点をノード(分点)として選ぶと、次数が テンプレート:Math 以下の任意の多項式について正確な積分値を与えるn個の重み テンプレート:Mvar を選ぶことができる。さらに、それらのノードには重複がなくすべて開区間 テンプレート:Math にある[3]

この多項式 テンプレート:Mvar は、テンプレート:Math を重み関数とする次数 テンプレート:Mvar の直交多項式である。

計算

ガウス求積法のノード テンプレート:Mvar と重み テンプレート:Mvar を計算するための基本的ツールは、直交多項式群と対応する重み関数が満たす3項漸化式である。

例えば、テンプレート:Mvar がモニックな テンプレート:Mvar 次直交多項式(最高次の項の係数が テンプレート:Mathテンプレート:Mvar 次直交多項式)なら、次のような漸化式で関係を表すことができる。

テンプレート:Indent

このことから、対応する行列の固有値および固有ベクトルからノードと重みを計算することができる。これを一般に Golub–Welsch アルゴリズムと呼ぶ[5][6]

テンプレート:Mvar が直交多項式 テンプレート:Mvar の根であるとき、前掲の漸化式を k=0,1,,n1 について用い、pn(xj)=0 であることを踏まえると、次が成り立つことがわかる。

JP~=xjP~.

ここで

P~=t[p0(xj),p1(xj),...,pn1(xj)]

である。そして、テンプレート:Mvar はいわゆるヤコビ行列である。

𝑱=(B010A1B1100A2B210An2Bn21An1Bn1).

したがって、ガウス求積法のノードは三重対角行列の固有値として計算できる。

重みとノードを求めるには、要素が 𝒥i,i=Ji,i, i=1,,n𝒥i1,i=𝒥i,i1=Ji,i1Ji1,i,i=2,,n から成る対称な三重対角行列 𝒥 の方が好ましい。𝐉𝒥相似なので、固有値(ノード)も同じになる。重みは、行列 テンプレート:Mvar から計算できる。ϕ(j) が固有値 テンプレート:Mvar に対応する正規化固有ベクトル(すなわち、ユークリッドノルムが1の固有ベクトル)であるとき、固有ベクトルの第一成分から次のように重みが計算できる。

wj=μ0(ϕ1(j))2.

ここで μ0 は重み関数の積分である。

μ0=abw(x)dx.

詳しくは Gil, Segura & Temme 2007 を参照されたい[5]

誤差の見積もり

ガウス求積法の誤差は次のように定式化される[3]。被積分関数が連続な テンプレート:Math 次の導関数を持つときには、

テンプレート:Indent

となる。ここで テンプレート:Mvar は区間 テンプレート:Math にあり、テンプレート:Mvarテンプレート:Mvar 次の直交多項式であり、さらに

テンプレート:Indent

である。重要な特別な場合 テンプレート:Math については、次のような誤差見積もりがある[7]

テンプレート:Indent

Stoer and Bulirsch[3] によれば、この誤差見積もりはテンプレート:Math 次の導関数を見積もるのが難しいので実用には不向きであり、さらに言うと実際の誤差はこの見積もりの与える上界よりもずっと小さい。別の手法として、次数の異なるガウス求積法を使って、2つの結果の違いから誤差を見積もる方法もある。それにはガウス=クロンロッド求積法が便利である。

ガウス=クロンロッド求積法

テンプレート:Main 区間 テンプレート:Math を分割すると、各部分区間のガウス評価点は元の区間での評価点とは一致せず(奇数の場合の0を除く)、従って、新たに評価点を求める必要がある。ガウス=クロンロッド求積法[8][9]は、ガウス求積法の テンプレート:Mvar 個の点に テンプレート:Math 個の点を追加し、求積法としての次数を テンプレート:Math にするものである。これにより、低次の近似で使う関数値を高次の近似の計算に再利用できる。通常のガウス求積法とクロンロッドの拡張による近似の差分が誤差の見積もりによく利用される。

脚注

テンプレート:Reflist

外部リンク

テンプレート:Integral

  1. 森・名取・鳥居 『数値計算』、岩波書店〈情報科学 18〉、1982年、pp. 130–132.
  2. テンプレート:Citation
  3. 3.0 3.1 3.2 3.3 テンプレート:Citation
  4. 4.0 4.1 テンプレート:Citation
  5. 5.0 5.1 テンプレート:Citation
  6. Walter Gautschi:"A Software Repository for Gaussian Quadratures and Christoffel Functions",SIAM,ISBN978-1611976342,(2020).
  7. テンプレート:Citation
  8. Notaris, S. E. (2016). Gauss–Kronrod quadrature formulae–a survey of fifty years of research. Electron. Trans. Numer. Anal, 45, 371-404.
  9. Gauss-Kronrod quadrature formula. Encyclopedia of Mathematics. URL: http://www.encyclopediaofmath.org/index.php?title=Gauss-Kronrod_quadrature_formula&oldid=22491