数値積分器に関して「シンプレクティック」とは何を意味し、SciPyのodeintはそれらを使用しますか?


25

このコメントで私は書いた:

...デフォルトのSciPyインテグレータ。シンプレクティック法のみを使用していると仮定しています。

odeintここでは、「非スティッフ(Adams)メソッド」または「スティッフ(BDF)メソッド」のいずれかを使用するSciPyを参照しています。ソースによると:

def odeint(func, y0, t, args=(), Dfun=None, col_deriv=0, full_output=0,
           ml=None, mu=None, rtol=None, atol=None, tcrit=None, h0=0.0,
           hmax=0.0, hmin=0.0, ixpr=0, mxstep=0, mxhnil=0, mxordn=12,
           mxords=5, printmessg=0):
    """
    Integrate a system of ordinary differential equations.

    Solve a system of ordinary differential equations using lsoda from the
    FORTRAN library odepack.

    Solves the initial value problem for stiff or non-stiff systems
    of first order ode-s::
        dy/dt = func(y, t0, ...)
    where y can be a vector.
    """

ここにある私は予想通り、それは歳差運動することを示すために3ヶ月の地球の周りの衛星の軌道を伝播します。

私はと信じている非シンプレクティックインテグレータは、彼らが節約エネルギー(または他の量)しない傾向があるということは望ましくない性質を持っているので、例えば軌道力学には望ましくありません。しかし、シンプレクティック・インテグレーターをシンプレクティックにするのは正確にはわかりません。

プロパティが何であるか(シンプレクティックインテグレーターをシンプレクティックにする)を簡単かつ(かなり)理解しやすいが不正確ではない方法で説明することは可能ですか?積分器がテストでどのように機能するかではなく、内部的どのように機能するかという観点から質問しています。

そして、odeintシンプレクティックインテグレーターのみを使用する私の疑いは正しいですか?


4
強力な経験則として、位置方程式と運動量方程式を分離する必要がある場合にのみ、ブラックボックス積分器がシンプレクティックであることを期待する必要があります。
オリギンボ

@origimboありがとう。これらは、odeintかなり古く、確立され、よく参照されているソースコード(編集された質問、ODEPACKとLSODAを参照)のPythonラッパーです。リンクされた例では、6D状態ベクトルが3つの位置と3つの速度で構成されていることを示しています。
うーん

11
ODEPACKおよびLSODAのODEインテグレーターはシンプレクティックインテグレーターではありません
ブライアン

2
これは、2つの非常に単純なソルバー、オイラーとシンプレクティックオイラー:idontgetoutmuch.wordpress.com/2013/08/06/…を比較した実際の例です。
-idontgetoutmuch

2
Hairer、Nørsett、およびWannerによる本は、シンプレクティック法の良い説明を提供します。特に図16.1と、ここの図をご覧ください
JM

回答:


47

修正から始めましょう。いいえ、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チュートリアルからパッケージの使用を開始することをお勧めします。

一般に、このブログ投稿で数値微分方程式スイートの詳細な分析を見つけることができます。それは非常に詳細ですが、多くのトピックをカバーする必要があるため、それぞれこれよりも詳細ではありませんので、どんな形でも拡張するように気軽に依頼してください。


10
この回答で、Stack Exchange Jackpotにヒットしたようです!これは私にとって完璧な答えです。私はすぐにそれのいくつかを理解し、さらに読むことを切望していない部分を理解しています。この回答を完全に入手し、他の有益で有益なリンクを含めていただいたことに本当に感謝しています。
うーん

数学的詳細に入る前に、大まかに言ってシンプレクティック体積の保存を意味しますよね?
ミゲル

2
FTR、適応5次ルンゲクッタがRK4よりもはるかに優れたパフォーマンスを発揮する理由は、高次ではなく、より適切なステップサイズを選択するためです。RK4のパフォーマンスが非常に悪いのは、主に近地点でのステップサイズが不適切に大きいためです。ステップサイズが半分の同じソルバーは、はるかに優れたソリューションを提供します。(ちょうど、これはまったく必要ではない遠地点の周りの軌道を細かく解決するのに多くの時間を浪費するでしょう。)
leftaroundabout

1
優れた博覧会。副次的な質問として:OPはPythonへの参照で始まります-リンクされたJuliaの例の行に沿って、推奨されるPythonチュートリアル/パッケージはありますか?
ケツァルコアトル

1
これらの種類のインテグレーターについて知っている唯一のPythonパッケージはdiffeqpyで、READMEには記載されていませんが、これらすべての同じメソッドにアクセスし、そのパッケージを使用してPythonでこれを書き直すことができます。
クリスラッカッカス

14

Chris Rackauckasの答えを補完するために、数学的なナンセンスとあなたがほぼ確実に知っていることを述べるために、座標とと関数を持つ記述がある場合、力学系はハミルトニアンです。よう および このモーションは、軌道に沿っての値を保存しますが、追加のプロパティもあります。つまり、マッピングを定義する場合 pqH(p,q)

dqdt=+Hp
dpdt=Hq.
H
p(t),q(t)=ϕt(p(t0),q(t0))
このマッピングは、。とが1次元である問題の場合、これは、位相空間上の閉曲線の内側の領域が保存されていると言うことができます。これにより、軌道の「ボール」が互いに「近く」に留まる必要があるため、あらゆる種類の優れた安定性が確保されます。dpdqpq

数値の観点から見ると、シンプレクティック積分器は同じように機能し、この面積/ 2の形式も保存します。言い換えると、これは保存された「数値ハミルトニアン」があることを意味します(正確なものと同じではないかもしれません)。安定性は精度と同じではないため、シンプレクティック法の利点のほとんどは、非常に長い時間統合するときに発生します(たとえば、メソッドは、地球の反対側に衛星を急速に配置しますが、それ)。


これありがとう!私は今、私の賃金等級以上の言葉を使用します。軌道のnボールは、3体シミュレーションの場合のように分岐点に近い場合、リスクが高くなります。cf. Doedel等。2007年、国際 J.分岐とカオス、v 17、no。8(2007)2625–2677どうやってやったの?またieec.cat/hosted/web-libpoint/papers/...
uhoh

2
読者が数学的詳細に気付いていない限り、安定性についての言及は誤解を招きます。ボリュームの保存は個々の軌跡が近いままであることを意味しないからです。
ミゲル

1
@Miguelこれは、数学的な詳細を読まない読者がどちらの場合も損する状況の1つだと思いますが、通常の数値主義者の精度、安定性、および計算効率のトロイカの観点から、安定性を強調すると主張します利点は便利です。意図的に不正確ではない、より良いものを考えられるなら、書き換えの提案を受け入れてうれしいです。
オリギンボ

22

1
@Miguel:しかし、粒子の塊は2つ以上の部分に分割できます。その総量は一定に保たれます。
ウルフギャングバンガース
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.