Travaux Pratiques numériques pour le cours « systèmes dynamiques et chaos »

Frédéric Faure
Université Grenoble Alpes, France
frederic.faure@univ-grenoble-alpes.fr
Master de Physique M1
Novembre 2020.
Attention: Pour lire ce document, utiliser Firefox qui donne un bon rendu des équations utilisant MathML.
 

Table des matières

1 Travail demandé

  1. Avant la séance de TP faire les exercices préparatoires donnés ci-dessous. Scanner et envoyez moi par email s'il vous plait, vos feuilles dans un seul fichier au format pdf sous la forme NOM_PRENOM.pdf. Remarque: sous android ou iphone, l'application CamScanner, permet de générer un fichier pdf à partir des photographies d'un document papier. Si vous n'y arrivez pas, informez moi.
  2. En séance de TP, faire les exercices de programmation sur ordinateur.
  3. Après la séance de TP, choisir un projet parmi cette liste et développer/réaliser le projet en s'aidant des exemples vus dans ce TP.
Langage informatique:
Objectif

2 Dimension 1

2.1 Dynamique à temps continu en dimension 1

On considère x( t ) R qui dépend de t R et qui satisfait l'équation de mouvement dx dt = V ( x ) := μ x( x-1 ) (2.1) avec le paramètre μ R fixé. On appelle (2.1) le modèle de Verhulst, voir aussi fonction de Verhulst. La fonction V s'interprète comme un champ de vecteur sur R .

2.1.1 Exercices mathématiques préparatoires

  1. Selon le paramètre μ , trouver les points fixes de la dynamique (2.1), c'est à dire les zéros x * du champ de vecteur V , et déterminer leur stabilité, c'est à dire le signe de V '( x * ) . Quels sont les attracteurs et répulseurs (i.e. attracteur dans le passé) de la dynamique?
  2. Calculer div ( V ) ( x ) et déterminer si le flot est contractif, expansif ou conservatif selon x .
  3. Pour μ =1 , (et ensuite μ =-1 ), tracer le graphe de la fonction V et déduire l'allure du champ de vecteur V ( x ) sur l'axe x . Remarquer que (2.1) est équivalent à considérer l'équation de mouvement du « problème étendu » ( x( s ) ,t( s ) ) R 2 , s R suivant: { dx ds = V ( x ) dt ds =1 où il apparaît le champ de vecteur F( x,t ) =( V ( x ) ,1 ) dans le plan R 2 . Tracer l'allure des trajectoires (ou « lignes d'univers ») dans le plan ( x,t ) .
Solutions:
  1. x * est un zéro si 0= V ( x * ) = μ x * ( x * -1 ) donnant x * =0 ou x * =1 qui sont les deux points fixes du flot. On a V '( x ) = μ ( 2x-1 ) . Si μ >0 , alors V '( 0 ) =- μ <0 montrant que pour t+ , le point fixe x * =0 est stable ( ou « attracteur ») et V '( 1 ) = μ >0 montrant que le point fixe x * =1 est instable (ou « répulseur »).
  2. On a div ( V ) ( x ) = d V dx = V '( x ) = μ ( 2x-1 ) donc, si μ >0 , alors on a div ( V ) ( x ) >0 pour x> 1 2 , i.e. le flot est contractif (dissipatif). On a div ( V ) ( x ) <0 pour x< 1 2 , i.e. le flot est expansif (dissipatif).

2.1.2 Exercice de programmation

  1. Télécharger et exécuter le programme champ_vecteur_dim1.py qui dessine le champ de vecteur F( x,t ) =( V ( x ) ,1 ) dans le plan R 2 et résout l'équation (2.1) avec le schéma de Runge-Kutta. Aide: sous linux, dans un terminal écrire:
    python3 champ_vecteur_dim1.py
    image: 0_home_faure_enseignement_Systemes_dynamiques_M1_TP_images_champ_vect_dim1.png
  2. Lire et bien comprendre le programme.
  3. Changer la condition initiale x( 0 ) et le paramètre μ dans le programme et vérifier vos prédictions.
  4. Modifier le programme pour étudier l'équation de mouvement suivante sur l'intervalle x[ -1,2 ] : dx dt = V ( x ) := sin ( 2 π x ) (2.2)

2.2 Dynamique à temps discret en dimension 1

On considère la variable x( t ) R qui dépend du temps discret t Z et qui satisfait l'équation de récurrence x( t+1 ) = μ x( t ) ( 1-x( t ) ) (2.3) avec le paramètre μ >0 . On appelle (2.3) l'application logistique.

2.2.1 Exercices préparatoires

Voir TD "Application logistique et fractale de Mandelbrot" et chapitre introduction du cours.
  1. Tracer le graphe de f( x ) = μ x( 1-x ) dans l'intervalle x[ 0,1 ] . Trouver le(s) point(s) fixe(s) a=f( a ) et discuter leur stabilité en fonction de μ . Pour 0< μ <3 , quels sont les attracteurs et répulseurs de la dynamique?
  2. Calculer | f'( x ) | et déduire si l'application est contractive, expansive ou conservative selon x .
  3. Optionnel. On pose μ =3+ ε et x=a+y . On suppose ε 1 , y1 . Trouver les points fixes de b=f( f( b ) ) (i.e. les points périodiques de f de période deux) et discuter leur stabilité en fonction de ε . Tracer le graphe b( μ ) appelé diagramme de bifurcation.
  4. Montrer que x= est toujours attracteur.

2.2.2 Exercice de programmation

  1. Télécharger, compiler et exécuter le programme application_dim1.py qui dessine la fonction f et fait évoluer le point x( t ) .
    image: 1_home_faure_enseignement_Systemes_dynamiques_M1_TP_animation_appl_dim1.gif
  2. Changer la condition initiale x( 0 ) et le paramètre μ dans le programme et vérifier vos prédictions.
  3. Changer la formule de l'application f et essayer.
  4. Optionnel. Faire un programme qui dessine les attracteurs et répulseurs de la dynamique en fonction de μ , comme ici.
  5. Optionnel. Comme ici, considérer l'équation avec x C et μ C . Faire un programme qui pour chaque paramètre μ C , associe M( μ ) 0 (ou une couleur) obtenu par: partant du point x 0 =0.5 et t=1 0 3 1 , on pose M( μ ) = log ( x( t ) ) . Cela fera apparaître l'ensemble de Mandelbrot.

3 Dimension 2

3.1 Dynamique à temps continu en dimension 2

On considère ( x( t ) ,y( t ) ) R 2 qui dépend de t R et qui satisfait l'équation de mouvement d x 2 d t 2 + μ ( x ( t ) 2 -1 ) dx dt +x( t ) =0 { dx dt = V x ( x ) :=y dy dt = V y ( x ) :=- μ ( x 2 -1 ) y-x (3.1) avec le paramètre μ R . On appelle (3.1) le l'Oscillateur de Van der Pol. La fonction V ( x,y ) =( V x ( x,y ) , V y ( x,y ) ) s'interprète comme un champ de vecteur sur R 2 .
image: 2_home_faure_enseignement_Systemes_dynamiques_M1_TP_animation_champ_vecteur_dim2.gif

3.1.1 Exercices préparatoires

  1. Selon le paramètre μ , trouver les points fixes de la dynamique (2.1), c'est à dire les zéros du champ x * de vecteur V , et déterminer leur stabilité.
  2. Calculer div ( V ) ( x,y ) et déterminer si le flot est contractif, expansif ou conservatif selon le point ( x,y ) .

3.1.2 Exercice de programmation

  1. Renommer le programme champ_vecteur_dim1.py ci-dessus en champ_vecteur_dim2.py. Le modifier afin de dessiner le champ de vecteur et la trajectoire comme l'image ci-dessus. Solution ici: 4.1.5.
  2. Changer la condition initiale x( 0 ) et le paramètre μ dans le programme et vérifier vos prédictions.

3.1.3 (Optionnel) Section de Poincaré

3.1.4 (Optionnel) Autres exemples

3.2 Dynamique à temps discret en dimension 2

On considère ( x 1 ( t ) , x 2 ( t ) ) [ 0,2 π ] 2 qui dépend du temps discret t Z et qui satisfait l'équation de récurrence ( x 1 ( t+1 ) , x 2 ( t+1 ) ) = φ ( x 1 ( t ) , x 2 ( t ) ) , φ :{ x 2 ( t+1 ) = x 2 ( t ) +K sin ( x 1 ( t ) ) x 1 ( t+1 ) = x 1 ( t ) + x 2 ( t+1 ) (3.2) avec le paramètre K R . On appelle (3.2) l'application standard.
image: 3_home_faure_enseignement_Systemes_dynamiques_M1_TP_images_standard_map_K2.png

3.2.1 Exercices préparatoires

  1. On note φ ( x 1 , x 2 ) =( φ 1 ( x 1 , x 2 ) , φ 2 ( x 1 , x 2 ) ) . Calculer | det ( D φ ) | =| det ( φ 1 x 1 φ 1 x 2 φ 2 x 1 φ 2 x 2 ) | et déduire si l'application est contractive, expansive ou conservative selon le point x 1 , x 2 .
  2. Allure des trajectoires si K=0 ?

3.2.2 Exercice de programmation

  1. Télécharger et exécuter le programme application_dim2.py qui dessine la trajectoire d'un point ( x 1 ( t ) , x 2 ( t ) ) : Cliquer « bouton gauche » pour choisir un point initial, « barre espace » pour continuer la trajectoire.
  2. Observer les trajectoires.
  3. Modifier le paramètre K pour reproduire la figure ci-dessous.
    image: 4_home_faure_enseignement_Systemes_dynamiques_M1_TP_standard_map.png

3.2.3 Autres exemples

image: 5_home_faure_enseignement_exposes_chaos_classiq___tion_chaos_classique_billard_schema_section.png rayon r( θ ) =1+a cos ( 4 π θ ) ,0a<1: paramètre de déformation
 
Trajectoire = Suite: ( s 1 , sin ( i 1 ) ) , ( s 2 , sin ( i 2 ) ) , ( s 3 , sin ( i 3 ) ) ,
qui forme une dynamique discrète déterministe et de dimension 2. (qui conserve l'aire). Billard plus déformé ( a=0.05 ) :
image: 6_home_faure_enseignement_exposes_chaos_classique_introduction_chaos_classique_Billard_005.gif
Structure très riche observée.

3.2.4 Des résonances dans le système solaire

Gaps observés dans la répartition des millions d'astéroïdes situés entre mars et Jupiter: gaps de Kirkwood (1866) si période T telle que T= p q T Jupiter (A cause des instabilités voisines, ils subissent des chocs et se font éjecter).
image: 7_home_faure_enseignement_exposes_chaos_classique_introduction_chaos_classique_fig_histo.gif
Gaps dans les anneaux de Saturne: les cailloux de période T= p q T Titan vont être éjectés à cause des instabilités (chocs avec d'autres cailloux).
image: 8_home_faure_enseignement_exposes_chaos_classique_introduction_chaos_classique_fig_saturn95.gif image: 9_home_faure_enseignement_exposes_chaos_classique_introduction_chaos_classique_fig_saturn32.gif
Satellites d'Uranus prédits à partir de gaps observés dans les anneaux

4 Dimension 3

4.1 Dynamique à temps continu en dimension 3

4.1.1 Exemple du « flot de Lorenz ».

On considère ( x 1 ( t ) , x 2 ( t ) , x 3 ( t ) ) R 2 qui dépend de t R et qui satisfait l'équation de mouvement { d x 1 dt = V 1 ( x ) := σ ( - x 1 + x 2 ) , d x 2 dt = V 2 ( x ) :=r x 1 - x 2 - x 1 x 3 d x 3 dt = V 3 ( x ) := x 1 x 2 -b x 3 (4.1) avec les paramètre σ ,r,b R . On appelle (4.1) les equation de Lorenz. La fonction V ( x 1 , x 2 ) =( V 1 ( x 1 , x 2 ) , V 2 ( x 1 , x 2 ) , V 3 ( x 1 , x 2 ) ) s'interprète comme un champ de vecteur sur R 2 . Références.
image: 10_home_faure_enseignement_informatique_python_images_lorenz_anime.gif

4.1.2 Exercices préparatoires

  1. Calculer div ( V ) et déterminer si le flot est contractif, expansif ou conservatif selon le point ( x 1 , x 2 , x 3 ) .

4.1.3 Exercices de programmation

4.1.4 Section de Poincaré

4.1.5 Autres exemples de flots en dimension 3

  1. « Attracteur de Rossler ». Etudier la dynamique de Rossler (changer les conditions initiales, ...). Voir sujet 2 et correction. Programme python.
    image: 13_home_faure_enseignement_Systemes_dynamiques_M1_TP_images_animation_rossler.gif
  2. « Pendule pulsé ». Considérer un pendule de longueur variable l( t ) =1+ cos ( Ω t ) , masse m . On pose θ ( t ) la position angulaire et ω ( t ) =d θ /dt . Ecrire l'équation de mouvement. Montrer que l'on obtient un champ de vecteur dans l'espace de dimension trois ( θ , ω ,s ) st  modulo  T avec T=2 π / Ω . Tracer une section de Poincaré pour s=0 .
  3. Une particule dans le plan ( x,y ) R 3 et soumis à une force dérivant d'une énergie potentielle U( x,y ) . L'énergie H= p 2 2m +U( x,y ) est conservée et dans la couche d'énergie Σ E = H -1 ( E ) qui est de dimension 3, les équations de mouvement de Hamilton définissent un champ de vecteur.

Solutions :

champ_vecteur_dim2.py.