さまざまなインテグレーターの長所と短所[非公開]


29

ゲームで物理学などを作成する場合、インテグレーターが必要です。Verlet統合では、オイラー統合に代わる優れた代替手段としていくつかの場所を挙げています。例えば、トーマス・ヤコブセンによる有名な文書で。ただし、この記事ではグレンフィードラーは次のように書いています。

存在するさまざまなインテグレーターの膨大な配列を紹介するのではなく、私は追いかけて、ベストを尽くします。このインテグレーターは、R​​unge Kutta Order 4インテグレーター、別名RK4と呼ばれます。

したがって、特効薬はありません。さまざまなインテグレーターの長所と短所は何ですか?シンプルさ、速度、精度、安定性などに関して、どのインテグレーターがどのタイプのゲームに最も適していますか?Verlet、RK4などをいつ使用しますか?オイラーを使用する必要がありますか?


あなたが空想するSOの答えがありますstackoverflow.com/questions/2769466/…–
teodron

リンクをありがとう。私はすでにそれを知っています。
paldepind

回答:


27

両方の方法の長所と短所:

RK4の長所:

  1. 精度(より良い近似シリーズのおかげで、4次の精度が得られます)
  2. 人工的/固有に誘導された減衰(暗黙の方法に似ている)が安定性を追加します(一方、単純なオイラーステップはそうではありません-実際には逆になり、システムを構築してカオスに突入させる可能性のあるゴーストエネルギーを導入します)

RK4の短所:

  1. 計算コスト:暗黙的な方法やハイブリッドIMEXメソッドと比較してそれほど厳しいものではありませんが、RK4はより多くの関数評価を必要とするため、明示的なオイラーよりも4倍高価です。これは、最適化の最先端を目指すときに表示されます。
  2. まだ不安定です:関係する力の種類によっては、RK4はオイラーと同じくらい不安定になる可能性があります。平均して、RK4はもう少し安定しており、その付与された減衰「スキル」からこの利点を引き出す傾向があります。
  3. 非シンプレクティック:数値減衰にはコストがかかります-エネルギー/体積などのシステムをシミュレートすることはできません。損失は​​、時間の経過とともに目に見える効果を与えるべきではありません(例:分子動力学、ポテンシャル場由来の力、変分問題)

Verlet Pro:

  1. オイラーステップの1〜2倍の複雑さ(Verletフレーバーに応じて:位置または速度)。
  2. シンプレクティック:内部エネルギーを節約します
  3. 二次精度:多くのゲームは高精度の浮動小数点の結果を必要とせず、二次はゲームシナリオの目を楽しませますそれは悪いことではありません)

Verletの短所:

  1. 安定しているが、それでも:おそらく安定性の面で最高の明示的方法。システムに厳しい制約が追加されると優位に立つ傾向があり、したがって、位置ベースのダイナミクスエンジンに投影制約を実装する際の頭痛が少なくなります。システムが大きな外力で摂動し、減衰/摩擦が追加されない場合、無限に始まります。それでも、内部(バネ)力の大きさには一定の数値的に課せられた制限がありますが、それらはRK4ができることよりも平均して高いです
  2. 低い精度:高精度の推定が必要な場合は役に立ちません
  3. 一部のシミュレーションでは、平均してRK4よりも短い時間ステップが必要です(RK4はその精度と内部減衰の両方の恩恵を受けます)

どちらを使用するかは、シナリオによって異なります。剛性と大きな外力と仮想エネルギーが問題になる場合は、説明/タイトルに「暗黙の」単語を含む他の方法を検討してください。


一部の著者/本は、Verletが実際に派生するシンプレクティックオイラー法(またはオイラークローマー)と呼ばれる実際の明示的なオイラーインテグレーターに対して半暗黙オイラーという用語を使用していることに注意してください。Verletは、「跳躍法」とも呼ばれています。Velocity Verletと中点法は、タイムステップの推定がt + 0.5*dtは、予測子修正子のようなステップに必要です。IMEXメソッド(implicit-explicit)は、2つの類似しているが同一ではないアプローチに名前を付けるためにも使用されます。暗黙的な更新ステップで速度を指定し、明示的な方法で位置を更新します(これは、剛性部分が加速度計算に最も影響を与えるため、IMEXクラスのメソッドに当てはまるハイブリッド半暗黙メソッドです)。暗黙的な方法はより煩雑であり、構成全体に対して連立非線形方程式のシステムを解く必要があります。暗黙のメソッドは、変形可能なボディに使用され、通常、分離されたリジッドボディには使用されません。

コメントの1つで述べたように、可能であればオイラーを使用しないでください。中間点法、半陰的オイラー、または同じ費用で位置-Verletを使用します。それらはすべて、明示的なオイラー積分器よりもわずかに高い精度とかなり高い安定性を備えています。

お勧めのミニ比較読み:

http://wiki.vdrift.net/Numerical_Integration


1つの観察:両方のVerletバリアントをコーディングして、フレームの更新ごとに1回だけ加速を評価できます。
テオドロン

1
答えてくれてありがとう!私が探していたもの。
-paldepind

3

オイラーの実装は非常に高速になる傾向がありますが、他の実装よりも安定性がはるかに劣ります。Runge KuttaはEulerよりも低速ですが、はるかに正確で安定しています。

私はVerletの統合についてあまり詳しくないので、オイラーやルンゲ・クッタとどのように重なるかわかりません。

シミュレーションをより正確に、または数値的に証明する必要がある場合は、2つのうちRunge Kuttaの方が優れています。

シンプルなゲームに高速で低コストの物理学が必要な場合は、オイラーがより良い選択です。


2
ルンゲ・クッタは、オイラーよりはるかに安定している。それは(..まだ予測と訂正のビットではなく)8フレームあたりの時間の代わりに、1を行って、まだオイラーのforums.evilmana.com/game-programming-theory/...
teodron

2
「安定」するために必要なものに依存します。おそらく、私は詳述する必要があります、ルンゲクッタはオイラーよりも数値的に安定しています。 farside.ph.utexas.edu/teaching/329/lectures/node35.html
ティモシー

3
私が理解できる限り、VerletがEulerよりも遅い理由はありません。したがって、Verlet Eulerに比べて速度の利点はなく、さらに正確で安定しています。したがって、オイラーが高速で単純な物理学に最適であるというあなたの主張は間違っていると思います。
-paldepind

4
ここに、精度の大きな違いを示すブログ投稿があります:kahrstrom.com/gamephysics/2011/08/03/euler-vs-verlet
paldepind

2
トランスフォーマーの最後のレベル(PS2、2004)では、実装したフライトモデルは、フレームごとに2000回更新したオイラー積分器を使用しました。(もちろん、超音速に加速され、曲がった重力場内に配置されたかなり現実的な飛行モデルであったため、安定性の要件はかなり厳しいものでした。私はそれで逃げることができました)。オイラーで余分な反復をスローすることは、多くの場合、別のイテレーターに切り替えるよりもはるかに簡単です。
トレバーパウエル

1

何よりもまず、より高度な統合スキームを使用する直接の必要性を経験するまで、オイラーを使用する必要があると思います。迅速かつ簡単に実装できます。

決して止まらないバネのシステムなどの安定性の問題が発生した場合、またはシミュレーションに高レベルの精度が必要な場合は、他の実験を開始してください。

上記で見たことのないものは、実装が非常に簡単で、追加の統合手順が1つだけ必要な中点法です。


1
私はVerletだけのシンプルで実装するのは簡単だと思う
paldepind

私はそれを自分で使ったことはありませんが、私が理解していることからあなたはおそらく正しいでしょう。
ミカエルヘグストローム
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.