高次のルンゲ・クッタ法が頻繁に使用されないのはなぜですか?


17

高次(つまり4を超える)Runge–Kuttaメソッドが(少なくとも私の知る限り)議論されたり、雇用されたりすることがほとんどない理由について、私は興味がありました。ステップあたりの計算時間が長くなることは理解していますが(たとえば、12次の埋め込みステップを含むRK14)、高次のルンゲクッタ法を使用することには他の欠点(安定性の問題など)がありますか?極端な時間スケールで高度に振動する解を含む方程式に適用される場合、そのような高次の方法は通常好まれませんか?


2
これは非常に主観的な質問だと思います。既に述べたように、最大​​の欠点は計算のコストです。一般に、精度と計算時間のバランスをとろうとします。PDEでは、人々が高次について話すとき、彼らは一般に3次または4次について考えています。また、時間ステップも同じ順序に保たれます。
ヴィクラム

3
PDEでは、空間的精度が悪い場合、時間依存性の高次精度スキームは意味がありません。実際、空間依存性の精度は、特に非構造化メッシュで作業している場合、ほとんどの場合2次または3次です。人々は最小のコストでグローバルなエラーの切り捨てを制御する必要があるため、特定の場合に十分な精度のルンゲクッタを考慮します。
tqviet

@tqviet 空間微分に最大8次の後方または中心差分近似を使用する場合、RK8が適切でしょうか?一般に、空間微分のこのような高次の有限差分近似を使用する場合、精度または安定性の問題はありますか?
Mathews24

1
@ Mathews24:安定性については言及しませんでしたが、これは方程式に強く依存しています。高精度のスキームは、空間依存性に適用した場合、我々は精度の少なくとも同じ順序で時間的依存性にRKを採用するが、安定条件は小さい値必要な場合があり t
tqviet

回答:


17

5次以上のルンゲクッタ法を使用した数千の論文と数百のコードがあります。MATLABで最も一般的に使用される明示的積分器はODE45であり、5次のRunge-Kuttaメソッドを使用してソリューションを前進させることに注意しください。

広く使用されている高次のルンゲクッタ法の例

第五次法を与えたDormand&王子の論文は 1700以上の引用を持っているGoogleニュースによります。それらのほとんどは、いくつかの問題を解決する方法を使用した論文です。 Cash-Karp法の論文には400件以上の引用があります。5よりも高い順序で最も広く使用されている方法は、Google Scholarで400を超える引用があるPrince-Dormandの8次の方法でしょう。他の多くの例を挙げることができます。また、これらの方法を使用している人の多く(ほとんどではないにしても)が論文を引用することは決してないことに留意してください。

また、高次外挿法と遅延補正法はルンゲクッタ法であることに注意してください。

高次のメソッドと丸め誤差

丸め誤差によって精度が制限される場合は、高次の方法を使用する必要があります。これは、高次のメソッドでは必要なステップが少なく(ステップあたりの評価が増えても関数の評価が少ない)、丸めエラーが少ないためです。簡単な実験でこれを自分で簡単に確認できます。それは数値解析の最初のコースにとっては良い宿題の問題です。

10次​​の方法は、倍精度の計算に非常に役立ちます。それどころか、オイラーの方法しかなかった場合、丸め誤差が大きな問題になり、高次ソルバーがうまく機能する多くの問題に対して非常に高精度の浮動小数点数が必要になります。

高次メソッドも同様に安定している

AB

天体力学の高次の方法

あなたが尋ねる

極端な時間スケールで高度に振動する解を含む方程式に適用する場合、そのような高次の方法は通常好まれませんか?

あなたはまさに正しいです!これの主な例は、天体力学です。私はその分野の専門家ではありません。しかし、この論文では、たとえば、天体力学の方法を比較し、5未満の次数も考慮していません。効率的)。


ケッチソン:この声明についてのいくつかの証拠または説明を提供してもらえますか:「高次外挿法と遅延補正法はルンゲクッタ法です」特に「遅延修正方法」。ありがとう。
tqviet

@David Ketcheson外側に丸められた区間や放射演算などの検証済み(検証済み)コンピューティングテクニックを使用した場合の答えの変化について説明できますか?倍精度の外側に丸められた間隔または放射演算が使用された場合はどうですか?Runge-Kuttaの順序が増加すると、ラッピングと依存関係はどうなりますか。そして、ただの楽しみのために、ODEが非常に硬直しているとしましょう。
マークL.ストーン

@ MarkL.Stoneこれは、まったく異なる一連の質問です。質問したい場合は、個別の質問として投稿してください。しかし、私はそれらのことの専門家ではなく、答えることができません。
デビッドケッチャソン

1
@tqviet 説明については、このペーパーをご覧ください。
デビッドケッチャソン

12

標準の倍精度浮動小数点演算を使用している限り、妥当なステップ数で高精度のソリューションを取得するために、非常に高次のメソッドは必要ありません。実際には、RKF45で実行されるステップの数/長さではなく、倍精度浮動小数点表現によって、ソリューションの精度が通常1.0e-16の相対誤差に制限されることがわかります。

倍精度よりも高い浮動小数点演算方式に切り替える場合、10次の方法を使用する価値があるかもしれません。


5
この答えは誤解を招くと思います。高次の方法では丸め誤差がはるかに少なくなりますが、低次の方法では、必要な精度が大きい場合や時間間隔が長い場合に丸め誤差が支配的になります。以下の私の答えをご覧ください。
デビッドケッチャソン

2
ポイントは、倍精度浮動小数点では、1.0e-16よりも高い相対精度でソリューションを表すことさえできないということです。多くの実用的な状況では、古き良きRKF45は、小さなステップを必要とせずに、興味のある期間にわたってその精度レベルに到達します。硬直したシステムやシンプレクティック積分器が必要な状況には適していませんが、これらの状況では高次のルンゲクッタ法も優れたソリューションではありません。非常に長い期間、高次のルンゲクッタメソッドが意味をなすことに同意します。
ブライアンボーチャーズ

10

Brian Borcherの優れた答えに加えて、多くの実際のアプリケーションでは、非常に硬いODEまたはDAEを認めています。直観的には、これらの問題は、時間の経過とともに滑らかではない急激な変化を経験するため、長いステップサイズでストレッチされる高次多項式とは対照的に、短いステップサイズで細かく広がる低次多項式を使用してより適切にモデル化されます。また、安定性のために、暗黙的なメソッドの使用が必要になることがよくあります。そのため、高次のメソッドの計算ペナルティは非常に急です。

より厳密には、高次の方法は、スティッフな問題に対する低次の方法よりも安定性が低くなります。たとえば、線形マルチステップ法にはダーキスト障壁があります。

r2

RK公式のL安定性について、同様の(ただしはるかに複雑な)ステートメントを作成できます。すべての場合において、順序の増加は、しばしばより正確なソリューションにつながるとは限りません。以下は、1974年のプロテーロとロビンソンの独創的な論文からの抜粋です。

A安定なワンステップ法を使用して、硬い非線形微分方程式の大規模なシステムを解くと、
(a)一部のA安定法は非常に不安定な解を与え、
(b)方程式が硬直は、使用される方法の順序とは無関係であることが多いようです。

このトピックのさらに厳密な取り扱いについては、Hairer&Wannerの古典的なテキスト「常微分方程式の解法II:スティッフとディファレンシャル-代数的問題」、1991年を参照してください。

実際には、硬い方程式は、ほぼ常に台形規則またはTR-BDF2式(MATLABのode23tおよびode23tb関数)を使用して解かれます。これらは両方とも、暗黙的な2次メソッドです。もちろん、安定性が問題ではない場合(つまり、非スティッフな方程式の場合)、多数のオプションから自由に選択できます。RK45が最も一般的な選択肢です。


とても興味深い。A安定したマルチステップメソッドであるために、次数が2以下でなければならない理由について(直感的な)説明はありますか?明確にするために、RKフォーミュラについても同様のステートメントを作成できると言った場合、再度2の順序ですか?
Mathews24

しかし、ルンゲクッタメソッドには、任意の順序のA安定メソッドがあります。
デビッドケッチャソン

@DavidKetchesonはい。ただし、A安定性が強くありません(つまり、L安定性)。DAEの解決に使用すると、たとえば単純なトランジスタ回路のシミュレーションなど、多くの問題が発生します。実際、TRはSPICEで人工リンギングを引き起こすことで悪名が高く、これがTR-BDF2の開発の動機となっています。
リチャードチャン

参考のため@DavidKetcheson、参照doi.org/10.1090/S0025-5718-1974-0331793-2を。A安定性の概念はDAEにとって十分に強力ではなく、高次のA安定法はDAEの解決に使用されるとしばしば奇妙な結果をもたらします。
リチャードチャン

もちろんですが、質問はDAEやマルチステップメソッドに関するものではありません。
デビッドケッチャソン

9

ベンチマークのセットアップ

JuliaソフトウェアDifferentialEquations.jlでは、Feaginメソッドを含む多くの高次メソッドを実装しました。メソッドのリストでそれを見ることができます。そして、提供されたタブローとして使用できる他のトンがたくさんあります。これらの方法はすべてまとめられているため、それらの間のベンチマークを簡単に行うことができます。私がオンラインで持っているベンチマークをここ見ることができ、多くの異なるアルゴリズムをベンチマークすることは非常に簡単であることがわかります。そのため、ベンチマークを実行するのに数分かかる場合は、そのままにしてください。ここに出てくるものの要約があります。

まず、各ベンチマークを見ると、DP5(Dormand-Prince Order 5)およびDP8メソッドがHairer Fortranコード(dopri5およびdop853)よりも高速であり、これらの実装が非常に最適化されていることに注意することが重要です。これらは、別のスレッドで述べたように、Dormand-Princeメソッドの使いすぎは、メソッドがまだ最良であるためではなく、すでに記述されているためであることを示しています。したがって、最も最適化された実装の実際の比較は、Tsitorousメソッド、Vernerメソッド、およびDifferentialEquations.jlのFeaginメソッドの間で行われます。

結果

一般に、7を超える次数のメソッドには計算コストが追加されますが、選択された許容誤差を考慮すると、通常は次数の方が優先されます。この理由の1つは、低次のメソッドの係数の選択がより最適化されていることです(それらには、小さな「プリンシパルトランケーションエラー係数」があります。ここような多くの問題、Verner Efficient 6および7メソッドは非常にうまく機能しますが、Verner Efficient 8のようなメソッドはより低い勾配を持っていることがわかります。これは、高次の「ゲイン」が低い許容誤差で悪化するため、高次のメソッドがより効率的になる許容誤差が常に存在するためです。

しかし、問題は、どのくらい低いですか?最適化された実装では、2つの理由でかなり低くなります。最初の理由は、低次のメソッドがFSALと呼ばれるものを実装するためです(最初と最後が同じです)。このプロパティは、低次のメソッドが次のステップで前のステップの関数評価を再利用することを意味します。したがって、効果的に1つの関数評価が少なくなります。これが適切に使用されている場合、5次メソッド(TsitorousまたはDormand-Prince)のようなものは、実際にタブローが示唆する6つの代わりに5つの関数評価を行っています。これは、Verner 6メソッドにも当てはまります。

もう1つの理由は、補間によるものです。非常に高次の方法を使用する1つの理由は、より少ないステップで、単純に中間値を補間することです。ただし、中間値を取得するために、補間関数は、ステップを実行するために使用されたよりも多くの関数評価を必要とする場合があります。Vernerメソッドを見ると、次数8の内挿を取得するには、次数8のメソッドに対して8つの追加関数評価が必要です。多くの場合、低次のメソッドは「無料の」補間を提供します。たとえば、ほとんどの5次のメソッドには無料の4次の補間があります(追加の関数評価はありません)。つまり、中間値が必要な場合(高次の方法を使用している場合は適切なプロットに必要です)、追加の隠れたコストがあります。これらの補間された値は、イベントの処理と遅延微分方程式の解決に非常に重要であるという事実を考慮し、余分な補間コストが考慮される理由を確認します。

Feaginメソッドについてはどうでしょうか?

そのため、Feaginメソッドがベンチマークから疑わしく欠落していることがわかります。これらは問題ありません。収束テストは任意の精度の数値などで機能しますが、実際にうまく機能させるためには、かなりばかげた低い許容値を要求する必要があります。例えば、私は未公開ベンチマークに見出さFeagin14凌ぐVern9ような公差に(効率的な方法ヴェルナー9オーダー)1e-30。混oticとしたダイナミクス(Pleidesや3体の天体物理学の問題など)を使用するアプリケーションの場合、敏感な依存性(混systemsとしたシステムのエラーが速くなる)により、この量の精度が必要になる場合があります。ただし、ほとんどの人はおそらく倍精度の浮動小数点数を使用して計算しているため、この許容範囲内で性能が優れているベンチマークは見つかりませんでした。

さらに、Feaginの手法と併用する補間関数はありません。したがって、私がすることは、それらに3次エルミート補間を適用して、1つが存在するようにすることです(驚くほどうまく機能します)。ただし、標準の補間関数がない場合、再帰エルミート法を実行して(この補間を使用して中間点を取得し、5次補間を実行するなど)高次補間を取得できますが、これは非常にコストがかかり、結果として補間は必ずしも低原則の切り捨て誤差項を持っているわけではありません(そのためdt、本当に小さい場合にのみ有効です。したがって、精度に合わせて非常に優れた補間が必要な場合は、少なくとものようなものに戻る必要がありますVern9

外挿に関する注意

外挿法は、任意の次数のルンゲクッタ法を生成するための単なるアルゴリズムであることに注意してください。ただし、それらの順序については、必要以上の手順を実行し、主要な打ち切り誤差係数を持っているため、特定の順序で最適化されたRKメソッドほど効率的ではありません。しかし、以前の分析を考えると、これは、これらのメソッドが「既知の」RKメソッドよりも優れた許容範囲の非常に低い領域があることを意味します。しかし、私が実行したすべてのベンチマークでは、それほど低くはなっていないようです。

安定性に関する注意

選択は、安定性の問題とはまったく関係ありません。実際、DifferentialEquations.jlタブロー(plot(tab)安定領域のみで可能)を調べると、ほとんどのメソッドが疑わしく同様の安定領域を持っていることがわかります。これは実際には選択肢です。通常、メソッドを導出するとき、著者は通常次のことを行います。

  1. 最も低い原理の打ち切り誤差係数(つまり、次の項の係数)を見つける
  2. 順序の制約に従います
  3. そして、安定領域をDormand-Prince Order 5メソッドの領域に近づけます。

なぜ最後の条件ですか?まあ、その方法はPI制御の適応ステップサイズの選択が行われる方法で常に安定する傾向があるため、「十分に良い」安定領域の良いバーです。したがって、安定領域がすべて類似する傾向があることは偶然ではありません。

結論

あらゆる方法の選択にはトレードオフがあります。最高次のRKメソッドは、係数の選択を最適化するのが難しく、関数評価の数が複合するため(補間が含まれる場合はさらに速くなるため)、許容誤差が低いと効率的ではありません。ただし、許容値が十分に低くなると勝ちますが、必要な許容値は「標準」アプリケーションよりもはるかに低くなる可能性があります(つまり、カオスシステムにのみ適用されます)。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.