script_283cvmn_283.py

49,00 

Modéliser et visualiser dynamiquement l’attracteur de Lorenz pour illustrer la théorie du chaos.

UGS : script_283cvmn_283.py Catégorie : Étiquettes : , ,

🔷 INFORMATIONS GÉNÉRALES

Champ Détail

Nom du script script_283cvmn_283.py

Version 1.0.0

Date de création 07/03/2026

Auteur / Demandeur Gemini (IA Générée)

Objectif principal Modéliser et visualiser dynamiquement l’attracteur de Lorenz pour illustrer la théorie du chaos.

🎯 DESCRIPTION FONCTIONNELLE

📌 Que fait ce script ?

Ce script simule les trajectoires d’un système dynamique non linéaire (système de Lorenz). Il résout numériquement trois équations différentielles couplées et génère une représentation graphique 3D de la trajectoire, mettant en évidence la structure en « ailes de papillon » caractéristique des systèmes chaotiques.

📌 Problème résolu

Il permet de visualiser l’effet papillon : comment de petites variations dans les conditions initiales d’un système déterministe peuvent mener à des résultats radicalement différents, rendant la prédiction à long terme impossible.

⚙️ SPÉCIFICATIONS TECHNIQUES

🐍 Environnement

Élément Valeur

Version Python 3.8+

OS cible Tous (Windows, Linux, MacOS)

Mode d’exécution CLI / Script autonome

📦 Dépendances / Librairies

Librairies externes (pip install)

numpy: Calcul numérique (gestion des tableaux).

matplotlib: Génération des graphiques 3D.

scipy: Intégration numérique des équations différentielles (odeint).

📥 ENTRÉES (INPUTS)

📂 Paramètres de simulation

# Nom Type Obligatoire Description Exemple

1 initial_state list ✅ Oui Coordonnées de départ [x, y, z] [1.0, 1.0, 1.0]

2 sigma float ❌ Non Nombre de Prandtl (paramètre de convection) 10.0

3 rho float ❌ Non Nombre de Rayleigh (gradient temp.) 28.0

4 beta float ❌ Non Paramètre de distorsion géométrique 2.666

📤 SORTIES (OUTPUTS)

📂 Données et Visualisations

# Nom Type Description

1 self.states numpy.ndarray Matrice contenant les positions x, y, z calculées au fil du temps.

2 Graphique 3D Matplotlib Plot Fenêtre interactive affichant la trajectoire de l’attracteur.

🧱 STRUCTURE DU SCRIPT

script_283cvmn_283.py

├── 📌 IMPORTS (numpy, matplotlib, scipy)

├── 📌 CLASSE LorenzSimulator

│ ├── __init__ : Initialisation des constantes (σ,ρ,β).

│ ├── lorenz_system : Définition mathématique du système.

│ ├── run_simulation : Résolution via odeint.

│ └── visualize : Rendu graphique 3D.

└── 📌 MAIN (Point d’entrée pour l’exécution directe)

🔧 Détail des fonctions principales

Fonction Paramètres Retour Rôle

lorenz_system current_state, t list Calcule les dérivées dtdx​,dtdy​,dtdzdt​.

run_simulation initial_state, duration ndarray Intègre le système sur une durée donnée.

visualize Aucun None Génère la figure Matplotlib 3D.

🔄 LOGIQUE / ALGORITHME

Initialisation : Définition des paramètres physiques (σ=10,ρ=28,β=8/3).

Intégration : Utilisation de l’algorithme LSODA (via odeint) pour résoudre :

dtdx​=σ(y−x)

dtdy​=x(ρ−z)−y

dtdz​=xy−βz

Stockage : Sauvegarde des points dans un tableau NumPy.

Rendu : Tracé des points dans un espace cartésien 3D avec un style « scientifique moderne ».

🚨 GESTION DES ERREURS

Cas d’erreur Type d’exception Comportement attendu

Visualisation avant calcul AttributeError / Print Affiche un message d’erreur explicite.

Paramètres non numériques TypeError L’intégrateur Scipy lèvera une erreur de calcul.

🧪 TESTS ATTENDUS

# Cas de test Entrée Résultat attendu Statut

1 Cas nominal [1, 1, 1] Affichage des « ailes de papillon » ⬜ À tester

2 Point d’équilibre [0, 0, 0] La trajectoire reste à l’origine ⬜ À tester

3 Haute durée duration=500 Trajectoire très dense, pas de plantage ⬜ À tester

📝 EXEMPLE D’UTILISATION

▶️ Lancement en ligne de commande

Bash

python script_283cvmn_283.py

💻 Exemple d’appel en tant que module

Python

from script_283cvmn_283 import LorenzSimulator

sim = LorenzSimulator(rho=28.0)

sim.run_simulation([0.1, 0.0, 0.0], duration=30)

sim.visualize()

Avis

Il n’y a pas encore d’avis.

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

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