東北工業大学 情報通信工学科 中川研究室


コンピュータ数値解析 台形公式の誤差がh2に比例するわけ


台形公式では、台形1本分(xkからxk+1まで) の幅hのf(x)の積分を、
{ f( xk )+ f( xk+1 ) }* (h/2) で代用しています。

台形の
左半分
台形の左半分は xk に近いので、 関数を x 〜 xk の周りで テイラー展開すると

f(x) 〜 c0 + c1( x-xk ) + c2( x-xk )2 + c3( x-xk )3 + c4( x-xk )4 + ...
ただし
c0 = f ( xk )
c1 = f ' (xk)/1!
c2 = f '' (xk)/2!
c3 = f ''' (xk)/3!
   :
これを、左半分 ( xkからxk+ h/2まで) 積分すると

xkxk+h/2 f(x) dx 〜
     [ c0 x + c1( x-xk )2/2 + c2( x-xk )3/3 + c3( x-xk )4/4 + c4( x-xk )5/5 + ...]xkxk+h/2
代入すれば
     = c0 (h/2) + c1( h/2 )2/2 + c2( h/2 )3/3 + c3( h/2 )4/4 + c4( h/2 )5/5 + ...

     = f(xk)(h/2) + f '(xk)(h/2)2/2! + f''(xk)(h/2)3/3! + f'''(xk)(h/2)4/4! + f''''(xk)(h/2)5/5! + ...


台形の
右半分
同様に、 台形の右半分は xk+1 に近いので、 関数を x 〜 xk+1 の周りで テイラー展開すると

f(x) 〜 c0 + c1( x-xk+1 ) + c2( x-xk+1 )2 + c3( x-xk+1 )3 + c4( x-xk+1 )4 + ...
ただし
c0 = f ( xk+1 )
c1 = f ' (xk+1)/1!
c2 = f '' (xk+1)/2!
c3 = f ''' (xk+1)/3!
   :
これを、右半分 ( xk+ h/2 から xk+1まで) 積分すると

xk+h/2xk+1 f(x) dx 〜
     [ c0 x + c1( x-xk+1 )2/2 + c2( x-xk+1 )3/3 + c3( x-xk+1 )4/4 + c4( x-xk+1 )5/5 + ...]xk+h/2xk+1
代入すれば
     = c0 (h/2) - c1( -h/2 )2/2 - c2( -h/2 )3/3 - c3( -h/2 )4/4 - c4( -h/2 )5/5 - ...
2乗と3乗では + - が変わって
     = f(xk+1)(h/2) - f '(xk+1)(h/2)2/2! + f''(xk+1)(h/2)3/3! - f'''(xk+1)(h/2)4/4! + f''''(xk+1)(h/2)5/5! -...


台形
1本分
右半分と左半分を足すと

xkxk+1 f(x) dx 〜
     = f(xk)(h/2) + f(xk+1)(h/2) + f '(xk)(h/2)2/2! - f '(xk+1)(h/2)2/2!
                      + f''(xk)(h/2)3/3! + f''(xk+1)(h/2)3/3!
                      + f'''(xk)(h/2)4/4! - f'''(xk+1)(h/2)4/4!
                      + f''''(xk)(h/2)5/5! + f''''(xk+1)(h/2)5/5! +...
                     」
        台形公式が再現しているのはここまで

打ち切られたあとの部分が台形1本あたりの誤差になります。

台形公式
の誤差
台形n本分合計すると、台形公式の誤差は
 Σk=0n-1 { f '(xk) - f '(xk+1) } (h/2)2/2!
k=0n-1 { f''(xk) + f''(xk+1) } (h/2)3/3!
k=0n-1 { f'''(xk) - f'''(xk+1) } (h/2)4/4!
k=0n-1 { f''''(xk) + f''''(xk+1) } (h/2)5/5! +...

誤差の1行目は、+ と - が出てくるため、全部足すと打ち消しあって両サイドだけが残り
{ f '(x0) - f '(xn) }(h/2)2/2! となります。つまり
{ f '(a) - f '(b) }(h/2)2/2!

誤差の2行目は
Σk=0n-1 { f''(xk) + f''(xk+1) } (h/2)3/3!
Σk=0n-1 { f''(xk) + f''(xk+1) } (h/2) かける (h/2)2/3! に分けてみてください。
前半は、 f'(xk)と f'(xk+1)を足してh/2 をかけ、全部足しているので、 f'(x)の台形公式による定積分です。
f'(x)を 積分したらf '(x)です。
積分区間aからbまでなら、定積分の結果は [f '(x)]x=ax=b= f'(b)-f'(a)です。
てことは、
台形公式の誤差の2行目は { f'(b)-f'(a) } (h/2)2/3! になるわけです。

h2 に比例
誤差の1行目,2行目をたすと { f'(b)-f'(a) } (h/2)2(1/2!+1/3!) となります。

同様に、 誤差の3行目は、+ と - が出てくるため、全部足すと両サイドだけが残り
{ f '''(a) - f '''(b) }(h/2)4/4!

誤差の4行目は
Σk=0n-1 { f''''(xk) + f''''(xk+1) } (h/2) と (h/2)4/5! に分けると
前半は、 f '''' (x)の定積分で、 [f '''(x)]x=ax=b= f'''(b)-f'''(a)ですので、
台形公式の誤差の4行目は { f'''(b)-f'''(a) } (h/2)4/5! になり、

h4 に比例
誤差の3行目,4行目をたすと { f'''(b)-f'''(a) } (h/2)2(1/4!+1/5!) となります。

台形公式
の誤差
以下、同じように続けていくと、
台形公式の誤差は、
{ f'(b)-f'(a) } h2/(定数) + { f'''(b)-f''''(a) } h4/(定数) + { f'''''(b)-f''''''(a) } h6/(定数) + ...
のようになります。

1階微分、3階微分、5階微分、... は出てきますが、
2階微分、4階微分、6階微分、... は出てきません。
h2、 h4、 h6... は出てきますが、 h1、 h3、 h5... は出てきません。

だからどうした、というと、
もし、積分したい関数の{ f'(b)-f'(a) } がたまたま0だった場合、
台形公式の誤差は、 h2 ではなく、 h4 に比例して
激減していく、ということがわかります。

中川研HOME   ◆情報通信工学科   ◆東北工業大学