数値積分法

プログラミング演習A,B 2021年8月5日 担当教員: 劉 雪峰

今回の授業では、関数の積分の数値計算法を説明します。

区間$[a,b]$における関数$f$の積分を求めるとき、一般的な関数$f$の原始関数の算出が難しいので、数値計算法による積分の近似計算は使用されます。

数値積分法は、$[a,b]$の節点$x_1, \cdots, x_n$における関数の$f$の値を利用して、積分の近似値を求めます。

以下、2種類の数値積分法を解説します。

1) Lagrange補間関数による得られた求積法:

2) 特殊な節点を利用する数値積分法:

1. Lagrange補間関数による得られた求積法

節点$x_1, \cdots, x_n$における$f$のLagrange補間関数$p(x)$は$f$の良い近似を与えますので、$p(x)$の積分も$f$の積分の良い近似を提供できると考えられます。

また、補間関数の誤差評価を利用することで、近似積分の誤差解析も可能です。以下の解説では、近似積分の誤差解析に関する議論を省略して、その結果のみを紹介します。

1.1 中点則 (1点式)

$[a,b]$の中点$x_1=(a+b)/2$における0次補間関数$p(x)=f(x_1)$に対して、以下の積分の計算式が成り立つします。

$$ \int_{a}^{b} p(x) dx = (b-a)f(x_1) $$

上記の計算式をベースにして、以下の中点則が得られます。

$$ \int_{a}^{b} f(x) dx = (b-a)f(x_1) + \frac{(b-a)^3}{24} f^{(2)}(\xi),~~ \xi \in (a,b) $$

ここで、$(b-a)f(x_1)$が数値積分式、$ \frac{(b-a)^3}{24} f^{(2)}(\xi)$が数値積分の誤差です。

1.2 台形則(2点式)

$[a,b]$の両端$x_1=a, x_2=b$における1次補間関数は$p(x)=f(x_1)L_1(x) + f(x_2)L_2(x)$です。ここで

$$ L_1(x)=\frac{(x-b)}{(a-b)}, ~~ L_2(x)=\frac{(x-a)}{(b-a)} $$

は節点$x_1=a, x_2=b$におけるLagrange補間関数の基底関数です。

$p(x)$の積分計算式を利用して、以下の台形則が得られます。

$$ \int_{a}^{b} f(x) dx = \frac{f(x_1)+f(x_2)}{2}(b-a) - \frac{(b-a)^3}{12} f^{(2)}(\xi),~~ \xi \in (a,b) $$

1.3 シンプソン則(3点式)

$[a,b]$の節点$x_1=a, x_2=(a+b)/2, x_3=b$における2次補間多項式を利用して、以下の積分法が得られます。 $$ \int_{a}^{b} f(x) dx = \frac{(b-a)}{6}(f(x_1)+4f(x_2)+f(x_3)) - \frac{(b-a)^5}{90} f^{(4)}(\xi),~~ \xi \in (a,b) $$

2. 領域の分割による数値積分

上記の数値積分の精度を改善するために、領域を分割して、各小区間で$f$の数値積分を求める方法が考えられます。

例えば、$[a,b]$の$n$等分割$x_0=a, x_i = a+i(b-a)/n$ $(i=0,\cdots,n)$における中点則を利用すれば、以下の合成積分法が得られます。 $$ \int_{a}^b f(x) dx = \sum_{i=0}^{n-1}{f(\frac{x_i+x_{i+1}}{2})}\frac{b-a}{n} + \frac{(b-a)^2}{24} f^{(2)}(\xi), \xi\in (a,b) $$

また、$[a,b]$の$n$等分割$x_0=a, x_i = a+i(b-a)/n$ $(i=0,\cdots,n)$におけるシンプソン則を利用することで、以下の合成積分法が得られます。

$$ \int_{a}^b f(x) dx = \sum_{i=0}^{n-1}\left(f(x_i) + 4f(\frac{x_i+x_{i+1}}{2}) + f(x_{i+1})\right) \frac{(b-a)}{6n} + \frac{(b-a)^4}{90} f^{(4)}(\xi), \xi\in (a,b) $$

3. ガウス求積法

数値積分を求めるとき、節点の選び方をうまく調整することで、より高精度な近似積分が得られます。

ここで、できる限り高次多項式$p(x)$の積分を正しく算出できる近似積分式を求めます。

例えば、2点の節点$x_1,x_2$における$f$の関数値を利用して、以下の式をよる$[a,b]$における$f$の近似積分を検討します。

$$ \int_{a}^b f(x) dx \approx c_1 f(x_1) + c_2 f(x_2) $$

任意の3次多項式$p(x)$に対して、上記の積分式を$[a,b]$における$p$の厳密な積分値を提供するために、以下の連立方程式が得られます。

これらの方程式は$x_1,x_2,c_1,c_2$に関する非線形式です。一般的な非線形方程式の解を求めるのは難しいです。ここで、 $[a,b]:=[-1,1]$として、解が持つべき性質を推定して、解を計算してみます。

例えば、よい積分を出すために、$x_1$,$x_2$は積分区間の中点に関して対称になることを期待できます。 さらに、対称な節点における関数値$f(x_1)$と$f(x_2)$に対して、「重み係数」とみられる$c_1$と$c_2$が同じであることも推定できます。よって、以下の「仮定」で連立非線形方程式を解いてみます。

$$ x_1=-x_2,~~ c_1=c_2. $$

このとき、以下の解が容易に得られます。

$$ c_1=c_2=1, x_1=-\frac{\sqrt{3}}{3}, x_2=\frac{\sqrt{3}}{3}~. $$

即ち、 $$ \int_{-1}^1f(x) dx \approx f(-\frac{\sqrt{3}}{3}) + f(\frac{\sqrt{3}}{3})~ . $$

また、一般的に、$n$個の節点を利用して、$2n-1$次までの多項式の積分を正しく算出できる式が得られます。このような求積法をガウス求積法と呼ばれます。

一般的な区間$[a,b]$に対して、以下の座標変換を利用して、$[-1,1]$における積分に帰着することができます。 $$ \int_{a}^bf(x)dx = \frac{b-a}{2} \int_{-1}^1f(\frac{(b-a)}{2}x+\frac{a+b}{2}) dx $$

多くの節点を利用するガウス求積法はWikipedia のページを参考にします。

演習

ここで説明した数値積分法を使って、下記の積分の数値積分を計算せよ。 $$ \int_{0}^1\frac{4}{1+x^2}dx $$

例えば、