オイラー法は傾きで一歩ずつ進む
微分方程式は、各点で「どちらへどれだけ速く変わるか」(傾き)を教えてくれます。方向場の講で見た、あの傾きの地図です。問題は、ほとんどの微分方程式にきれいな公式解がないこと。ではどう解くのか。オイラーの答えは乱暴なほど単純です。今いる点で傾きを読み、その向きへ短く一歩(h)直進し、新しい点で再び傾きを読みまた一歩。これを繰り返して解曲線を折れ線で描いていきます。歩みが短いほど真の解に近づきますが、歩数が増えて計算が増えます。精度と費用の綱引きです。この一行のアイデアが、天気予報からゲームの物理エンジン、ロケットの軌道まで、ほぼすべてのシミュレーションの出発点です。
灰の斜線が方向場です。各点で微分方程式が定める傾きですね。ここでは y'=y、つまり自分の値に比例して育つ式なので、上へ行くほど斜線は急になります。オイラーは出発点で斜線に沿って直線で一歩、着いた点で再び斜線を読みまた一歩、こうして折れ線を描きます。真の解は ex(灰の曲線)です。歩み h を小さくしてみてください。点が密になり折れ線が曲線に張り付きます。h を大きくすると点はまばらになり曲線の下へたわみます。直線では曲線が反り上がる様子に追いつけないからです。
同じ式の終点だけ取り出します。灰の点は真値 e³≈20.1、金の点はオイラーが着いた値です。二つの間の赤い棒が累積(全体)誤差です。h スライダーを上へ引くと、棒と数字がリアルタイムで跳ね上がります。これが打ち切り誤差の爆発です。毎歩、直線が曲線をわずかに外す小さな誤差が、歩ごとに積み重なり、終点で大きな差になります。逆に h を半分にすると誤差もほぼ半分になります。オイラーは1次精度で、誤差が h に比例するからです。下の帯が満ちるほど危険信号です。
今度の式は y'=cos x、真の解は sin x です。振動する解なのでオイラーの弱点がよく現れます。大きな h で進むと、金の折れ線が灰の sin 曲線より山を膨らませ、位相が少しずつ遅れます。振動を一周期、二周期とたどるほどずれが積み重なります。h を小さくすると二つの曲線は次第に重なります。ここで学ぶのは、同じ方法でも解の性格によって誤差の出方が違うこと。なめらかに育つ解より、速く曲がり振動する解では、小さな歩みがいっそう切実です。
いよいよ本当に怖い場合です。式は y'=−ky、真の解は0へなめらかに消えていく減衰です。オイラーは毎歩 y に (1−hk) を掛けます。ところが h·k が2を超えると、この倍率の絶対値が1を超え、真の解は0へ向かうのに数値解は符号を振りながらどんどん大きくなります。爆発です。1と2の間なら振動しながら消え、1より小さければおとなしく減衰します。これは精度の問題ではなく安定性の問題です。歩みを小さくすることは精密さだけでなく、発散を防ぐ安全装置でもあるということ。硬い(stiff)方程式で特に重要です。
より小さな歩みではなく、より賢い歩みはないでしょうか。あります。オイラーは出発点の傾き一つだけを信じて直進します。RK2(中点法)はまず半分だけ進んで中点の傾きをもう一度測り、そのより良い傾きで丸ごと一歩を踏みます。計算は二倍ですが精度がぐっと上がります。金(オイラー)と青(RK2)を同じ h で比べてください。青の方が真の解 ex にずっと近い。オイラーの誤差は h に比例(1次)、RK2 は h² に比例(2次)なので、歩みを半分にすると誤差は1/4になります。実務標準の RK4 はこの発想を四回使い h⁴ の精度を出します。次の講では積分にも同じ原理が現れます。