Simulez des systèmes physiques avec la méthode d'Euler

a marqué ce sujet comme résolu.

Je pense qu'il faudrait plus faire un article dessus ,afin d'expliquer clairement ce que ça représente plutôt que de faire une courte explication qui risque de les embrouiller ou de mal comprendre . Personnellement en Terminale ils avaient essayés de nous expliquer cette notation de manière simple et au final personne n'avait rien compris , j'ai du attendre le supérieur pour la comprendre ^^

+0 -0

Personnellement en Terminale ils avaient essayés de nous expliquer cette notation de manière simple et au final personne n'avait rien compris , j'ai du attendre le supérieur pour la comprendre

Bah en même temps on peut pas dire grand chose à ce niveau. La notation a un sens beaucoup plus profond qu'en apparence quand on s'intéresse à la géométrie différentielle. Mais les pré-requis ne sont pas du tout comparables.

Pour Octodex, typiquement, quand on utilise une notation, on l'introduit. Si je veux utiliser le signe ☃ pour la derivee d'une fonction, j'en ai tout a fait le droit.
Maintenant on ne le fait pas parce que les notations standards sont un support utile a la comprehension et la mise en commun. Ceci dit, les notations utilisees pour une meme chose peut varier d'un domaine a l'autre, d'un pays a l'autre ou bien d'un professeur a l'autre (voir le produit scalaire par exemple).

De fait, la regle c'est simplement d'expliciter d'une facon ou d'une autre la notation que tu utilises, peu importe que ce soit la plus standard du monde. La comprehension par les autres de ce que tu ecris ne doit pas dependre de ta propre experience des notations, surtout lorsqu'elle reste implicite.

+0 -0

Oyez oyez les agrumes !

Je vous annonce avec plaisir la ré-ouverture de la bêta du contenu « Simulez des systèmes physiques avec la méthode d’Euler » ! Je vous souhaite une agréable lecture à l’adresse suivante :

Merci pour votre participation.


Lors de la validation de mon dernier article, je me suis rendu compte d’un problème dans ce tutoriel (merci adri1).

Du coup, j’en profite pour refaire une passe complète, et mettre tout à jour !

Pour l’instant, l’intro est mise à jour, et je suis en train de refaire la première partie (qui est donc en chantier).

+0 -0

Juste quelque remarques mineures en passant.

Le temps est un ensemble continu d’instants, ce qui pose problème aux ordinateurs, car ils ne savent manipuler des entités qu’en nombre fini. Ainsi, lorsqu’on veut résoudre numériquement une équation différentielle, on commence par discrétiser le temps, c’est-à-dire qu’on ne considère que certains instants particuliers, et on ignore ce qu’il se passe en dehors de ces instants.

C’est vrai pour la méthode d’Euler, pas nécessairement vrai pour d’autres. Je pense en particulier aux équations spatiales avec les méthodes d’éléments finis (et spectrales) où on diminue la dimension de l’ensemble dans lequel la fonction vit plutôt que discrétiser l’espace sur lequel elle s’applique. En soit, c’est pas gênant de ne pas aborder ça (au contraire), mais il ne faudrait pas véhiculer la vision un peu trop répandue que les méthodes numériques en général se limitent à discrétiser l’espace de définition.

L’équation différentielle ci-dessous est un exemple correspondant à l’équation-type vue précédemment, en prenant $f(y(t), t) = -y(t) + at$, où $a$ est une constante réelle dont la dimension physique est telle que $y(t)$ et $at$ soient de même dimension.

$$ \frac{\mathrm{d}y}{\mathrm{d}t}(t) + y(t) = at $$

Pour que ton équation soit valable dimensionnellement, il faut que $t$ soit sans dimension, et donc que $a$ soit de la dimension de $y$. Je pense que le plus simple est de laisser tomber la question de la dimension ici.

Sur la partie exemple

On peut donc intuitivement penser que sa vitesse augmentera progressivement, avant d’atteindre une vitesse limite. Pour vérifier cela, modélisons notre problème.

C’est un peu dommage de commencer si bien avec l’intuition physique mais d’embrayer directement sur une intégration numérique bourrin. Une fois que tu as l’équation différentielle, il pourrait être pas mal de se poser pour voir qu’effectivement, il y a une vitesse pour laquelle l’accélération s’annule qui correspond bêtement à l’équilibre entre le poids et les frottements. Une fois que tu as écris ton schéma, tu peux facilement montrer que si ton schéma converge, ce sera forcément sur la bonne vitesse limite. Et là, tu peux embrayer en disant que l’intérêt de l’intégration numérique sera de pouvoir accéder à l’état transitoire (et donc finalement que l’important, ça va effectivement d’avoir le bon état transitoire plutôt que la bonne vitesse finale).

rien de tel que d’enchaîner sur la méthode d’Euler implicite (aussi simple, mais plus stable)

Ahem. Inversion de matrice, tout ça tout ça. :p

+1 -0

Bonjour les agrumes !

La bêta a été mise à jour et décante sa pulpe à l’adresse suivante :

Merci d’avance pour vos commentaires.


Merci pour tes retours adri1, tu as mis le doigt sur des choses intéressantes. J’ai essayé de les intégrer au mieux. :)

Je suis plutôt sur la fin de ma passe de refonte, il me reste un schéma à mettre à jour, et après relecture/amélioration à la marge.

+0 -0

Résoudre notre équation différentielle consiste à déterminer les valeurs prises par une fonction respectant des contraintes de variation données sur un intervalle de temps donné.

Assez mystérieuse comme phrase.

Pour l’équadiff que tu donnes en modèle, pourquoi ne pas te contenter de dire qu’on donne une condition initiale ?

À ce stade, nous nous sommes débarrassés de la continuité du temps en passant du monde des fonctions au monde des suites numériques. Cela pose problème, car pour écrire une équation différentielle, il est nécessaire de dériver. Or, la dérivée est définie comme la limite (si elle existe) du taux d’accroissement, ce qui a du sens seulement pour un temps continu.

Je trouve ça un peu difficile à lire. Peut-être prends plus de temps pour dérouler ce passage ?


Je trouve l’équation

$$y_{k+1} = y_k + f(y_k,t_k) (t_{k+1}-t_k)$$

bien plus compréhensible que ce qui précède. Elle exprime clairement un DL à l’ordre 1, ce qui explique à la fois pourquoi c’est une bonne approximation et pourquoi c’est la plus simple que l’on puisse imaginer.

En plus, il me semble, que cela pourrait permettre de s’éviter un passage sur le changement de l’opérateur diff. En effet, si $y(t)$ est solution, c’est relativement immédiat que :

$$y(t_{k+1}) = y(t_k) + f(y(t_k),t_k) (t_{k+1}-t_k) + o(|t_{k+1}-t_k|)$$

et donc l’approximation consiste ’simplement’ à remplacer $y(t)$ par des valeurs approchées.

On doit aussi à partir de là établir des conditions analytiques simples pour s’assurer que ça reste pas trop loin de la réalité quand on fait une approximation. Des conditions du style $f$ qui a ses dérivées bornées par $K$ donne un pas raisonnable de $T/K^\alpha$.

Ce petite calcul montre ainsi qu’en plus de savoir d’où l’on part (la vitesse initiale), et on sait où l’on va (la vitesse finale).

À priori, c’est pas parce qu’on a un point fixe qu’on converge vers ce point fixe. C’est un peu rapide de dire qu’on connait la vitesse finale, faudrait rajouter le fait que la vitesse est croissante.

En théorie, faire tendre le pas de temps vers zéro permet d’avoir une précision infinie

Sauf si on a un truc chaotique chiant, non?

Assez mystérieuse comme phrase.

Je suis d’accord, je vais la supprimer.

Pour l’équadiff que tu donnes en modèle, pourquoi ne pas te contenter de dire qu’on donne une condition initiale ?

Tu peux expliciter un peu plus ? Je vise un public qui a déjà touché des équations différentielles, mais qui n’est pas forcément très expérimenté avec. Je ne me vois pas en dire moins, ou dire des choses du type "on se donne le problème de Cauchy suivant".

À ce stade, nous nous sommes débarrassés de la continuité du temps en passant du monde des fonctions au monde des suites numériques. Cela pose problème, car pour écrire une équation différentielle, il est nécessaire de dériver. Or, la dérivée est définie comme la limite (si elle existe) du taux d’accroissement, ce qui a du sens seulement pour un temps continu.

Je trouve ça un peu difficile à lire. Peut-être prends plus de temps pour dérouler ce passage ?

Est-ce que tu saurais expliciter en quoi tu trouves ça difficile à lire ?

Je trouve l’équation

$$y_{k+1} = y_k + f(y_k,t_k) (t_{k+1}-t_k)$$

bien plus compréhensible que ce qui précède. Elle exprime clairement un DL à l’ordre 1, ce qui explique à la fois pourquoi c’est une bonne approximation et pourquoi c’est la plus simple que l’on puisse imaginer.

En plus, il me semble, que cela pourrait permettre de s’éviter un passage sur le changement de l’opérateur diff. En effet, si $y(t)$ est solution, c’est relativement immédiat que :

$$y(t_{k+1}) = y(t_k) + f(y(t_k),t_k) (t_{k+1}-t_k) + o(|t_{k+1}-t_k|)$$

et donc l’approximation consiste ’simplement’ à remplacer $y(t)$ par des valeurs approchées.

On doit aussi à partir de là établir des conditions analytiques simples pour s’assurer que ça reste pas trop loin de la réalité quand on fait une approximation. Des conditions du style $f$ qui a ses dérivées bornées par $K$ donne un pas raisonnable de $T/K^\alpha$.

Tout ça est très intéressant, mais le public que je vise ne connaît pas forcément les développements limités. Si c’était le cas, le tutoriel pourrait faire 20 lignes, en vérité.

Cela me gêne d’ailleurs pour la suite, où je sors le concept de développement limité, parce que c’est une forme utile pour comprendre les histoires d’erreurs.

Ce petite calcul montre ainsi qu’en plus de savoir d’où l’on part (la vitesse initiale), et on sait où l’on va (la vitesse finale).

À priori, c’est pas parce qu’on a un point fixe qu’on converge vers ce point fixe. C’est un peu rapide de dire qu’on connait la vitesse finale, faudrait rajouter le fait que la vitesse est croissante.

Honnêtement, je considère dans tous le tutoriel qu’on a toutes les propriétés qui vont bien, ce qui est bien souvent le cas en physique.

En théorie, faire tendre le pas de temps vers zéro permet d’avoir une précision infinie

Sauf si on a un truc chaotique chiant, non?

Holosmos

Je ne sais pas, mais je pars du principe qu’en physique, cela n’arrive presque jamais. :°

Tu peux expliciter un peu plus ? Je vise un public qui a déjà touché des équations différentielles, mais qui n’est pas forcément très expérimenté avec. Je ne me vois pas en dire moins, ou dire des choses du type "on se donne le problème de Cauchy suivant".

Bah pour une équa diff comme tu en donnes l’exemple, le seul paramètre qui peut faire varier la solution c’est une condition initiale. Si tu prescris ta solution sur un intervalle plus grand, tu n’es même plus sûr qu’il existe une solution.

Est-ce que tu saurais expliciter en quoi tu trouves ça difficile à lire ?

Je sais pas trop comment expliciter … je trouvais que le passage au temps discret était un peu ténébreux. (Mais ça t’aide probablement pas comme réponse…)

Tout ça est très intéressant, mais le public que je vise ne connaît pas forcément les développements limités. Si c’était le cas, le tutoriel pourrait faire 20 lignes, en vérité.

Bah un DL à l’ordre 1, c’est une définition équivalente de la dérivabilité que tu peux donner dans un bloc caché. Y a rien de fantastique, c’est juste une manipulation de légalité de la limite du taux d’accroissement.

Honnêtement, je considère dans tous le tutoriel qu’on a toutes les propriétés qui vont bien, ce qui est bien souvent le cas en physique.

Pourtant des points fixes instables y en a plein en physique !

En théorie, faire tendre le pas de temps vers zéro permet d’avoir une précision infinie

Sauf si on a un truc chaotique chiant, non?

Je ne sais pas, mais je pars du principe qu’en physique, cela n’arrive presque jamais. :°

Si je ne me trompe pas, dans la plupart des systèmes physiques, la nature chaotique du système ne se voit pas tout de suite : l’état final n’évolue pas continuement lorsque l’état initial évolue continuement, mais tant que le temps séparant ces deux états est faible, deux états finaux différents restent « pas trop éloigné ». En pratique, en diminuant le pas de temps, on va donc augmenter la précision (en oubliant les problèmes de précision machine).

Cependant, si le système est chiant, ou qu’on teste un état final temporellement éloigné de l’initial, toute variation de paramètre, pas de temps compris, va perturber le résultat final. Donc la remarque de Holosmos me semble justifiée.

Dans mes simu perso, j’ai pu tester l’influence du bruit numérique sur mes simulations (en jouant sur la machine de calcul ou le nombre de processeur, j’arrive à changer très légèrement la position de particule dans un système de type Dynamique Moléculaire, avec les mêmes paramètres et le même fichier d’entré), et j’obtiens un écart de 5 % sur ma grandeur macro usuelle. Donc c’est faible, mais ça peut s’observer concrètement.

+1 -0

Sauf si on a un truc chaotique chiant, non?

Je ne sais pas, mais je pars du principe qu’en physique, cela n’arrive presque jamais

C’est mon quotidien. :p Il n’y a pas besoin d’avoir un système tiré par les cheveux d’ailleurs, dès que tu as quelque dizaines de DLL et quelque non-linéarités, ça part en couille. Tu ne peux souvent pas dire grand chose de l’exactitude des états transitoires ni de l’état final (quand il existe) atteint par ta simulation. On se contente de regarder des statistiques en supposant que c’est pas trop faux et si on en a en utilisant des arguments physiques pour justifier les observations.

Après sur une équation du type $y′=f(y)$, je sais pas si on peut arriver à faire un tel machin

Si $f$ est un peigne, on autorise les sauts dans l’espace des phases. À partir de là, les histoires de "tendre" vers la bonne solution peut perdre de son sens.

+0 -0
Ce sujet est verrouillé.