Dans ce TP, on propose d'utiliser le langage C++. Voici un
didacticiel C++ avec de nombreuses références.
On explore la
dynamique déterministe à
temps continu (flot) et
temps discret en dimension
, avec
, et le fait que une section de Poincaré d'un flot en dimension
définit une dynamique à temps discret en dimension
.
1 Dimension 1
1.1 Dynamique à temps continu en dimension 1
On considère
qui dépend de
et qui satisfait l'équation de mouvement
avec le paramètre
. On appelle (
1.1) le
modèle de Verhulst, voir aussi
fonction de Verhulst. La fonction
s'interprète comme un champ de vecteur sur
.
1.1.1 Exercices préparatoires
- Selon le paramètre , trouver les points fixes de la dynamique (1.1), c'est à dire les zéros du champ de vecteur , et déterminer leur stabilité, c'est à dire le signe de . Quels sont les attracteurs et répulseurs de la dynamique?
- Calculer et déterminer si le flot est contractif,expansif ou conservatif selon .
- Tracer le graphe de la fonction et déduire l'allure du champ de vecteur .
- Si on considère un pas de temps , et que l'on pose pour . Exprimer à partir de au premier ordre en . Cela s'appelle le «Méthode d'intégration de Euler».
- Pour un temps fixé, majorer l'erreur de la méthode de Euler où . Montrer que l'erreur est . La méthode de Runge-Kutta a une meilleure précision car l'erreur est .
1.1.2 Exercice de programmation
- Télécharger, compiler et éxecuter le programme champ_vect_dim1 qui dessine le champ de vecteur et résoud l'équation (1.1) avec le schéma de Euler ou la méthode de Runge-Kutta. Aide: sous linux, dans un terminal écrire:
- unzip project_c++_champ_vecteur_dim1.zip
- cd project_c++_champ_vecteur_dim1
- make all
- ./champ_vecteur_dim1
- Pour modifier le programme, éditer le fichier: emacs champ_vecteur_dim1.cc & et le recompiler.
- Changer la condition initiale et le paramètre dans le programme et vérifier vos prédictions.
- (Optionel) Comparer la précision entre la méthode de Euler et la méthode de Runge Kutta.
Aide: dans la boucle de calcul, on peut afficher les variables par
cout<<"t = "<<t<<" x="<<x<<endl;
On pourra changer la précision dt.
1.2 Dynamique à temps discret en dimension 1
On considère
qui dépend du temps discret
et qui satisfait l'équation de récurrence
avec le paramètre
. On appelle (
1.2)
l'application logistique.
1.2.1 Exercices préparatoires
- Tracer le graphe de dans l'intervalle . Trouver le(s) point(s) fixe(s) et discuter leur stabilité en fonction de . Pour , quels sont les attracteurs et répulseurs de la dynamique?
- Calculer et déduire si l'application est contractive, expansive ou conservative selon .
- On pose et . On suppose , . Trouver les points fixes de (i.e. les points périodiques de de période deux) et discuter leur stabilité en fonction de . Tracer le graphe appelé diagramme de bifurcation.
- Montrer que est toujours attracteur.
1.2.2 Exercice de programmation
- Télécharger, compiler et éxecuter le programme application_dim1 qui dessine la fonction et fait évoluer le point .
- Changer la condition initiale et le paramètre dans le programme et vérifier vos prédictions.
- Optionel. Faire un programme qui dessine les attracteurs et répulseurs de la dynamique en fonction de .
- Optionel. Considérer l'équation avec et . Faire un programme qui pour chaque paramètre , associe (ou une couleur) obtenu par: partant du point et , on pose . Cela fera apparaitre l'ensemble de Mandelbrot.
2 Dimension 2
2.1 Dynamique à temps continu en dimension 2
On considère
qui dépend de
et qui satisfait l'équation de mouvement
avec le paramètre
. On appelle (
2.1) le
l'Oscillateur de Van der Pol. La fonction
s'interprète comme un
champ de vecteur sur
.
2.1.1 Exercices préparatoires
- Selon le paramètre , trouver les points fixes de la dynamique (1.1), c'est à dire les zéros du champ de vecteur , et déterminer leur stabilité.
- Calculer et déterminer si le flot est contractif, expansif ou conservatif selon le point .
2.1.2 Exercice de programmation
- Rennomer le programme champ_vecteur_dim1.cc ci-dessus en champ_vecteur_dim2.cc. Le modifier afin de dessiner le champ de vecteur et la trajectoire.
- Changer la condition initiale et le paramètre dans le programme et vérifier vos prédictions.
2.1.3 Section de Poincaré
- Choisir une courbe (ou droite) dans le plan et considérer la suite des intersections de la trajectoire avec cette courbe. Cela définit une dynamique de dimension 1 à temps discret, appelée Section de Poincaré du flot. Exercice: tracer la suite des intersections.
2.1.4 Autres exemples
- Considérer un pendule amorti caractérisé par sa position angulaire . Ecrire les équations de mouvement comme un champ de vecteur dans l'espace de phase .
2.2 Dynamique à temps discret en dimension 2
On considère
qui dépend du temps discret
et qui satisfait l'équation de récurrence
,
avec le paramètre
. On appelle (
2.2)
l'application standard.
2.2.1 Exercices préparatoires
- Calculer et déduire si l'application est contractive, expansive ou conservative selon le point .
- Allure des trajectoires si ?
2.2.2 Exercice de programmation
- Télécharger, compiler et éxecuter le programme application_dim2 qui dessine la trajectoire d'un point : Cliquer «bouton gauche» pour choisir un point initial, «barre espace» pour continuer la trajectoire.
- Observer les trajectoires. Modifier le programme (opt_lent=0) pour observer sur des temps plus long.
- Modifier le paramètre K pour reproduire la figure ci-dessous.
2.2.3 Autres exemples
- Considérer un domaine du plan , par exemple un disque de rayon . Une particule est libre de se déplacer dans ce domaine, i.e. avance en ligne droite à vitesse constante, et rebondit de façon parfaite sur le bord. A chaque rebond on note la position angulaire et où est l'angle par rapport à la direction normale. La suite des rebond définit une suite avec . qui est une dynamique à deux dimensions et temps discret.
3 Dimension 3
3.1 Dynamique à temps continu en dimension 3
On considère
qui dépend de
et qui satisfait l'équation de mouvement
avec les paramètre
. On appelle (
3.1) les
equation de Lorenz. La fonction
s'interprète comme un champ de vecteur sur
.
3.1.1 Exercices préparatoires
- Calculer et déterminer si le flot est contractif, expansif ou conservatif selon le point .
3.1.2 Exercice de programmation
- Tracer les trajectoires dans l'espace
3.1.3 Section de Poincaré
- Choisir une surface (ou plan) dans l'espace , par exemple , et considérer la suite des intersections de la trajectoire avec ce plan. Cela définit une dynamique de dimension 2 à temps discret, appelée Section de Poincaré du flot. Exercice: tracer la suite des intersections.
3.1.4 Autres exemples
- «Pendule pulsé». Considérer un pendule de longueur variable , masse . On pose la position angulaire et . Ecrire l'équation de mouvement. Montrer que l'on obtient un champ de vecteur dans l'espace de dimension trois où avec . Tracer une section de Poincaré pour .
- Une particule dans le plan et soumis à une force dérivant d'une énergie potentielle . L'énergie est conservée et dans la couche d'énergie qui est de dimension 3, les équations de mouvement de Hamilton définissent un champ de vecteur.