Taylor展開は厳密解だ[1]∞回微分した項を含む級数が構成できればですが、これを計算すれば無問題、で話は終わりません。なんといっても知らない子\(\frac{d^k}{dt^k}f(t)\)がいます。これが解析的に得られているなら、そもそも発端の常微分方程式の解析解もオマケに付けてくれよぉ、なのて期待できません。
ですが流石に後世に名を残す人は違う、いい手があるのです。
いつもの常微分方程式
\begin{equation}
\frac{d}{dt}x(t) = f(x(t))
\label{eq:scalar}
\end{equation}
を2次までTaylor展開すると、
\begin{equation}
x(h + t_0)=x(t_0)+h f(x(t_0)) +\left. \frac{h^2}{2} \frac{d} {dt} f(x(t))\right|_{t=t_0}
\end{equation}
ですが、ここで、次のような変数を設定し、
\begin{eqnarray}
k_1 &=& f(x_i) \nonumber \\
k_2 &=& f(x_i+hk_1)
\end{eqnarray}
希望的観測かもしれないが、
\begin{equation}
x_i+h(a_1k_1 +a_2k_2 )= x_i + h f(x_i) +\left. \frac{h^2}{2} \frac{d} {dt} f(x(t)) \right|_{t=t_0}
\label{eq:Desired}
\end{equation}
となりゃせんだろうか?と考えます。
ならば、
\begin{equation}
a_1k_1 +a_2k_2 = f(x_i) +\left. \frac{h}{2} \frac{d} {dt} f(x(t)) \right|_{t=t_0}
\end{equation}
が成立しなければなりません[2] … Continue reading。
式\eqref{eq:Desired}が任意の\(h\)で成立しない理由は無いならば、\(h=0\)でもよいので、
\begin{eqnarray}
a_1k_1 +a_2k_2 &=& a_1k_1 +a_2k_1=f(x_i) \nonumber\\
a_1+a_2&=&1
\label{eq:1stOrderCond}
\end{eqnarray}
一方、両辺を\(h\)で微分しても式\eqref{eq:Desired}は成立し、\(\frac {d}{dh}k_1=0\)なので
\begin{equation}
a_2\frac {dk_2}{dh}=\left.\frac{1}{2} \frac{d} {dt} f(x(t)) \right|_{t=t_0} \nonumber
\end{equation}
\(k_2=f(x_i+hf(x_i))\)である\(k_2\)と、\(x(t)\)を引数に持つ\(f(x(t))\)の微分には、合成関数の微分公式を適用して[3]関数 \(y=f(u) u=x(t)\)が共に微分可能な場合 \(\frac{df}{dt}=\frac{df}{du} \frac{du}{dt}=\frac{df}{du} \frac{dx(t)}{dt}\)が成り立つ、
\begin{equation}
a_2\frac {dk_2}{dh} =a_2\frac {dk_2}{dx}\frac{d(x_i+hf(x_i))}{dh} =\left.\frac{1}{2} \frac{f}{dx}\frac{dx(t)} {dt} \right|_{t=t_0} \nonumber
\end{equation}
ここで、\(h=0\)とすると、\(k_2=f(x)\)であるので、
\begin{equation}
a_2\frac {df}{dx}f(x_i)=\frac{1}{2} \frac{df}{dx} f(x_i)
\end{equation}
以上より
\begin{equation}
a_2=\frac {1}{2}
\end{equation}
ならば式(\ref{eq:1stOrderCond})より、
\begin{equation}
a_1=\frac {1}{2}
\end{equation}
なので、
\begin{eqnarray}
x_{i+1}&=&x_i+h(a_1k_1 +a_2k_2 ) \nonumber \\
&=&x_i+ \frac{h}{2} ( (f(x_i)+ f(x_i+hf(x_i) )
\end{eqnarray}
となる。
おお、これはHeun法(改良Euler法)ではないですか?
という事で、\(\frac{d}{dt}f(x)をf(x)\)で表すことが可能なことが解りました。
以上を大々的に拡張かつ一般化し、\(\frac{d^k}{dt^k}f(t)\)を\(f(x)\)の組み合わせで実現したものが、Runge-Kutta法です。
ですので、Heun法はRunge-Kutta法の一味ということになります。なお、以上はかなり簡略化しています[4] … Continue reading。
4次のRunge-Kutta法は、\(f(x)\)だけを用いて、Taylor級数の\(h\)の4次の項まで等しくなるように工夫したものです。よくできています[5] … Continue reading。
さて、ここで例によって、テスト方程式と呼ばれる
\begin{equation}
\frac{dx(t)}{dt}=\lambda x(t) \\
\label{eq:Test}
\end{equation}
を持ってくると、
\begin{equation}
\frac{d^2x}{dt^2}=\frac{\lambda x(t)}{dx} \frac{x(t)} {dt} = \lambda^2 x(t) \nonumber \\
\end{equation}
となって、
\begin{equation}
\frac{d^nx}{dt^n}=\lambda ^n x(t) \\
\label{eq:StateEquation_LIN}
\end{equation}
でいいんじゃないかと思いますが、これをTaylor展開に適用すれば、
\begin{equation}
x_{i+1}= \left( 1+h\lambda+\frac{(h\lambda)^2}{2}+\frac{(h\lambda)^3}{3!} +…+\frac{(h\lambda)^\infty}{\infty !}\right)x_i
\label{eq:Exponential}
\end{equation}
となり、以前にやった解析解となります[6]常微分方程式と状態方程式。
式\eqref{eq:Test}の線形微分方程式をHeun法で計算すると、式\eqref{eq:Exponential}のhの2次の項までとなり、4次のRunge-Kutta法を適用してゴリゴリやれば、\(h\)の4次の項まで式\eqref{eq:Exponential}と一致します。
線形方程式の場合、n次のRunge-Kutta法はn次項の打ち切りの指数関数と同じなんですね。
ということで、少々遠回りをしましたが、いよいよ次回は
台形積分法に言いがかりをつけようと思います。
脚注
↑1 | ∞回微分した項を含む級数が構成できればですが |
---|---|
↑2 | 微分演算子がかかった\(f(x(t))\)は\(f(x)\)なのか\(f\)と略すべきか、\(|_{t=t_0}\)は付けるべきなのか、いつも迷いますが、今回は\(x\)が\(x(t)\)であることが重要なので、くどい表記としました。どなたか統一的なルールなどご存知でしょうか? |
↑3 | 関数 \(y=f(u) u=x(t)\)が共に微分可能な場合 \(\frac{df}{dt}=\frac{df}{du} \frac{du}{dt}=\frac{df}{du} \frac{dx(t)}{dt}\)が成り立つ |
↑4 | 詳細かつ3次以上の詳しい話は、倭算数理研究所「https://wasan.hatenablog.com/entry/2013/11/02/113854」が非常に解りやすくてよろしいかと思います。参考になりました。ありがとうございます |
↑5 | それなら、5次、6次と増やしていけばいいのでは? ですが、5次の式は\(f(x)\)を6回計算しなければならないことが証明されている、らしく、4次が最も効率的とされています |
↑6 | 常微分方程式と状態方程式 |