より正確なルンゲクッタ法は、ドーマンドプリンスとキャッシュカープのどちらですか?


9

私は、ドーマンドプリンス数値法キャッシュカープ数値法のどちら がより正確かを知りたいだけです。


6
これらはどちらも、ステップごとに6つの関数評価を使用する4次/ 5次の方法です。パフォーマンスと精度はほとんどの問題で非常によく似ていると思われますが、特定の問題では、一方の方法がもう一方の方法よりわずかに優れている場合があります。
ブライアンボーチャーズ2016

時間があれば、より詳細な回答を投稿しますが、ボガッキとシャンパインのペアを使用して同じ努力をした場合よりも、どちらかがより正確になることを賭けます。
David Ketcheson

回答:


35

それらの多くをソフトウェアDifferentialEquations.jlで最適化し終えたばかりなので、主なOrder 4/5メソッドの比較を単にレイアウトすることにしました。フェルバーグ法は、DP5法よりも効率が低いことが一般的に知られているため、除外されました。

バックストーリー

ドルマンプリンス4/5

Dormand-Prince法は、局所外挿法を使用した4/5ペア(つまり、次数5のペアのステップ)として正確になるように開発されました。これは、最適(つまり最小)の原理打ち切り誤差係数(次数5を達成するために最小数のステップも持つという制約。4次補間は無料ですが、5次補間には追加のステップが必要です。

キャッシュカープ4/5

キャッシュカープ法は、さまざまな制約を満たすために、つまり滑らかでない問題をより適切に処理するために開発されました。彼らは、、つまり番目のステップのタイムステップのパーセンテージ(つまり、は番目のステップが計算される時間)を可能な限り均一にすることを選択しましたが、それでも次数5を達成します。この均一性を使用して、1次、2次、3次、および4次のメソッドを埋め込むように派生しました I T + C I Δ T I C I I < 6ciit+ciΔtici。それらは、硬い部分がどこから始まり、差が大きいかがわかるような方法で配置されます。さらに、方程式が硬くなるほど、高次の方法が悪化することに注意してください(高次の導関数に限界が必要なため)。したがって、彼らは5つの組み込みメソッドを使用して「早期に終了」する戦略を開発します。つまり、硬直を検出した場合は、ステージで停止します。i<6関数呼び出しの数を減らし、時間を節約します。結局、この「ペア」は他の多くの制約を考慮して開発されたので、少なくとも4/5ペアとして「より正確」になると期待する理由はありません。この他のすべての機械を追加すると、(半)硬い問題ではより正確になります(ただし、その場合は、W-Rosenbrockメソッドなどの別のメソッドを使用することができます)。これが、このペアがDP5ペアよりも標準にならない理由の1つですが、それでも有用な場合があります(剛性に遭遇したときにスティッフソルバーに切り替えるハイブリッドメソッドに適しているのではないでしょうか?)。

ボガッキとシャンパイン4/5

答えをまとめるために、コメントで言及されたボガッキとシャンパインのペアについて議論しましょう。BS5メソッドは、2つのことを行うために、「最小の関数呼び出しを使用する」という制約(6の代わりに8を使用)を削除します。

  • 非常に低い主な切り捨て誤差係数を取得します。

  • エラー係数が低い次数5の補間を生成します。

これらの係数は非常に低いため、ユーザーが使用する可能性のある許容誤差のある多くの問題では、6次として測定されます。彼らの論文は、安価な関数呼び出しの場合、これはDP5でRKF5とほぼ同じ量(Fehlberg法)でDP5よりも効率的である可能性があることを示しています。

2と2を組み合わせて見ると、次のようになります。ちょっと待ってください、Shampineは、MATLAB ODEスイートを開発したのと同じ人物です。これは、BS5ペアのペーパーが公開された後で、MATLAB ode45がBS5ペアを使用しないのはなぜですか?1つの理由は、BS5ペアがリリースされる前にほとんど行われたことです。もう1つの理由は、このode45機能が時間を最小限にするために開発されたためです。BS5ペアの方が効率的です(つまり、精度が低くなります)が、ode45十分なプロットを作成するのに十分な誤差を持つことです。これは、大きなステップを処理するために、各ステップの間に2つの追加の補間されたソリューションも生成することを意味します。DP5メソッドの場合、「無料」の次数4の補間があるため、これはBS5を使用するよりもはるかに高速です。適度な許容誤差でも「十分に正確」であるため、この方法は標準として設定されています。インタラクティブコンピューティングを行うときにBS5よりも標準のユーザーエクスペリエンスが向上するためです(この選択はコンテキスト固有でした)。

チトラウス4/5

ここでは、1つ少ない人々が知っています。これは、この論文で導き出されたものです。これは、DP5メソッドよりも少ない仮定を使用して導出され、より低い主切捨て誤差係数を持つペアを取得しようとします。そのテストでは、これを達成すると述べています。また、DP5メソッドのような自由次数4の補間があります。

数値テスト

数値パッケージDifferentialEquations.jlを作成して、Juliaのかなり包括的なソルバーセットにしました。ウォーパスに沿って、100以上のルンゲクッタ法を実装し、手作業で最適化しました。手で最適化された3つのインテグレーターは、DP5、BS5、およびTsit5メソッドです(私はCK5を実行しませんでした。これは、裏話で述べたように、主なケースは、一種のスティッフな問題の場合です。それらを処理するより良い方法は、 DP5 / BS5を使用して、必要に応じてLSODEのような方法でスティッフなソルバーに切り替える方法ですが、これは別の時代の話です)(それらが最適に近いことを確認する1つの方法は、これらのメソッドがHairer dopri5実装よりも高速であることです。少なくともまともな実装です)。多くのRunge-Kuttaメソッド間の非スティッフな方程式の検定ベンチマークフォルダにあります。続けてさらに追加しますが、線形ODEと3体問題の作業精度の図からわかるように、DP5とTsit5の方法を測定すると、ほぼ同じ効率が得られ、線形ODEでBS5の方法よりも優れています。一方、Tsit5の背後にあるThree-Body問題でほぼ同じであるのはDP5とBS5です。この情報から、少なくとも今のところ、以前の推奨事項に一致するDP5メソッドをデフォルトとして解決しました。これは将来のテストで変わる可能性があります(またはベンチマークを追加することもできます。お気軽に貢献してください。または、この作業にさらにサポートを与えるためにリポジトリにスターを付けてください)。


結論

結論として、次数5のペアは次のようになります。

  • Dormand-Prince 4/5ペアは、主要なトランケーションエラー係数の点で十分に最適化されており、安価な次数4の補間を備えているため、適切なプロットを高速に作成できるため、優れた推奨ペアです。

  • Cash-Karpペアには、より厳しい方程式をより適切に処理するために、より多くの制約があります。ただし、完全な利点を得るには、5つの埋め込みメソッドで完全なアルゴリズムを使用する必要があります。

  • Bogacki&Shampine Order 5メソッドは、関数呼び出しごとにエラーを生成するという点で最も効率的です(二重のエラー推定器があるため、より難しい問題ではおそらくより効果的です)が、これにより、より大きなタイムステップをとることができます。ただし、滑らかなプロットを作成したいだけの場合は、この方法に対抗する必要があります。許容値を低くする(したがって、DP5よりも時間がかかりますが、エラーは少なくなります)か、より多くの補間ステップを使用します。結局のところ、これはインタラクティブアプリケーションには向いていないかもしれませんが、一部の科学計算アプリケーションには向いているかもしれません。

  • Tsitorous 4/5。かなり最近(2011年)に開発され、直接比較でDP5を打ち負かしました。私のテストは、それがDP5よりもはるかに優れていると信じる理由を私に与えませんでした。今や、それは新しい標準的な方法として考えられるべきですが、将来のテストはそれを支持し始めるかもしれません。

編集する


Tsit5の実装を改善しました。現在、ほとんどのテストでは、DifferentialEquations.jlとHairer dopriの両方の実装でDP5よりも優れています(DifferentialEquations.jlの実装が実際には高速で、Tsit5の実装に役立ちます)。私は今、これをデフォルトの注文4/5メソッドとして推奨しています。


1

2つの積分器を比較することに興味がある場合は、

dqdt=pdpdt=q

初期値は、です。次にエラーをプロットします、D T = 0.1(q,p)=(1,0)dt=0.1

dq=qcos(t);dp=p+sin(t)

妥当な範囲(0から100、全体で1000タイムステップ)の場合、誤差がより小さい積分器を選択します。この高調波発振器テストでは、ほとんど労力をかけることなく、位相と振幅のエラーが表示されます。t

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