MATLABのソルバー revisit: 埋め込み型ルンゲ=クッタ法

ode45などのMATLAB ソルバーについて再度お勉強。自分の調べたことのメモが中心だから、まとまらないかも知れない。

“Embedded Runge-Kutta method”

“Embedded Runge-Kutta method”という名前

まず”Embedded Runge-Kutta method”という名前について。

MATLABに限らずode45など数字が二つ並べてあるソルバーはいわゆる”Embedded Runge-Kutta method” と呼ばれるルンゲ=クッタ法を指す場合が多い。 「多い」と書いたのはルンゲ=クッタ法以外も含める場合があるから(この書き方は不正確かも知れないが)。

“Embedded Runge-Kutta method”は日本語では「埋め込み方ルンゲ=クッタ法」と訳されている。 「適応型ルンゲ=クッタ法」と呼ばれるものと同義だが、こちらは英語が”adaptive Runge-Kutta method”なので英語のニュアンスが違うのかも知れない。

Embedded Runge-Kutta methodの中身

Embedded Runge-Kutta methodの中身について

次数が異なる二つのルンゲ=クッタ法を使って、これら二つの解の誤差が許容値に入るように刻み幅を調整するのがEmbedded Runge-Kutta methodのやっていることだ。 例えば”45″が付いたソルバーは4次と5次のルンゲ=クッタ法を使って、これら二つのルンゲ=クッタ法の誤差が許容値になるように時間の刻み幅を調整している。

時間の刻み幅を誤差が最小になるように調整しているから「適応型」とも呼ばれる。 ではなぜ「埋め込み型」なのか。Wikipediaによれば
下の方法を上の方法に埋め込むように見えるので埋め込み型と呼ばれる
とある。

Embedded Runge-Kutta methodの例

MATLABで使われているソルバーを中心にEmbedded Runge-Kutta methodの例を挙げてみよう。

ode45

Dormand-Prince法の (4,5)ペアを用いたルンゲ=クッタ法。これはExplicitつまり陽的な解法。

通常はこれを選ぶと思う。このソルバーで問題がありそうであれば、別のソルバーを試すことが推奨されている。

ode23

Bogacki–Shampine法の (2,3)ペアを用いたルンゲ=クッタ法。これはExplicitつまり陽的な解法。

ode23のMATLABのドキュメンテーションによれば
粗い許容誤差を使用する場合や中程度にスティッフである場合、関数 ode45 より効率的なことがあります。
とある。

ode113

今回勉強して初めて知ったソルバーだ。(これを書いている時点でSimulinkのソルバーとしては選択できない。)

予測子・修正子法と呼ばれるもので、ルンゲ=クッタ法には分類されないと思う。 適応型という点で埋め込み型に分類されるのかも知れない。だから、ここでは似たものということで挙げてある。

ode113のヘルプドキュメントによれば

ode45 よりも ode113、ode78、および ode89 のソルバーの方が、厳密な許容誤差をもつ問題を解く場合に優れています。ode113 が優れている一般的な状況は、滑らかな解の曲線と高い精度が要求される軌道力学の問題です。
許容誤差が厳しい場合や ODE 関数の評価に特に時間のかかる場合、ode113 の方が ode45 より効率的なことがあります。ode113 は複数ステップ ソルバーです。つまり、通常は現時点の解を計算するために、それより前の複数時点の解が必要です。

とある。

ode78, ode89

(ode78, ode89が”Embedded Runge-Kutta method”に分類されるのか、自分は実は分かっていない。 間違いがあれば教えて欲しい。)

MATLAB R2021bで導入されたかなり新しいソルバー。J. H. Verner “Numerically optimal Runge–Kutta pairs with interpolants” (https://doi.org/10.1007/s11075-009-9290-3) による。これらもExplicitつまり陽的な解法。

上記のように、ode89のヘルプドキュメントによれば

ode45 よりも ode113、ode78、および ode89 のソルバーの方が、厳密な許容誤差をもつ問題を解く場合に優れています。これらのソルバーが優れている一般的な状況は、解の曲線が滑らかで、ソルバーの各ステップで高い精度が要求される軌道力学の問題です。
とある。

それほど厳密さが要求されなければ、ode45などを使うほうが良さそうだ。

参考文献・サイト

Adsense広告