Divergence des Integrateurs

Divergence des Integrateurs

par Philippe Andreas Gigon,
Number of replies: 5

Bonjour

J'ai remarqué une divergence des toupies qui utilisent les formules d'évolution donné sur la page 6 (alors toupie generale) en combinaison avec Runge Kutta et l'integrateur Euler-cromer. Au début j'ai pensé que c'était une faute d'implementation des integrateurs comme ce problème n'aparaisse pas avec Newmark, mais je pense le problème est au niveau des formules données sur la page 6. On a la condition que si theta = 0, alors on calcule les accelerations d'une manière différent pour éviter la division par sin(theta). J'ai implementé la condition que abs(theta + precision) >0 avec precision = 10e-6 mais il me semble que ceci ne suffit pas comme condition, surtout pour l'intégrateur Runge Kutta qui fait plusieurs fois appel à la méthode f et donc les erreurs vont s'agrandir à chaque appel (division par sin(theta)).
Je pense que Newmark ne pose pas des problèmes comme il a un mécanisme de contrôle.

Est-ce que vous une idée pour éviter ce défaut? J'ai voulu juste augmenter la borne en posant comme condition theta > 0.05 mais ceci me semble assez arbitraire et on n'obtient plus les bonnes valeurs.

Merci pour votre réponse

In reply to Philippe Andreas Gigon

Re: Divergence des Integrateurs

par Deleted user,

Hello!

Quand tu parles de divergence des intégrateurs: est-ce que
- les intégrateurs donnent des valeurs légèrement différentes au début et que l'écart se creuse au cours de la simulation?
- est-ce que la simulation "explose" dans les deux cas? Ou les intégrateurs ont vraiment des résultats complètement différents?

Divergence se réfère plutôt à une simulation instable qui "explose", mais à la formulation de ta question, j'ai l'impression que tu te trouves dans le 1er cas. Peux-tu confirmer? :)

La condition avec laquelle tu vérifies si ton angle est trop faible va te jouer des tours dans sa formulation actuelle! Je te laisse réfléchir à ce qu'il faut modifier (c'est peut-être la source de ton problème).

Augmenter la tolérance est une solution si la simulation est instable, mais essaye de faire sans d'abord.

In reply to Deleted user

Re: Divergence des Integrateurs

par Philippe Andreas Gigon,

Non en faite les trois intégrateurs se comportent au début de la simulation comme il faut, ils donnent les mêmes valeurs comme donnée dans les exercices p9 et p13 (alors pour le cône simple fixé) et les toupies avec les différent types d'integrateurs sont congruents pendent 3 - 5 secondes au début de la simulation, et a partir d'un certain moment (quand theta deviennt de plus en plus petit) d'abord les vitesses angulaires explosent et ensuite les toupies font une saute.

J'ai déjà essayé de faire quelquechose de sorte à utiliser la formule pour theta égale zéro si theta < 0.05 mais ceci donne des chooses encore plus bizarres (le toupie va se stabiliser et tourner infiniment) ou d'augmenter theta par des petits pas si l'écart entre la nouvelle position et l'ancienne deviennt trops grands mais ceci cause qu'on n'a plus les bonnes valeurs.

merci pour ta réponse

In reply to Philippe Andreas Gigon

Re: Divergence des Integrateurs

par Deleted user,

As-tu fait en sorte que tes angles soient bornés? Ie. pris le modulo 2*pi de ceux-ci à chaque itération? C'est important de le faire, sinon, après quelques rotations, ils deviendront très grand et tu perdras toute précision dans les calculs trigonométriques. Problème d'algèbre floating point, mais il faut y faire attention.

Pour tester theta~0, j'aurais simplement écris if(abs(theta)<precision).

Je ne pense pas que ce soit une faute d'implémentation des intégrateurs si les valeurs au début de la simulation ont l'air correctes.

In reply to Deleted user

Re: Divergence des Integrateurs

par Philippe Andreas Gigon,

Oui on garde les angles dans une plage 0,2Pi, mais je pense que c'est plutôt le défaut des vitesses angulaires qui deviennent enorme.

J'ai ajouté une image d'un déroulement typique. Lorsque theta deviennt assez petit (0.00067 ici) les valeurs calculé pour l'acceleration psi et phi deviennent a chaque étappe du calcul de l'intégrateur Runge-Kutta plus importantes.


In reply to Philippe Andreas Gigon

Re: Divergence des Integrateurs

par Jean-Cédric Chappelier,

pour partager à tous notre discussion de ce matin : il est clair qu'au voisinage d'un point singulier (typiquement à grand gradient) on va avoir des pb d'intégration. Et effectivement éviter le (ou « prendre des précautions » au) voisinage de tels points nécessite des techniques ad-hoc (p.ex. seuil sur theta) ou plus complexes que celles utilisées (p.ex. intégrateurs à pas adaptatifs) qui sortent du cadre de ce projet.

En plus dans ce projet les équations que nous traitons sont hautement non-linéaires donc, non seulement comportent de tels points singuliers, mais en plus divergent vite à leur voisinage.

Dans tous les cas, avoir des « moniteurs » (« surveillants ») de plus haut niveau qui nous alertent sur l'approche de tels points est aussi une bonne chose. Peut être (non testé) dans notre cas que l'observation de l'énergie pourrait être un tel « moniteur » de plus haut niveau.