Aller au contenu principal
sports_esports Lab Canvas 2D Chaos · RK4 Zéro dépendance

Double pendule — un système chaotique intégré en Runge-Kutta (RK4)

Un double pendule simulé from scratch en Canvas 2D à partir de ses véritables équations du mouvement, intégrées à pas de temps fixe par Runge-Kutta d'ordre 4 (plus stable qu'Euler). Un second pendule quasi identique révèle la sensibilité extrême aux conditions initiales — la signature du chaos déterministe. Zéro dépendance.

Glissez une masse pour définir l'angle initial, puis relâchez R : relancer · G : afficher le pendule fantôme Espace : mettre en pause

Un système simple, un comportement chaotique

Un double pendule, ce n'est qu'une masse suspendue à une autre : deux bras, deux articulations, la gravité. Trois lignes de description, et pourtant l'un des exemples les plus nets de chaos déterministe. Les équations sont parfaitement connues et sans hasard ; malgré cela, le mouvement devient très vite imprévisible à l'œil. Je m'en sers ici comme banc d'essai pour montrer, à ciel ouvert, comment on simule proprement un système physique dans le navigateur — sans moteur, sans dépendance, en quelques kilo-octets de JavaScript.

Les équations du mouvement, issues du lagrangien

Je ne fais pas avancer les masses « à vue ». Je pars des véritables équations du mouvement, obtenues à partir du lagrangien du système (l'énergie cinétique moins l'énergie potentielle). On en tire deux équations couplées qui donnent, à chaque instant, l'accélération angulaire de chaque bras en fonction des angles, des vitesses, des longueurs, des masses et de la gravité. L'état du pendule se résume alors à quatre nombres — deux angles, deux vitesses angulaires — et toute la simulation consiste à faire évoluer ces quatre nombres dans le temps.

Intégrer avec Runge-Kutta d'ordre 4, pas avec Euler

Connaître l'accélération à un instant ne suffit pas : il faut l'intégrer pour en déduire l'état à l'instant suivant. La méthode naïve, dite d'Euler, se contente d'avancer en ligne droite dans la direction de la pente actuelle. Sur un système aussi nerveux, elle dérive vite : l'énergie gonfle artificiellement et le pendule finit par « s'emballer » de manière non physique. J'utilise donc Runge-Kutta d'ordre 4 (RK4) : à chaque pas, il évalue la pente en quatre points intermédiaires et en fait une moyenne pondérée. Pour un même pas de temps, l'erreur est incomparablement plus faible — la trajectoire reste fidèle et l'énergie, stable — au prix de quelques opérations supplémentaires. J'avance en outre à pas de temps fixe, sous-échantillonné indépendamment du rafraîchissement de l'écran, pour que la physique soit identique sur un moniteur 60, 120 ou 144 Hz.

La sensibilité extrême aux conditions initiales

C'est la signature du chaos, et je la rends visible : à côté du pendule principal, j'en simule un second, quasi identique, lancé avec un angle de départ décalé d'un cent-millième de radian. Pendant une ou deux secondes, les deux se superposent. Puis ils divergent — d'abord imperceptiblement, ensuite totalement. Aucune erreur de calcul là-dedans : c'est le système lui-même qui amplifie exponentiellement le moindre écart. La traînée laissée par la pointe, qui s'estompe peu à peu, matérialise cette trajectoire jamais deux fois la même.

Ce que ça dit de ma façon de travailler

Ce petit pendule résume une conviction que j'applique aux projets sérieux : sur un système sensible, le choix de la méthode numérique n'est pas un détail. Le même problème, traité avec Euler ou avec RK4, donne un résultat crédible ou un résultat faux — et l'écart ne se voit pas toujours au premier coup d'œil. C'est exactement l'attention que je porte à un calcul financier, à un moteur de règles métier ou à un traitement de données à fort volume : comprendre la mécanique sous le capot, choisir la bonne approche plutôt que la plus rapide à écrire, et livrer un code dont vous pouvez faire confiance aux résultats sur la durée.

Photo d'Emmanuel BALLERY, fondateur de x10

À propos de l'auteur

Emmanuel BALLERY est le fondateur de x10 solutions. Ces petits jeux sont surtout un plaisir de développeur, codés le week-end — pas une vitrine de mes missions, qui sont bien plus exigeantes. J'y soigne quand même la performance et la lisibilité, par habitude.

Voir plus arrow_forward
rocket_launch

Un vrai projet en tête ?

Ce petit jeu m'amuse, mais il ne dit pas grand-chose de mon métier : mes missions sont bien plus complexes. Si vous avez une application à concevoir ou à fiabiliser, c'est là que je suis vraiment utile.

Discuter de mon projet arrow_forward