keisoku

ガウス・ルジャンドル求積(数値積分)計算

f(x) と区間 [a, b]、次数 n を入力すると、ガウス・ルジャンドル求積で定積分 ∫f(x)dx を高精度に数値計算します。分点・重み・被積分値も表示。

入力

被積分関数 f(x)、積分区間 [a, b]、次数 n を入力すると、ガウス・ルジャンドル求積で定積分を計算します。

例: exp(-x^2)、sin(x)/x、x^2 + 1。使える関数・定数・演算子は計算方法を参照。

分点数(1〜256)

計算結果

積分値 ∫ f(x) dx

0.7468241328

区間 [0, 1]

次数 n

8

分点数

8

分点・重み・関数値

区間 [a, b] に変換済みの分点 x_i、重み w_i、関数値 f(x_i) を示します。

#分点 x_i重み w_if(x_i)
10.408282680.181341890.84645796
20.23723380.156853320.94527454
30.101666760.111190520.9897171
40.019855070.050614270.99960585
50.980144930.050614270.38263105
60.898333240.111190520.44619348
70.76276620.156853320.55888459
80.591717320.181341890.70459692

計算方法・使い方

  • ガウス・ルジャンドル求積は、標準区間 [-1, 1] 上で n 次のルジャンドル多項式 P_n(x) の零点を分点 x_i とし、対応する重み w_i = 2 / ((1 - x_i^2)(P_n'(x_i))^2) を用いて、∫_{-1}^{1} g(t)dt ≈ Σ w_i g(x_i) と近似する数値積分法です。
  • 任意区間 [a, b] へは線形変換 x = (b-a)/2・t + (a+b)/2、dx = (b-a)/2・dt を施し、∫_a^b f(x)dx ≈ (b-a)/2・Σ w_i f((b-a)/2・x_i + (a+b)/2) として計算します。
  • n 個の分点を用いる本手法は、被積分関数が高々 2n-1 次の多項式であれば理論上は厳密に積分でき、なめらかな関数に対しては少ない分点数でも非常に高い精度が得られます。
  • 分点(ルジャンドル多項式の零点)は、漸化式 (k+1)P_{k+1}(x) = (2k+1)xP_k(x) - kP_{k-1}(x) で多項式を評価しながら、近似初期値からニュートン法で反復的に求めています。零点の対称性を利用して計算しています。
  • 関数式は eval などを使わず独立した数式パーサで解釈します。利用できる演算子は + - * / ^(冪)と丸括弧・単項マイナス・暗黙の乗算、定数は pi・e、関数は sin cos tan asin acos atan sinh cosh tanh exp log ln log10 sqrt cbrt abs です。
  • 計算は倍精度浮動小数点で行われるため、丸め誤差の影響を受けます。被積分関数が区間内に特異点や急峻な振動を持つ場合、求積の精度が低下することがあります。

お客様の声

このツールを使った感想をお聞かせください。

レビューを投稿する

  1. ホーム
  2. ガウス・ルジャンドル求積(数値積分)計算