logo

初期値が少し異なるときのオイラー法の誤差 📂数値解析

初期値が少し異なるときのオイラー法の誤差

定理

$[x_{0} , b] \times \mathbb{R}$で定義された$f$に対して、初期値問題 $\begin{cases} y ' = f(x,y) \\ y( x_{0} ) = Y_{0} \end{cases}$ の解$Y(x)$が$Y \in C^{3} [ x_{0} , b ]$であり、$\displaystyle f_{y} (x,y) = {{ \partial f (x,y) } \over { \partial y }}$と$\displaystyle f_{yy} (x,y) = {{ \partial^{2} f (x,y) } \over { \partial y^{2} }}$が連続かつ有界であるとしよう。初期値$y_{h} (x_{0} )$が$Y_{0} - y_{h} (x_{0} ) = \delta_{0} h + O ( h^2 )$を満たすとする。すると、オイラー法によって生じる誤差は、線形初期値問題 $$ \begin{cases} \displaystyle D’ (x) = f_{y} (x, Y(x) ) D(x) + {{1} \over {2}} Y’’ (x) \\ D ( x_{0} ) = \delta_{0} \end{cases} $$ の解$D(x)$に対して次を満たす。 $$ Y(x_{n} ) - y_{h} (x_{n} ) = D(x_{n} ) h + O (h^2) $$

説明

初期値$y_{h} (x_{0} )$が$Y_{0} - y_{h} (x_{0} ) = \delta_{0} h + O ( h^2 )$を満たすということは、すなわち初期値が真の値と少し異なってもよいという意味だ。そして、その差から生じる誤差そのものも、$D$を計算できればさらに減らすことができる。

証明1

戦略:強いリプシッツ条件を仮定し、$\epsilon_{n} = O ( h^2)$を示すための$g_{n}$、$k_{n}$を作り出す。少々強引ともいえるほど数式の操作が多い証明法だが、数値解析ではしばしば見かけるものでもある。美しい証明ではないにしても、この方式自体には慣れておくのがよい。

$x_{i} : = x_{0} + ih$であり、特に$x_{n+1} - x_{n} = h$である。便宜上 $$ Y(x_{n} ) := Y_{n} $$ $$ y(x_{n}) := y_{n} $$ と書き、$n$番目の誤差$\epsilon_{n}$を次のように表そう。 $$ \epsilon_{n} : = Y(x_{n}) - y (x_{n} ) $$


Part 1.

$Y(x_{n+1} )$を$ x_{n}$に関して$3$次テイラー展開すると、ある$x_{n} \le \xi_{n} \le x_{n+1}$に対して $$ Y_{n+1} = Y_{n} + h Y’_{n} + {{h^2} \over {2}} Y’’ ( x_{n} ) + {{h^3} \over {6}} Y’’’ ( \xi_{n} ) $$ ここでオイラー近似により次の式を得る。 $$ \begin{align} \displaystyle \epsilon_{n+1} = \epsilon_{n} + h ( f( x_{n} , Y_{n} ) - f (x_{n} , y_{n}) ) + {{h^2} \over {2}} Y’’ ( x_{n} ) + {{h^3} \over {6}} Y’’’ ( \xi_{n} ) \end{align} $$ $(1)$の$f(x_{n} , y_{n})$を$y_{n}$に関する関数と見なしてテイラー展開すると、ある$\zeta_{n} \in \mathscr{H} \left\{ y_{n} , Y_{n} \right\} $に対して $$ f(x_{n} , y_{n} ) = f(x_{n} , Y_{n} ) + (y_{n } - Y_{n}) f_{y} (x_{n} , Y_{n} ) + {{1} \over {2}} ( y_{n} - Y_{n} )^2 f_{yy} (x_{n} , \zeta_{n} ) $$ よって $$ \epsilon_{n+1} = \epsilon_{n} + h \left( \epsilon_{ n } f_{y} (x_{n} , Y_{n} ) - {{1} \over {2}} \epsilon^2 f_{yy} (x_{n} , \zeta_{n} ) \right) + {{h^2} \over {2}} Y’’ ( x_{n} ) + {{h^3} \over {6}} Y’’’ ( \xi_{n} ) $$ 整理すると $$ \epsilon_{n+1} = [ 1+ f_{y} (x_{n} , Y_{n} ) ] \epsilon_{n} + {{h^2} \over {2}} Y’’ ( x_{n} ) + {{h^3} \over {6}} Y’’’ ( \xi_{n} ) - {{1} \over {2}} h f_{yy} (x_{n} , \zeta_{n} ) \epsilon_{n}^{2} $$


Part 2.

強いリプシッツ条件とオイラー法の誤差: $$\max_{ x_{0 } \le x_{n} \le b } | Y_{x_{n}} - y_{h} (x_{n}) | \le \epsilon^{( b - x_{0} ) K} | \epsilon_{0} | + \left[ {{ \epsilon^{(b- x_{0}) K } - 1 } \over {K}} \right] \tau (h)$$

$\epsilon = O (h)$であるから $$ {{h^3} \over {6}} Y’’’ ( \xi_{n} ) - {{1} \over {2}} h f_{yy} (x_{n} , \zeta_{n} ) \epsilon_{n}^{2} = O (h^{3} ) $$ であり、$O ( h^3)$は十分に小さいと仮定されるので、$O ( h^3)$を除去した$g_{n+1}$を次のように定義できる。 $$ g_{n+1} : = [ 1+ f_{y} (x_{n} , Y_{n} ) ] g_{n} + {{h^2} \over {2}} Y’’ ( x_{n} ) $$ 仮定から$g_{0} = h \delta_{0}$とおけるので、$g_{n} = h \delta_{n}$と置くと両辺から$h$を消去して $$ \delta_{n+1} : = \delta_{n} + h \left[ f_{y} (x_{n} , Y_{n} ) \delta_{n} + {{1} \over {2}} Y’’ ( x_{n} ) \right] $$ 少し整理すると $$ {{\delta_{n+1} - \delta_{n} } \over {h}} = f_{y} (x_{n} , Y_{n} ) \delta_{n} + {{1} \over {2}} Y’’ ( x_{n} ) $$ となるが、この式の形をよく見ると、線形初期値問題 $\begin{cases} \displaystyle D’ (x) = f_{y} (x, Y(x) ) D(x) + {{1} \over {2}} Y’’ (x) \\ D ( x_{0} ) = \delta_{0} \end{cases}$ に似ている。結局$\delta_{n}$は$D(x_{n} )$のオイラー近似解、すなわち$D(x_{n} ) - \delta_{n} = O (h) $であることがわかる。今度は$g_{n}$の定義に従って両辺に$h$を掛けると $$ g_{n} = D ( x_{n} ) h + O ( h^2 ) $$


Part 3.

$k_{n} : = e_{n} - g_{n}$とすると $$ k_{n+1} = [ 1 + h f_{h} (x_{n} , y_{n} ) ] k_{n} + O(h^3) $$ であり、$f_{y}$が有界であるから、ある$K \ge 0$に対して $$ | k_{n+1} | \le ( 1 + h K ) | k_{n} | + O(h^3) $$ 再帰的に解くと $$ |k_{n}| = O(h^2) + O (h^3 ) = O(h^2) $$ よって $$ \begin{align*} \epsilon_{n} =& g_{n} + k_{n} \\ =& [ h D (x_{n} ) + O(h^2) ] + O(h^2) \\ =& O(h^2) \end{align*} $$


  1. Atkinson. (1989). An Introduction to Numerical Analysis(2nd Edition): p352~354. ↩︎