修正から始めましょう。いいえ、odeint
シンプレクティックインテグレーターはいません。いいえ、シンプレクティック統合はエネルギーの節約を意味しません。
シンプレクティックとはどういう意味ですか、いつ使用しますか?
まず、シンプレクティックとはどういう意味ですか?シンプレクティックとは、解がシンプレクティック多様体上に存在することを意味します。シンプレクティック多様体は、2形式で定義される解の集合です。シンプレクティック多様体の詳細はおそらく数学的ナンセンスのように聞こえるので、その要点はそのような多様体上の2つの変数セット間に直接関係があるということです。これが物理学にとって重要な理由は、ハミルトニアンの方程式が自然に解が位相空間のシンプレクティック多様体に存在し、自然な分割が位置および運動量成分であるためです。真のハミルトニアン解では、その位相空間経路は一定のエネルギーです。
シンプレクティック積分器は、その解がシンプレクティック多様体に存在する積分器です。離散化エラーのため、ハミルトニアンシステムを解くとき、多様体上で正確な軌道を正確に取得できません。代わりに、その軌道自体は、真の軌道から次数摂動します。その後、この軌跡の経時的な数値誤差による線形ドリフトがあります。通常の積分器は、2次(またはそれ以上)のドリフトを持つ傾向があり、この位相空間パス(ローカルのみ)についてのグローバルな保証はありません。NO(Δ Tn)n
これが意味する傾向があるのは、シンプレクティック積分器は、このドリフトの欠如とこれによりほぼ周期性が保証されるため、通常の積分器よりも長時間のパターンをよりよく捕捉する傾向があることです。このノートブックは、ケプラー問題に関するこれらのプロパティをよく表示します。最初の画像は、ソリューションの周期的な性質について私が話していることを示しています。
これは、Kahanの6次シンプレクティック積分器とDifferentialEquations.jlのLiを使用して解決されました。エネルギーは正確に保存されていないことがわかりますが、その変動は摂動解多様体が真の多様体からどれだけ離れているかに依存します。しかし、数値解法自体はシンプレクティック多様体上にあるため、ほぼ正確に周期的であることがわかり(ある程度の線形数値ドリフトがあります)、長期積分に対して非常にうまく機能します。RK4で同じことを行うと、災害が発生する可能性があります。
問題は、数値解に真の周期性がないため、時間の経過とともにドリフトする傾向があることです。
これは、シンプレクティックインテグレーターを選択する真の理由を強調しています。シンプレクティックインテグレーターは、シンプレクティックプロパティ(ハミルトニアンシステム)を持つ問題の長期積分に適しています。それでは、いくつかのことを見ていきましょう。シンプレクティック問題であっても、シンプレクティックインテグレータが常に必要なわけではないことに注意してください。この場合、適応5次のルンゲクッタ法で問題ありません。ここにありTsit5
ます:
2つのことに注意してください。1つは、位相空間プロットで実際のドリフトを確認できないほど十分な精度が得られることです。ただし、右側にこのエネルギードリフトがあることがわかります。したがって、十分に長い積分を行っている場合、このメソッドは周期的プロパティを使用した解法と同様に機能しません。しかし、それは疑問を提起します。それは、非常に正確に統合するだけでなく、効率的にどのように変化するのでしょうか?まあ、これは少し確かではありません。でDiffEqBenchmarks.jlあなたはこの質問を調査し、いくつかのベンチマークを見つけることができます。たとえば、このノートブック4倍ボソンモデルからのハミルトニアン方程式システムでのエネルギーエラーとランタイムを比較し、非常に高い精度が必要な場合は、非常に長い積分時間でも、高次のRKまたはRunge-Kutta Nystromを使用する方が効率的であることを示します( RKN)メソッド。シンプレクティック特性を満たすために、インテグレータは効率をいくらか放棄し、ほとんど時間ステップを固定する必要があるため、これは理にかなっています(後者に向かって進んでいる研究がありますが、それほど遠くはありません)。
さらに、これらのノートブックの両方から、標準的な方法を採用して、各ステップ(または数ステップごと)でソリューションマニホールドに投影できることにも注意してください。これは、DifferentialEquations.jl ManifoldProjectionコールバックを使用した例が行っていることです。保全法則は保証されていますが、各ステップで暗黙的なシステムを解決するための追加コストが発生していることがわかります。また、完全に暗黙的なODEソルバーまたは特異質量行列を使用して保存方程式を追加することもできますが、これらの方法はトレードオフとして計算コストが高くなります。
要約すると、シンプレクティックインテグレーターに到達したい問題のクラスは、シンプレクティック多様体(ハミルトニアンシステム)に解を持ち、非常に正確な(許容誤差<1e-12
)を持つように計算リソースを投資したくないものです。ソリューションおよび正確なエネルギー/等を必要としません。保全。これは、すべてが長期的な統合プロパティに関するものであることを強調しているので、いくつかの文献が示唆するように、それらをすべて自由に群がらせるべきではありません。しかし、彼らはまだ宇宙物理学のような多くの分野で非常に重要なツールであり、不合理な精度を持たずに十分に速く解く必要がある長い時間の統合があります。
シンプレクティックインテグレーターはどこにありますか?どんなシンプレクティックインテグレーターが存在しますか?
通常、シンプレクティックインテグレータには2つのクラスがあります。シンプレクティックRunge-Kutta積分器(上記の例に示されているもの)があり、シンプレクティックプロパティを持つ暗黙のRunge-Kuttaメソッドがあります。@origimboが言及しているように、シンプレクティックRunge-Kuttaインテグレーターは、位置と運動量の部分を別々に処理できるように、パーティション構造を提供する必要があります。ただし、コメントに反して、暗黙のルンゲクッタ法はこれを必要とせずにシンプレクティックですが、代わりに非線形システムを解く必要があります。システムが堅くない場合、この非線形システムは関数反復またはアンダーソン加速で解決できるため、これはそれほど悪くはありませんが、シンプレクティックRKメソッドはおそらく効率のために優先されるはずです(それは '
とは言っても、odeintにはこれらのファミリーのいずれのメソッドもありません。そのため、シンプレクティックインテグレーターを探している場合には良い選択ではありません。Fortranでは、Hairerのサイトに使用できる小さなセットがあります。Mathematicaにはいくつかの機能が組み込まれています。GSL ODEソルバーには、IIRCがシンプレクティックである暗黙のRKガウスポイントインテグレーターがありますが、それがGSLメソッドを使用する唯一の理由です。
しかし、シンプレクティックインテグレーターの最も包括的なセットは、ジュリアのDifferentialEquations.jlにあります(これは上記のノートブックで使用されたことを思い出してください)。使用可能なシンプレクティックルンゲクッタ法のリストはこのページにあり、暗黙のミッドポイント法もシンプレクティックであることがわかります(暗黙のルンゲクッタ台形法は可逆であるため「ほぼシンプレクティック」と見なされます)。最大のメソッドセットがあるだけでなく、オープンソース(コードとそのテストを高レベル言語で見ることができます)であり、多くのベンチマークがあります。物理的な問題を解決するためにそれを使用するための良い入門ノートブックは、このチュートリアルノートブックです。ただし、もちろん、最初のODEチュートリアルからパッケージの使用を開始することをお勧めします。
一般に、このブログ投稿で数値微分方程式スイートの詳細な分析を見つけることができます。それは非常に詳細ですが、多くのトピックをカバーする必要があるため、それぞれこれよりも詳細ではありませんので、どんな形でも拡張するように気軽に依頼してください。