Christophe Jacquet — Le pendule et les trois aimants

Cette page présente mon approche du problème du pendule et des trois aimants. Cette étude a été réalisée à l'origine dans le cadre d'un cours sur les fractales et les phénomènes chaotiques, suivi en 2002, lorsque j'étais étudiant à Supélec.

La première version du programme était une applet Java. Pour donner plus de souplesse aux utilisateurs, la nouvelle version est basée sur Java Web Start.

Démarrer le simulateur

Position du problème

Un pendule est accroché en un point fixe. Ce pendule est magnétique. Sous le pendule sont disposés trois aimants aux sommets d'un triangle équilatéral.

A l'instant initial, on lâche le pendule en un point arbitrairement choisi, à vitesse nulle.

On constate que la trajectoire dudit pendule est chaotique : pour de très faibles fluctuations de la position d'origine, les trajectoires obtenues sont complètement différentes.

Modélisation

Afin de simplifier les calculs, je considère que le pendule se déplace dans un plan. Ce plan sera confondu avec le plan des trois aimants.

Le pendule est alors soumis aux forces suivantes :

On prend un pendule de masse unitaire. Le Principe Fondamental de la Dynamique s'écrit alors :

On a donc à résoudre numériquement les deux équations suivantes :


On va procéder à une intégration numérique, à $\Delta t$ constant (méthode d'Euler). On obtient alors les relations de récurrence suivantes :


Implémentation en Java

Que doit faire le programme ?

Le programme se doit de remplir les objectifs suivants :

  1. Permettre le tracé d'une trajectoire, étant donné un point de départ ;
  2. Permettre le tracé des bassins d'attraction de chacun des trois aimants : on donne à chaque point du plan la couleur de l'aimant sur lequel aboutit la trajectoire du pendule lorsqu'il part de ce point ;
  3. Permettre la modification dynamique de toutes les constantes physiques du problème.

Implémentation

Une fois la modélisation et les méthodes de calculs (exposées ci-avant) choisies, l'implémentation de cet algorithme en langage Java est relativement aisée.

J'ai été amené à définir les classes suivantes :

Application

Au départ, une applet était intégrée dans cette page. Ceci provoquait d'importants temps d'attente, liés au chargement de la machine virtuelle Java, et ce que l'utilisateur souhaite ou non utiliser le programme. Désormais, le programme est exécutable par Java Web Start : il suffit de cliquer sur le lien ci-dessous.

    <div class="startbutton">
        <a href="aimants.jnlp">Démarrer le simulateur</a>
	</div>

Il suffit de cliquer sur la zone noire pour tracer une trajectoire à partir de la position du curseur. L'intervalle d'intégration est réglable.

En mode de tracé des bassins d'attractions, il est possible de limiter le nombre d'instants maximal. La luminance de la couleur attribuée à chaque point est d'autant plus faible que le temps de convergence a été long pour le point en question.

Si le pas de tracé des bassins d'attractions est une puissance de deux, la fractale est calculée plus finement de façon automatique, par raffinements successifs.

Code source — licence

Cette Archive JAR contient à la fois une version compilée du programme (exécutable par java -jar) et les fichiers source. Le code source est fourni, sans garantie d'aucune sorte, sous la licence GNU LGPL.

Trajectoires intéressantes

Fractales obtenues

On constate que la forme des bassins d'attractions est fractale.

HTML5 valide ? © . ✍ Contact. Mentions légales.
Dernière mise à jour : 22 novembre 2019. Mise en ligne initiale : printemps 2002.