onizuka_329ocx2g28n5zan0_333.py

49,00 

Simuler, animer et analyser le comportement chaotique d’un système physique de pendule double.

UGS : onizuka_329ocx2g28n5zan0_333.py Catégorie : Étiquette :

🔷 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.

Soyez le premier à laisser votre avis sur “onizuka_329ocx2g28n5zan0_333.py”

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *