2009年6月26日金曜日

数学 #2 数値解析 #1 オイラー法

微分方程式が趣味の方は居るでしょうか.
日々閉じた解を追い求める,これ以上のロマンはありません.

しかし,行き詰ってしまうことも少なくないはず.そこはそれ,人生は旅です.気楽に行きましょう.

そんなわけでオイラー法です.

例えば,
y'=x2+y2
この微分方程式は,解を初等関数で表すことはできないようです.

ではどうするか.数値解を求めれば良いのです.

まず,初期値x0,y0,刻み幅hを決めます.

さて,
x1=x0+h
y1=y(x1)
としましょう.y(x1)はy()が分からないので求められませんが,テイラー展開することが出来ます.

y1=y(x0+h)
=y0+hy'0+(h2/2!)y''n

始めの2項にのみ注目しましょう.(hが十分に小さいとすれば,それ以降を無視しても誤差は小さいです)
つまり,
x1=x0+h
y1=y0+hy'0
と書くことが出来ます.

ちなみに,ここで,y'0
y'0=y'(x0, y0)
ですのでご注意を.

最終的に,これを再帰的に記述すれば,
xn+1=xn+h
yn+1=yn+hf(xn, yn)
(但し,f(x, y)=y'(x, y))

となります.
これらから,初期値を決めてしまえば,数値的振る舞いが分かるのです.

下に例を示しましょう.


Fig.1
先の微分方程式について,それぞれの座標での傾きを表したものです(-2≦x≦2, -2≦y≦2).これで,解の外形をイメージすることが出来ます.


Fig.2 x0=-1.6, y0=-1.8, h=1/4, 1/16
初期値を設定して"解いて"みました(-2≦x≦2, -2≦y≦2).
hが小さいほど,誤差は小さくなります(hが1/2になると,誤差も1/2になる).

ちなみにこれ,精度はそれ程良くないです.
もっと精度を良くしたいというのであらば,テーラー級数の項を増やすか,あの方法を使いましょう…と,次回へ引き延ばしてみたり.

0 件のコメント: