Dans ce commentaire, j'ai écrit:
... intégrateur SciPy par défaut, qui, je suppose, utilise uniquement des méthodes symplectiques.
dans lequel je me réfère à SciPy's odeint
, qui utilise soit une "méthode non rigide (Adams)" ou une "méthode rigide (BDF)". Selon la source :
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.
"""
Voici un exemple où je propage l'orbite d'un satellite autour de la terre pendant trois mois juste pour montrer qu'il se précède comme prévu.
Je crois que les intégrateurs non symplectiques ont la propriété indésirable qu'ils auront tendance à ne pas conserver l'énergie (ou d'autres quantités) et sont donc indésirables en mécanique orbitale par exemple. Mais je ne sais pas exactement ce qui fait qu'un intégrateur symplectique est symplectique.
Est-il possible d'expliquer ce qu'est la propriété (qui rend un intégrateur symplectique symplectique) d'une manière simple et (assez) facile à comprendre mais pas inexacte? Je demande du point de vue de la façon dont l'intégrateur fonctionne en interne , plutôt que de ses performances lors des tests.
Et ma suspicion est-elle correcte qui odeint
n'utilise que des intégrateurs symplectiques?
odeint
un wrappoer Python pour des codes source assez anciens, établis et bien référencés (question éditée, références ODEPACK et LSODA) bien que j'admette certainement l'utiliser en mode boîte noire. Mon exemple lié montre que le vecteur d'état 6D se compose de trois positions et de trois vitesses.Réponses:
Permettez-moi de commencer par des corrections. Non,
odeint
n'a pas d'intégrateurs symplectiques. Non, l'intégration symplectique ne signifie pas la conservation de l'énergie.Que signifie symplectique et quand devez-vous l'utiliser?
Tout d'abord, que signifie symplectique? Symplectique signifie que la solution existe sur une variété symplectique. Une variété symplectique est un ensemble de solutions qui est défini par une forme à 2. Les détails des variétés symplectiques sonnent probablement comme un non-sens mathématique, donc l'essentiel est qu'il existe une relation directe entre deux ensembles de variables sur une telle variété. La raison pour laquelle cela est important pour la physique est que les équations de l'hamiltonien ont naturellement que les solutions résident sur un collecteur symplectique dans l'espace des phases, le fractionnement naturel étant les composants de position et de quantité de mouvement. Pour la vraie solution hamiltonienne, ce chemin d'espace de phase est une énergie constante.
Cela signifie que les intégrateurs symplectiques ont tendance à mieux capturer les modèles à long terme que les intégrateurs normaux en raison de ce manque de dérive et de cette garantie quasi-périodique de périodicité. Ce portable affiche bien ces propriétés sur le problème Kepler . La première image montre de quoi je parle avec la nature périodique de la solution.
Cela a été résolu en utilisant l' intégrateur symplectique du 6ème ordre de Kahan et Li de DifferentialEquations.jl . Vous pouvez voir que l'énergie n'est pas exactement conservée, mais sa variation dépend de la distance entre le collecteur de solution perturbé et le collecteur réel. Mais puisque la solution numérique elle-même réside sur une variété symplectique, elle a tendance à être presque exactement périodique (avec une dérive numérique linéaire que vous pouvez voir), ce qui la rend très bien pour une intégration à long terme. Si vous faites de même avec RK4, vous pouvez obtenir un désastre:
Vous pouvez voir que le problème est qu'il n'y a pas de véritable périodicité dans la solution numérique et donc que les heures supplémentaires ont tendance à dériver.
Cela met en évidence la vraie raison de choisir les intégrateurs symplectiques: les intégrateurs symplectiques sont bons sur les intégrations à long terme sur des problèmes qui ont la propriété symplectique (systèmes hamiltoniens) . Passons donc en revue quelques éléments. Notez que vous n'avez pas toujours besoin d'intégrateurs symplectiques même sur un problème symplectique. Dans ce cas, une méthode Runge-Kutta adaptative du 5e ordre peut faire l'affaire. Voici
Tsit5
:Remarquez deux choses. Premièrement, il obtient une précision suffisamment bonne pour que vous ne puissiez pas voir la dérive réelle dans le tracé de l'espace de phase. Cependant, sur le côté droit, vous pouvez voir qu'il y a cette dérive d'énergie, et donc si vous faites une intégration assez longue, cette méthode ne fonctionnera pas aussi bien que la méthode de solution avec les propriétés périodiques. Mais cela soulève la question: comment se comporte-t-il en termes d'efficacité par rapport à une intégration extrêmement précise? Eh bien, c'est un peu moins certain. Dans DiffEqBenchmarks.jl, vous pouvez trouver des repères explorant cette question. Par exemple, ce cahierexamine l'erreur d'énergie par rapport à l'exécution sur un système d'équation hamiltonien à partir d'un modèle quadruple Boson et montre que si vous voulez une très grande précision, même pour des temps d'intégration assez longs, il est plus efficace d'utiliser simplement un RK d'ordre élevé ou Runge-Kutta Nystrom ( RKN). Cela a du sens car pour satisfaire la propriété symplectique, les intégrateurs abandonnent une certaine efficacité et doivent à peu près être un pas de temps fixe (il y a des recherches qui progressent dans ce dernier mais ce n'est pas très loin).
De plus, notez dans ces deux blocs-notes que vous pouvez également prendre une méthode standard et la projeter à nouveau dans le collecteur de solutions à chaque étape (ou toutes les quelques étapes). C'est ce que font les exemples utilisant le rappel DifferentialEquations.jl ManifoldProjection . Vous voyez que les lois de conservation des garanties sont respectées mais avec un coût supplémentaire de résolution d'un système implicite à chaque étape. Vous pouvez également utiliser un solveur ODE entièrement implicite ou des matrices de masse singulières pour ajouter des équations de conservation, mais le résultat final est que ces méthodes sont plus coûteuses en termes de calcul comme compromis.
Donc, pour résumer, la classe de problèmes que vous souhaitez atteindre pour un intégrateur symplectique sont ceux qui ont une solution sur une variété symplectique (systèmes hamiltoniens) où vous ne voulez pas investir les ressources de calcul pour avoir une très exacte (tolérance
<1e-12
) solution et n'ont pas besoin d'énergie exacte / etc. préservation. Cela met en évidence qu'il s'agit de propriétés d'intégration à long terme, vous ne devriez donc pas vous contenter de toutes les veuilles comme le suggère la littérature. Mais ils sont toujours un outil très important dans de nombreux domaines comme l'astrophysique où vous avez des intégrations à long terme que vous devez résoudre suffisamment rapidement sans avoir une précision absurde.Où puis-je trouver des intégrateurs symplectiques? Quels types d'intégrateurs symplectiques existent?
Il existe généralement deux classes d'intégrateurs symplectiques. Il y a les intégrateurs symplectiques de Runge-Kutta (qui sont ceux montrés dans les exemples ci-dessus) et il existe des méthodes implicites de Runge-Kutta qui ont la propriété symplectique. Comme le mentionne @origimbo, les intégrateurs symplectiques de Runge-Kutta exigent que vous leur fournissiez une structure partitionnée afin qu'ils puissent gérer séparément la position et la quantité de mouvement. Cependant, contrairement au commentaire, les méthodes implicites de Runge-Kutta sont symplectiques sans nécessiter cela, mais nécessitent plutôt la résolution d'un système non linéaire. Ce n'est pas trop mal car si le système n'est pas rigide, ce système non linéaire peut être résolu avec une itération fonctionnelle ou une accélération d'Anderson, mais les méthodes RK symplectiques devraient toujours être préférées pour l'efficacité (c'est ''
Cela dit, odeint n'a pas de méthodes de l'une ou l'autre de ces familles , donc ce n'est pas un bon choix si vous recherchez des intégrateurs symplectiques. À Fortran, le site de Hairer a un petit ensemble que vous pouvez utiliser . Mathematica en a intégré quelques-uns . Les solveurs GSL ODE ont des intégrateurs de points gaussiens RK implicites dont l'IIRC est symplectique, mais c'est à peu près la seule raison d'utiliser les méthodes GSL.
Mais l'ensemble d'intégrateurs symplectiques le plus complet se trouve dans DifferentialEquations.jl dans Julia (rappelez-vous que cela a été utilisé pour les cahiers ci-dessus). La liste des méthodes Runge-Kutta symplectiques disponibles se trouve sur cette page et vous remarquerez que la méthode implicite midpoint est également symplectique (la méthode implicite Runge-Kutta Trapezoid est considérée comme "presque symplectique" car elle est réversible). Non seulement il possède le plus grand ensemble de méthodes, mais il est également open-source (vous pouvez voir le code et ses tests dans un langage de haut niveau) et a beaucoup de repères . Un bon cahier d'introduction pour l'utiliser pour résoudre des problèmes physiques est ce cahier de tutoriel. Mais bien sûr, il est recommandé de commencer avec le package via le premier didacticiel ODE .
En général, vous pouvez trouver une analyse détaillée des suites d'équations différentielles numériques dans ce billet de blog . C'est assez détaillé, mais comme il doit couvrir beaucoup de sujets, il le fait chacun avec moins de détails que cela, alors n'hésitez pas à demander qu'il soit développé de quelque manière que ce soit.
la source
En termes numériques, un intégrateur symplectique agit de la même manière, conservant également cette forme zone / deux. À son tour, cela signifie qu'il existe un «hamiltonien numérique» conservé (qui peut ne pas être [lu «n'est pas»] identique à l'exact). Notez que la stabilité n'est pas la même chose que la précision, de sorte que la plupart des avantages des méthodes symplectiques viennent lors de l'intégration pendant de très longues périodes (par exemple, votre méthode peut rapidement placer un satellite du mauvais côté de la Terre, sans jamais lui permettre de se désintégrer). il).
la source