🔷 INFORMATIONS GÉNÉRALES
Champ Détail
Nom du script onizuka_329ocx2g28n5zan0_333.py
Version 1.0.0
Date de création 25/03/2026
Auteur / Demandeur Gemini (Analyse de script existant)
Objectif principal Simuler, animer et analyser le comportement chaotique d’un système physique de pendule double.
🎯 DESCRIPTION FONCTIONNELLE
📌 Que fait ce script ?
Le script résout numériquement les équations différentielles du mouvement d’un pendule double (système à deux degrés de liberté). Il génère une animation interactive de la trajectoire, vérifie la conservation de l’énergie mécanique et quantifie la sensibilité aux conditions initiales (chaos) via le calcul du coefficient de Lyapunov.
📌 Problème résolu
Il permet d’étudier un système dynamique non linéaire complexe dont la résolution analytique est impossible. Il offre un outil visuel pour comprendre comment une variation infime de l’état initial conduit à des résultats radicalement différents sur le long terme.
⚙️ SPÉCIFICATIONS TECHNIQUES
🐍 Environnement
Élément Valeur
Version Python 3.8+
OS cible Tous (Windows / Linux / MacOS) avec interface graphique pour Matplotlib
Mode d’exécution CLI / Script de visualisation
📦 Dépendances / Librairies
Standard : warnings
Externes : * numpy (Calcul matriciel et trigonométrie)
matplotlib (Graphiques et animation FuncAnimation)
scipy (Solveur d’équations différentielles solve_ivp)
📥 ENTRÉES (INPUTS)
📂 Paramètres de classe (DoublePendulum)
# Nom Type Obligatoire Description
1 L1, L2 float ✅ Oui (défaut 1.0) Longueurs des deux tiges (m)
2 m1, m2 float ✅ Oui (défaut 1.0) Masses des deux points (kg)
3 g float ✅ Oui (défaut 9.81) Accélération de la pesanteur
📤 SORTIES (OUTPUTS)
📂 Données et Visualisations
Type Format Description
Graphique Matplotlib Plot Courbes d’énergie (J) et dérive relative (%)
Graphique Matplotlib Plot Trajectoire XY de la masse m2
Animation Matplotlib / GIF Animation temps réel avec traînée (trace)
Console Texte Coefficient de Lyapunov calculé
🧱 STRUCTURE DU SCRIPT
onizuka_…_333.py
📌 IMPORTS : Numpy, Matplotlib, Scipy.
📌 PHYSIQUE : Fonction equations() définissant les dérivées de Lagrange.
📌 CLASSES :
DoublePendulum : Moteur de calcul (Runge-Kutta 8(5,3)) et gestion de l’état.
PendulumAnimation : Moteur de rendu graphique et gestion des frames.
📌 ANALYSE : Fonction analyze_chaos() pour comparer deux systèmes proches.
📌 MAIN : Orchestration de la simulation complète.
🔧 Détail des fonctions principales
Fonction Paramètres Retour Rôle
equations(t, state, …) t, y, L, m, g list Calcule les dérivées [θ′,ω′]
DoublePendulum.solve() t_span, method tuple Intègre le mouvement sur la durée choisie
analyze_chaos() p1, p2, eps tuple Mesure l’écart entre deux trajectoires
animate() interval, save anim Génère le rendu visuel dynamique
🔄 LOGIQUE / ALGORITHME
Initialisation des paramètres physiques et des angles θ1,θ2.
Intégration numérique via l’algorithme DOP853 (méthode de Runge-Kutta d’ordre élevé) pour garantir la précision.
Conversion des coordonnées polaires (θ) en coordonnées cartésiennes (x,y) pour l’affichage.
Calcul d’énergie pour valider que le solveur ne « crée » pas d’énergie (vérification de la dérive).
Rendu : Boucle d’animation mettant à jour la position des tiges et des masses à chaque pas de temps.
🚨 GESTION DES ERREURS
Précision numérique : Utilisation de rtol=1e-8 et atol=1e-10 pour limiter l’accumulation d’erreurs d’arrondi sur un système chaotique.
Warnings : Filtrage des alertes Matplotlib (ignore) pour une sortie console propre.
✅ RÈGLES MÉTIER / PHYSIQUES
Conservation : L’énergie totale doit rester quasi-constante (dérive <0.01%). Chaos : Le coefficient de Lyapunov λ doit être >0 pour confirmer la nature chaotique du système.
🧪 TESTS INCLUS
# Cas de test Entrée Résultat attendu
1 Conservation Énergie Conditions par défaut Courbe stable, dérive infime
2 Sensibilité initiale Δθ=10−4 rad Divergence exponentielle visible sur semilogy
3 Animation 2000 points Fluide, rafraîchissement toutes les 20ms
📝 EXEMPLE D’UTILISATION
▶️ Lancement en ligne de commande
Bash
python onizuka_329ocx2g28n5zan0_333.py
💻 Utilisation comme module
Python
from onizuka_329ocx2g28n5zan0_333 import DoublePendulum
# Créer un pendule personnalisé
p = DoublePendulum(L1=2.0, m1=0.5)
p.solve(t_span=(0, 30))
p.plot_energy()



Avis
Il n’y a pas encore d’avis.