ガウス・クロンロッド求積法の分点と重みを計算

ガウス・クロンロッド求積法の分点と重みを計算

QUADPACKの6組からGauss–Kronrod則を選び、Kronrod分点・重みと埋込みGauss重みを一覧表示します。

入力

QUADPACKで係数が公開された6組から選びます。KはKronrod点数、Gは埋込みGauss点数です。

使い方

  1. G7/K15からG30/K61までの6組から、表示したいGauss–Kronrod則を選びます。
  2. 分点が昇順で左右対称か、Kronrod重みが全行で正か、Gauss重みの0が追加分点を示すか確認します。
  3. TSVをコピーするときは選択したG/Kの組、列の意味、最大12有効桁表示であることを一緒に保存します。
  4. 自作実装へ移す場合は重み総和と多項式モーメントを再計算し、丸め済み表示値だけに依存しないでください。

計算式・考え方

標準区間でKronrod則は∫_{−1}^{1}f(x)dx≈Σw_i^K f(x_i)、埋込みGauss則は同じ表の非ゼロw_i^Gだけを使いΣw_i^G f(x_i)と計算します。

注意事項

  • 分点・重み表では、選択したKronrod則の全行について番号i、標準分点x_i、Kronrod重み、埋込みGauss重みを表示します。既定K15の先頭行はx_1≈−0.9914553711208126、Kronrod重み≈0.022935322010529224です。番号は1から始まり、中央のx=0を挟んで左右対称です。表をプログラムへ移す場合は0始まり添字との差に注意してください。
  • Gauss重み列が0の行はKronrod追加分点です。0は『埋込みGauss則がこの分点を使わない』という所属マーカーであり、その行のKronrod重みが0という意味ではありません。Kronrod重みは全行で正です。Gauss推定値を再現するときはGauss重み列、Kronrod推定値にはKronrod重み列を使い、二つの列を加算したり混ぜたりしないでください。
  • 奇数点のGauss則G7、G15、G25は中央分点x=0を使うため、K15、K31、K51の中央行には正のGauss重みがあります。偶数点のG10、G20、G30には中央分点がないため、K21、K41、K61の中央行のGauss重みは0です。この違いは係数欠落ではなく、埋込み元のGauss則の奇偶性によるものです。
  • 表の簡易検算では、左右の分点が符号反転し、左右の各重みが一致することを確認します。Kronrod重みの総和とGauss重みの総和はいずれも標準区間の長さ2に一致します。さらに偶数次数のモーメントΣw_i x_i^dを2/(d+1)、奇数次数を0と比較できますが、表示12桁を再入力した値では元のbinary64結果より誤差が増える点に注意してください。
  • Gauss–Kronrod則は、Gauss則の分点を残したまま新しい分点を加え、同じ関数評価から二つの近似値を得る埋込み求積則です。この計算機はQUADPACKで係数が公開されているG7/K15、G10/K21、G15/K31、G20/K41、G25/K51、G30/K61だけに限定します。任意の奇数を入力して未検証係数を生成する機能ではありません。
  • 係数はNetlibの倍精度QUADPACK一次ソースdqk15、dqk21、dqk31、dqk41、dqk51、dqk61にあるxgk、wgk、wgをローカルへ固定しています。実行時に外部API、CDN、fetch、ファイル取得を行いません。元資料は正側の分点だけを対称性により掲示するため、このページでは負側と正側へ展開し、分点の小さい順に並べます。
  • 埋込みGauss則の多項式正確度はG7からG30について13、19、29、39、49、59次です。対応するKronrod則は23、31、47、61、77、91次までのモーメントを丸め誤差の範囲で再現します。この性質は多項式に対する検算条件であり、不連続関数、特異関数、急な振動を含む一般の関数へ同じ精度を約束するものではありません。
  • Kronrod推定値とGauss推定値の絶対差は、同じ区間で二つの埋込み則がどれだけ離れたかを表す指標です。真値誤差、信頼区間、証明付き上界ではありません。両方の分点が狭い異常や極を見落とせば差が小さくても結果は不正確になり得ます。必要な精度は区間分割、別次数、別方式、解析値、高精度実装との比較で判断してください。
  • 有限区間[a,b]では標準分点tをx=(a+b)/2+(b−a)t/2へ写像し、重み付き和へ(b−a)/2を掛けます。a>bも向き付き積分として受理し、半区間幅が負になるため二つの推定値も符号反転します。a=b、非有限端点、絶対値または区間幅が1,000,000を超える条件は、意味のない計算や極端な中間値を避けるため拒否します。
  • 関数式は変数x、定数pi・π・e、四則演算、べき乗、丸括弧と、許可済みの初等関数だけを有界な字句解析器で評価します。evalやnew Functionは使いません。200文字、128トークン、32段の上限があり、未知の名前、プロパティ参照、代入、配列、文字列、セミコロンを受理しません。分点で0除算や定義域外が生じた場合は数値を推測せず中止します。
  • 計算は利用者のブラウザ内で完結し、入力した関数式、区間、選択した則、結果をサーバーへ送信または保存しません。最大61回の関数評価に固定されるため、サーバー側CPUや外部サービスへ負荷を移しません。端末を閉じると条件は残らないので、TSVを保存するときは関数式、区間、G/Kの組、表示桁数、確認日も一緒に記録してください。
  • 画面表示とTSVコピーは最大12有効桁です。内部はIEEE 754 binary64で計算し、Netlibに記された十進係数も読み込み時にbinary64へ丸められます。12桁表示は12桁の正しさや誤差幅を意味しません。桁落ち、巨大値の相殺、非常に小さい積分、ほぼ等しい二推定値の差では、表示前の丸めと加算順序の影響を考慮してください。
  • 低い組から高い組へ変更すると分点集合は増えますが、K15の全分点がK21へそのまま含まれるわけではありません。各組の内側でGauss分点がKronrod分点へ埋め込まれている、という意味です。異なるKronrod次数間の単純な差を自動収束判定として扱わず、難しい関数では既知の不連続点や特異点で区間を分けることを優先してください。
  • 係数、埋込み位置、標準区間の重みはNetlib QUADPACKの6本の倍精度ルーチンを2026年7月13日に照合しました。K15とK21はSciPy内部のGauss–Kronrod実装とも独立比較し、全6組について対称性、正のKronrod重み、Gauss重み総和2、Kronrod重み総和2、多項式モーメントを確認しています。このページは教育、実装確認、一般的な数値試算向けで、任意精度や安全判断の保証を提供しません。
  • binary64・最大12有効桁の固定求積則です。G/K差は真値誤差や誤差上界ではありません。

よくある質問

Gauss重みが0の行は削除してよいですか?

Gauss推定値だけなら寄与しませんが、Kronrod推定値には正の重みで必要です。二つの則を同じ表から再現するなら行を保持してください。

K15以外の任意の奇数点を指定できますか?

できません。係数を一次資料と照合できるQUADPACKの6組だけを公開し、未検証の奇数点則をKronrod則として表示しません。

選択した則と生成した分点・重みは利用者の端末内だけで処理され、サーバーや外部APIへ送信・保存されません。