[1] オイラー法
一階の常微分方程式
 |
(1) |
を初期条件 t=t0 のとき y=y0 のもとで解くことを考える.tをtn=t0+n△tと△
tづつ増加させるとき,n回目の値 yn=y(tn)を順に求めていく.
最も単純な方法は,
 |
(2) |
としてどんどん足し算していく方法である.これをオイラー法と呼ぶ.
練習問題1
次の常微分方程式
 |
(3) |
を初期条件t=0のときy=1のもとで解き,解析的に得られる解
 |
(4) |
と比較せよ.t=2まで積分し,時間刻みを変化させて(1.D-1, 1.D-2, 1.D-3)誤差の変化を観察せよ.
[2]常微分方程式その2 「Δtの二次の精度」
オイラー法における誤差はΔtに比例する(一ステップの誤差はΔtの二乗に比例するため).すな
わち誤差を10分の1にしたければΔtを1/10にする必要がある.これは計算にかか
る時間が10倍になることを意味する.これでは時間がかかってしょうがない.
そこでΔtの2乗,4乗に誤差が比例するようなアルゴリズムが存在する.4乗に
比例するものはルンゲクッタ法と呼ばれ広く用いられている.
ルンゲクッタ法に入る前に誤差がΔtの2乗に比例するアルゴリズムについて考
えてみよう.
 |
(5) |
という微分方程式が与えられたものとする.タイムステップがΔtのとき,n+1
ステップ目のyの値yn+1は,ynを用いて
 |
(6) |
と書くことができる.ここでy''は二次の微係数で
 |
(7) |
となる.2項出てくることに注意.これを用いると先ほどの式は
 |
(8) |
のようにかきかえられる.ここでポイントは,我々はft,fyを知らないと言うことである.なので別の式でさらに書き替えないといけない.そのため式(8)が,以下のように書けるものと仮定する.
 |
(9) |
[3] ルンゲクッタ法
先ほどのアルゴリズムの誤差はΔtの二乗である.これを4乗に高めたの
がルンゲクッタ法である.
さきほどと同じ考え方を使うと,ルンゲクッタ法のアルゴリズムは以下のよう
になる.
 |
(20) |
練習問題3
式(20),(21)を用いて,ルンゲクッタ法を用いて先の例の積分を行え.3つの
場合の誤差を比較せよ.
[4] 連立微分方程式
先ほどのルンゲクッタ法は多変数に拡張できる.例えば,y=y(t)とz=z(t)がそれぞれ
にしたがって進化する場合は,以下のようにアルゴリズムを組めばよい.
練習問題4
式(28)で与えられる連立微分方程式を解け.なお,ω=とせよ.t=0.D0でvx=0.D0, vy=1.D0とする.