1 常微分方程式

1.1 常微分方程式のイメージ

微分方程式は、物理や工学の分野で問題を解く強力なツールばかりか、生物や 経済などでも広く応用されています。皆さんにぜひとも身に付けてもらいたい スキルです。微分方程式を使うためには、方程式をる作ことと解くことが必要 です。ここでは、微分方程式を解くこと、特に数値計算により非常に精度の良 い近似値を求める方法を学習します。微分方程式では解析解が無いのが普通で す。解析解は無いけれども、精度良く近似値を求めたい状況にしばしば遭遇し ます。このような時、数値計算の出番です。数学に無い面白さがありますので、 楽しんでください。

すでに学習したように、独立変数が二つ以上の多変数の関数の微分(偏微分)を 含む微分方程式を偏微分方程式(partial differential equation)といいます。 それに対して、一変数の関数の微分を含む方程式を常微分方程式(ordinary differential equation)といいます。ここでは、常微分方程式、特に1 階の場 合の解の近似値を求める方法を学習します。学習する方程式は

$\displaystyle \frac{dy}{dx}=f(x,y)$ (1)

です。1階だといってバカにはできません。後で述べますが、これが数値計算 できると、どんな高階の常微分方程式も同じ方法で数値計算ができます。

ここでの主題は、この微分方程式を満たす$ y(x)$を求めることです。計算を進 める前にこの方程式が何を表すか考えましょう。式(1) の左辺は、解$ y(x)$の導関数です。即ち、解の曲線の接線を表します。導関数 の値が座標$ (x,y)$の関数になっているわけです。座標$ (x,y)$が決まれば、曲 線の傾きが決まります。

それでは、この常微分微分方程式のイメージをつかんでもらいましょう。それ には、実際の微分方程式を考えてるのが良いでしょう。例えば、

$\displaystyle \frac{dy}{dx}=\sin x \cos x -y\cos x$ (2)

を考えます。いかにも難しげな微分方程式ですが、これには解析解があります。 解析解はとりあえずおいといて、この式の右辺を考えます。この式は接線の傾 きを表すので、各座標での傾きを書いてみましょう。この傾きを方向場と言い ます。すると図1のようになります。この図から、 大体の解の様子がわかると思います。

実際の解は、

$\displaystyle y=\sin x -1+c_1e^{-\sin x}$ (3)

です。1階の微分方程式ですから、1個の未知数を含みます。この未知数の値が 異なる5本の曲線と、先ほどの方向場を重ねて書き表してみます(図 2)。微分方程式の解である曲線$ y(x)$が方向場に沿ってあ ること分かるでしょう。元の微分方程式が傾きを表すので、あたりまえのこと です。

式(2)の微分方程式から、関数$ y(x)$の値を求めるためには もう一つ条件が必要です。通常この条件は、 $ y(x_0)=y_0$のように与えられま す。これを初期値といい、初期値が与えられるものを初期値問題といいます。 一方、2 点以上のxで定めるyの値が決まっているような問題を境界値問題とい います。ここでは、もっぱら初期値問題を解くことにします。

図: 微分方程式 $ \frac{dy}{dx}=\sin x \cos x -y\cos x $の方向場
\includegraphics[keepaspectratio, scale=1.0]{figure/direction_field.eps}

図 2: 方向場と解曲線
\includegraphics[keepaspectratio, scale=1.0]{figure/solution.eps}

1.2 数値計算のイメージ

初期値問題を計算するルーチンの基礎的な考え方はどれも似通っており、次の 通りです。まず(1)式の微分方程式を、極限の$ d$の代 わりに有限な$ \Delta$に置き換えます。$ \Delta$が小さければ、元の微分方程 式の良い近似になります。すると、(1)式の微分方程式は、

$\displaystyle \Delta y=f(x,y) \Delta x$ (4)

のように変形できます。これを用いて、$ x_i$から$ \Delta x$離れた$ y$の値 $ y_{i+1}$を計算します。

$\displaystyle y_{i+1}$ $\displaystyle = y(x_i+\Delta x)$    
  $\displaystyle = y_i+\Delta y$    
  $\displaystyle = y_i+f(x_i,y_i)\Delta x$ (5)

この式と初期値$ {x_0,y_0}$とを用いて、次々に $ (x_1,y_1), (x_2,y_2),
(x_3,y_3), \dots $が計算できます。

式(5)は、次の$ y_{i+1}$値は、もとの$ y_i$にそこでの傾 き $ f(x_i,y_i)$$ x$の増分$ \Delta x$を乗じたものを加えた形になっていま す。即ち、図3の通りです。この図からも分かるよ うにこの方法をそのまま適用した場合(オイラー法)、あまり精度がよくありま せん。出発点のみの導関数を用いているため、終点付近では傾きが異なってい ます。刻み巾$ \Delta x$を小さくすることにより解決は出来ますがその分、計 算時間が必要になります。そのため、$ x_i$$ x_{i+1}$の間で、出来るだけ精 度よく、この導関数を計算する工夫がいろいろ考えられています。以降、その 方法を示します。

図 3: 方向場と微分方程式の解 $ (x_i, y_i)$ $ (x_{i+1}, y_{i+1})$
\includegraphics[keepaspectratio, scale=0.7]{figure/sabun.eps}

ホームページ: Yamamoto's laboratory
著者: 山本昌志
Yamamoto Masashi
平成19年8月21日


no counter