はじめに
近似計算法であるModified-Euler法は、Euler法よりも近似精度が高いと言われています。今回は、その精度について確認していきます。
なお、ここでは微分方程式
\dfrac{dx}{dt}=f(t_n,x_n)
の近似を行うとします。
Euler法の精度
Euler法
Euler法は次の式で表されます。
x_{n+1} = x_n + h f(t_n,x_n)
Euler法の精度
まず、時間発展の出発時刻$t_0=0$とし、$^\forall n\in\{0,1,2,\cdots\}$に対して$t_n-t_{n-1}=h$としましょう。このとき、
t_n-t_{n-1}=h\\
t_{n-1}-t_{n-2}=h\\
\vdots\\
t_{1}-t_{0}=h\\
ですから、両辺足して
t_n-t_0=nh
ここで、$t_0=0$から
t_n=nh
が成立することに注意しておきます。
さて、$x(t_{n+1})$について、$t_n$点を中心にTaylor展開すると
x(t_{n+1}) = x(t_n) + x'(t_n)(t_{n+1}-t_n)+O(h^2)
ここで、$x(t_{n})=x_n,\quad x'(t_n)=f(t_n,x_n)$とすると
x_{n+1}=x_n+hf(t_n,x_n)+O(h^2)
となります。すなわち、Euler法の局所誤差は$h^2$程度となります。
毎回の計算で生じうる誤差、局所誤差に対し、Euler法で計算を繰り返してプログラムの実行が完了した時点で、蓄積された誤差は$t_n=nh$で表現されることから
(誤差)\sim (局所誤差)\times n = O(h^2)\times \dfrac{t_n}{h}=O(h)
となります。つまり、Euler法を実行して計算した結果に含まれる誤差は$h$程度ということになります。
Modified-Euler法の精度
Modified-Euler法
Modified-Euler法は次の式で表現されます。
x_{n+1}=x_n+\dfrac{h}{2}\{f(t_n,x_n)+f(t_{n+1},x_n+hf(t_n,x_n))\}
Modified-Euler法の精度
まず、
\left\{\begin{array}{rl}
k_1 &= hf(t_n,x_n)\\
k_2 &= hf(t_{n+1},x_n+k_1)\\
x_{n+1}&=x_n+\dfrac{1}{2}(k_1+k_2)
\end{array}\right.
とする。$k_2$について$(t_n,x_n)$を中心にTaylor展開すると
\begin{align*}
k_2&=h\{f(t_n,x_n)+f_t(t_n,x_n)(t_{n+1}-t_n)+f_x(t_n,x_n)(x_{n+1}-x_n)+O(h^2)\}\\
&=hf(t_n,x_t)+h^2f_t(t_n,x_n)+hf_x(t_n,x_n)k_1+O(h^3)\\
&=hf(t_n,x_t)+h^2\{f_t(t_n,x_n)+f_x(t_n,x_n)f(t_n,x_n)\}+O(h^3)\\
&=h\dfrac{dx}{dt}+h^2\left\{\dfrac{\partial f}{\partial t}+\dfrac{\partial f}{\partial x}f\right\}+O(h^3)\\
&=h\dfrac{dx}{dt}+h^2\dfrac{d^2x}{dt^2}+O(h^3)
\end{align*}
となる。ただし、途中で$t_{n+1}-t_n=h$やEuler法$x_{n+1}=x_n+k_1$を用いている。
さて、この結果を用いると
\begin{align*}
x_{n+1}&=x_n+\dfrac{1}{2}\{(k_1+k_2)\}\\
&=x_n+\dfrac{1}{2}\left\{hf(t_n,x_n)+hf(t_n,x_n)+h^2f'(t_n,x_n)+O(h^3)\right\}\\
&=x_n+hf(t_n,x_n)+h^2f'(t_n,x_n)+O(h^3)
\end{align*}
となります。すなわち、Modified-Euler法の局所誤差はどんな$h^3$程度となります。
Euler法のときと同様に蓄積される誤差を計算すると
(誤差) = (局所誤差) \times n = O(h^3)\times \dfrac{t_n}{h}=O(h^2)
となります。すなわち、Modified-Euler法で計算を実行した際に含まれる誤差は$h^2$程度となります。
まとめ
*Euler法の近似誤差はh程度
*Modified-Euler法の近似誤差はh^2程度