数値解析 第8回 (1) 状況設定

状況設定

  • $x$ : 変数
  • $y=y(x)$ : $x$ の未知関数
  • $f(x,y)$ : $x$ と $y$ の 2 変数関数 ( プログラミング言語のライブラリで計算できるもの )
とするとき、次の形の微分方程式の数値解を求めます : $$ y'(x) = f(x, y(x)),\qquad y(x_0) = y_0 \tag{9.7} $$ ( $f$ の式と、$x_0$ と $y_0$ の値が与えられます。)
Ex.1 第2回のパラシュートの例 は ( $x$ と $y$ で書くと )
$y''=-g-Ky'$
でした。1 回積分すると
$y'=-gx-Ky+c$
となり、 $(9.7)$ で $f(x,y)=-gx-Ky+c$ の場合になります。

基本方針

 例によっていろいろな手法がありますが、今日紹介する方法に共通する方針は次のとおりです:
  1. $x$ の刻み幅 $h$ を設定する。
  2. 初期条件を決める $x_0$ から $h$ 刻みで
    $x_n = x_0 + n \times h$  ( $n=1,2,\cdots$ )
    とおく。
  3. $x_n$ での真の値 $y(x_n)$ の 近似値を $\require{color}\textcolor{red}{y_n}$ ( $n=1,2,\cdots$ ) と書くことにする。
  4. 順番に、
    • $y_0$ の値から $y_1$ を推定し、
    • $y_1$ の値から $y_2$ を推定し、
         $\vdots$
    • $y_n$ の値から $y_{n+1}$ を推定してゆく

近似式の作り方(積分進行法)

 $(9.7)$ より
$\dps{\int_{x_n}^{x_{n+1}}f(x,y(x))dx = \int_{x_n}^{x_{n+1}}y'(x)dx = y(x_{n+1}) - y(x_n)}$
ゆえ、真の値 $y(x_n)$ たちは $$ \require{color} y(x_{n+1}) = y(x_n) + \int_{x_n}^{x_{n+1}}f(x,\textcolor{red}{y(x)})dx \tag{9.9} $$ を満たします。 とは言っても $\textcolor{red}{y(x)}$ が未知 なので、何らかの理屈をつけて 右辺の積分を近似しなければなりません。