next up previous contents index
: 解の収束定理 : 常微分方程式の数値解 : 差分法   目次   索引


不安定現象

差分法をもちいると時々本来の解からは似ても似つかない解を得ることがある. そのような例を一つ示そう.

方程式

\begin{displaymath}\frac{d}{dt} y = -2y, \quad y(0)=1\end{displaymath}

を考える. 本来の解は $e^{-2t}$ である.

\begin{displaymath}\lim_{h \rightarrow 0} \frac{f(t+h)-f(t-h)}{2h} = f'(t) \end{displaymath}

であるので, $h$ を十分小さい数とするとき, 次のような差分スキーム(差分方程式)で近似解をもとめて もいいであろう.

\begin{displaymath}y_{k+2} = y_k -4 h y_{k+1}, \quad
y_0 = 1,\ y_1 = y_0 + (-2)h
\end{displaymath}

ここで, 本来の解の原点での微分係数が $-2$ なので, この事実を用いて, $y_1$ をきめている. このとき数列 $y_k$ は, 時刻 $hk$ での真の解の値を近似していると 予想できる.
しかるに, プログラム unstable.rr (図 9.1) の出力がしめすように, $k$ の値が小さいときは真の解を近似してるが, $k$ の値が大きくなると, 解は振動をはじめ最後には大きな数に爆発してしまう. このような現象を差分法の誤差の爆発現象 (blow up of errors of a difference scheme) という.
    
unstable.rr の出力. 時間と真の解との誤差を表示している.
      略 
[Time, (approx sol)-(true sol)] : [0.29,-0.000212873]
[Time, (approx sol)-(true sol)] : [0.3,0.000149232]
[Time, (approx sol)-(true sol)] : [0.31,-0.000217378]
[Time, (approx sol)-(true sol)] : [0.32,0.000159362]
      略 
[Time, (approx sol)-(true sol)] : [6.86,90.7806]
[Time, (approx sol)-(true sol)] : [6.87,-92.6143]
[Time, (approx sol)-(true sol)] : [6.88,94.4851]
[Time, (approx sol)-(true sol)] : [6.89,-96.3937]
The solution is blown up.

図 9.1: プログラム unstable.rr
\begin{figure}\par
\begin{verbatim}load(''glib'')$def un() {
glib_window(0,...
...
break;
}
}
}print(''Type in un()'')$
end$\end{verbatim}
\par\end{figure}

このように, $h$ の値を決めたとき, $k$ が小さいうちは差分法の近似解が真の解に近いが, $k$ が大きくなったら, 真の解の近似を与える保証はない. $h$ の値を決めたとき, $k$ がある範囲におさまるうちは差分法が真の解に十分近い解を与えることを 次の節で証明しよう.

一般に, 差分法の解で真の解を大きい $k$ まで近似するのは 簡単ではない. 前節で紹介した 単振動の方程式の差分化は十分大きい $k$ に対しても解が近似になっているような 例である. 大きい $k$ まで近似するには, 差分法の解ともとの微分方程式の定性的性質がにている必要がある. 保存量等があるとき元の方程式と差分化した漸化式が 同じような保存則をみたしている等の性質があれば, 定性的性質が同じになる可能性も高いが, 厳密な数学的解析が必要である.



Nobuki Takayama 平成15年9月12日