本記事は機械翻訳によるものであり、原文は英語です。 原文を読む
刻み幅を半分にすれば誤差も半分になるはずである。ツールは1.73と表示している。
ページには比率そのものが表示されている。h = 0.2 での 0.000405、その半分の刻み幅での 0.000234 である。これらを割り算すると、2 ではなく 1.73 になるが、何もおかしいわけではない。
オイラー法は1次である。どの教科書にもそう書かれており、それが意味するのは誤差が刻み幅 h に比例するということである。したがって、h を半分にすれば誤差も半分になるはずである。
Euler's method をデフォルト設定(y′ = x − y、y(0) = 1、h = 0.2 で40ステップ、x = 8 で終了)で開いてみる。ページには 0.000405 という大域誤差が表示され、続いてきわめて誠実なことに、全体を h/2 で再実行してその誤差 0.000234 も両者の比率とともに表示される:
Eh / Eh/2 = 0.000405 / 0.000234 = 1.731285
2 ではない。手法は1次であり、計算は正しく、刻み幅を半分にしても 50% ではなく 42% の減少にとどまったのである。
単発の抽出ではなくスイープする
2つの数値だけでは方向性しか示せない。そこで、h が半分になるごとにステップ数を倍増させて終点を x = 8 に固定したまま、範囲全体で比率を追跡してみる:
- h = 0.4 → 比率 1.475764
- h = 0.2 → 比率 1.731285
- h = 0.1 → 比率 1.865689
- h = 0.05 → 比率 1.933036
- h = 0.025 → 比率 1.966586
約束された 2 という値は極限であり、それに近づく様子がまさにこれである。しかし、真に興味深い列は比率ではなく不足分、すなわち各測定値が 2 をどれだけ下回っているかである:
0.524 → 0.269 → 0.134 → 0.067 → 0.033
これは h が半分になるたびに半減している。「1次」という約束と、1次が実際に提供するものとの間のギャップは、h に関してそれ自体が1次なのである。
失われた「半分」はどこから来るのか
この次数は打ち切りに由来する。オイラー法は解のテイラー展開の第1項を残し、2階導関数以降をすべて切り捨てている。それは Taylor tool が可視化している通りであり、切り捨てられた項には h²、h³ などが含まれている。
したがって、大域誤差は C·h ではなく、以下のようになる:
E(h) = C₁h + C₂h² + C₃h³ + ⋯
アンド、このような2つの和の比率は
E(h) / E(h/2) = (C₁h + C₂h² + ⋯) / (C₁h/2 + C₂h²/4 + ⋯)
となり、h が小さくなり h² の項が h の項よりも速く減少するにつれて 2 に収束する。しかし、任意の有限な h において第2項は依然として残っており、分母に対して比例以上の寄与をしている。「1次」とは最も長く生き残る項のことであり、存在する唯一の項という意味ではない。h = 0.4 のとき、h² の寄与は期待される改善の4分の1を食いつぶすほど大きい。
同じことはページ上のステップ一覧表の誤差の列からも確認できる。各ステップの誤差は一定して蓄積するわけではなく、x = 0.8 までに約 0.0804 まで上昇した後、解が平坦になるにつれて減少する。大域誤差とは部分的に打ち消し合う局所誤差の和であり、実際に用いる刻み幅において、その和が都合よく h のきれいな倍数になる理由はない。
これが重要である理由(単なる瑣末な議論ではない)
計算できない誤差を推計する標準的な方法はリチャードソン補外であり、これは比率を仮定することで動作する。h で実行し、h/2 で実行したとき、手法の次数が p であれば、2つの結果の差はより細かい方の誤差の約 (2p − 1) 倍になる。オイラー法では p = 1 であるため、その差は残存誤差とほぼ等しくなる。
その推論に h = 0.4 を適用すると、真の比率が 1.476 であるのに 2 であると仮定したことになる。順を追って検証すると、得られる見積もりは真に残されている誤差の 0.476 に過ぎず、結果として約2分の1に過小評価してしまう。— そして重要なのは、過大評価ではなく過小評価してしまう点である。答えが実際よりも良好であると過信し、刻み幅が粗くなる(最も過信を避けるべき)ほどその過信が強まることになる。
防衛策はこのページが実証している通り、比率を仮定するのではなく測定することである。2回の実行で比率が得られ、3回の実行で比率の傾向が分かる。想定している p に対して比率が 2p に近くないならば、刻み幅が漸近領域に対して粗すぎるか、手法の次数が信じているものと異なるか、あるいは解に解析が予期しなかった特徴があるかのいずれかである。数値を引用・提示する前に、これら3つを突き止める価値は十分にある。
刻み幅を小さくするのではなく、より優れた手法を使うべき理由
刻み幅を半分にすると計算量は2倍になる。1次手法では、それによって得られるのは(最終的に)2倍の精度向上に過ぎない。これはきわめて割に合わないトレードオフであり、実用的なプロダクションコードでオイラー法による積分がほぼ使われない理由である。
Simpson's rule は4次精度であり、刻み幅を半分にすると誤差はおよそ16分の1になる。したがって同じ計算量の倍増によって、オイラー法の倍増よりも8倍優れた精度が得られることになる。ルンゲとクッタの手法は微分方程式に対してこれと同等のことを行い、参考文献にあるブッチャーの歴史的記述は、代替手段が確立されるや専門家たちがどれほど速やかに1次手法を放棄したかを伝えている。
覚えておくべき全体像はこうである。次数 p の手法において、計算量を2倍にするごとの対価は 2p 倍の精度であり、p は解くべき問題ではなくアルゴリズム自身の性質である。手法を選ぶことが交換レートを決定し、刻み幅を選ぶことはそのレート上に沿って移動するに過ぎない。— そして、上記のスイープが示しているように、h が十分に小さくなってその主張が現実のものとなるまでは、宣伝通りのレートで移動することすらできないのである。