script_307cvmn_307.py

49,00 

Simuler et animer graphiquement les interactions gravitationnelles de type N-corps (système stellaire complexe) en utilisant l’intégration numérique de haute précision Runge-Kutta 4.

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

🔷 INFORMATIONS GÉNÉRALES

Champ Détail

Nom du script script_307cvmn_307.py

Version 1.0.0

Date de création 09/03/2026

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

Objectif principal Simuler et animer graphiquement les interactions gravitationnelles de type N-corps (système stellaire complexe) en utilisant l’intégration numérique de haute précision Runge-Kutta 4.

🎯 DESCRIPTION FONCTIONNELLE

📌 Que fait ce script ?

Ce script modélise un système dynamique composé de plusieurs corps célestes (étoiles, planète, lune). Il calcule les forces gravitationnelles mutuelles et prédit leurs trajectoires futures, tout en affichant une animation fluide en temps réel avec des tracés de traîne (trails) pour visualiser les orbites.

📌 Problème résolu

Il permet de simuler des systèmes instables ou complexes (comme un système stellaire binaire avec une lune) que les équations de Kepler classiques ne peuvent pas résoudre analytiquement, en utilisant une méthode d’intégration robuste (RK4) pour éviter les dérives numériques rapides.

⚙️ SPÉCIFICATIONS TECHNIQUES

🐍 Environnement

Élément Valeur

Version Python 3.8+

OS cible Windows / Linux / MacOS

Mode d’exécution Script graphique (GUI via Matplotlib)

📦 Dépendances / Librairies

Librairies standard (built-in)

Aucune (uniquement des bibliothèques scientifiques tierces).

Librairies externes (pip install)

numpy (Calcul vectorisé des accélérations)

matplotlib (Moteur de rendu graphique et animation)

📥 ENTRÉES (INPUTS)

📂 Fichiers / Sources de données en entrée

Le script est auto-contenu. Les données sont injectées via la méthode add_body.

# Nom Type Obligatoire Description Exemple

1 name str ✅ Oui Nom de l’astre « Étoile A »

2 mass float ✅ Oui Masse de l’objet 500

3 pos list ✅ Oui Coordonnées [x, y] [-5, 0]

4 vel list ✅ Oui Vecteur vitesse [vx, vy] [0, 5]

📤 SORTIES (OUTPUTS)

📂 Fichiers / Données en sortie

Type Chemin / Format Description

Visuel Fenêtre interactive Matplotlib Animation 2D des trajectoires orbitale.

🧱 STRUCTURE DU SCRIPT

script_307cvmn_307.py

├── 📌 IMPORTS (numpy, matplotlib)

├── 📌 CLASSE AdvancedOrbitalSim (Moteur physique)

│ ├── __init__ → Initialisation de la constante G et de la liste des corps

│ ├── add_body() → Ajout d’objets au système

│ ├── _compute_accel() → Calcul gravitationnel vectorisé (Loi de Newton)

│ └── step_rk4() → Intégrateur numérique Runge-Kutta d’ordre 4

├── 📌 CONFIGURATION (Instanciation du système solaire binaire)

├── 📌 ANIMATION

│ ├── Initialisation des tracés (lines, points, trail_data)

│ └── update() → Fonction de rafraîchissement par frame (5 sous-étapes physiques)

└── 📌 MAIN (Appel de plt.show())

🔧 Détail des fonctions principales

Fonction Paramètres Retour Rôle

_compute_accel pos, masses ndarray Calcule l’accélération de chaque corps avec un « softening » (1e-6) pour éviter les divisions par zéro lors de collisions.

step_rk4 dt ndarray Calcule l’état suivant (pos/vel) en moyennant 4 estimations de pente (précision O(dt4)).

update frame list Gère l’évolution temporelle et la mise à jour des coordonnées des tracés sur le graphique.

🔄 LOGIQUE / ALGORITHME

Initialisation : Création des objets avec masses et vecteurs initiaux.

Boucle d’Animation :

Physique : Exécution de 5 micro-pas de temps RK4 pour garantir la stabilité visuelle.

Stockage : Ajout des nouvelles positions dans un historique de traîne (limité à 60 points).

Rendu : Effacement et redessin des points et des lignes de trajectoire.

Affichage : Projection 2D sur un fond noir.

🚨 GESTION DES ERREURS

Cas d’erreur Type d’exception Comportement attendu

Collision parfaite ZeroDivisionError Prévenu par le softening (10−6) dans le calcul de distance.

Masse nulle LogicError L’astre n’exercera aucune force mais subira celle des autres.

Données non-numériques ValueError NumPy lèvera une erreur lors de la conversion en array.

✅ CONTRAINTES & RÈGLES MÉTIER

Règle 1 : Utilisation du « Softening » pour éviter les accélérations infinies à distance quasi-nulle.

Règle 2 : La traîne est limitée à 60 points pour éviter la saturation de la mémoire et du rendu graphique.

Règle 3 : Le calcul de l’accélération est vectorisé via NumPy pour supporter un grand nombre de corps sans ralentissement majeur.

🧪 TESTS ATTENDUS

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

1 Conservation énergie Système stable L’orbite ne doit pas « s’envoler » après 200 frames. ⬜ À tester

2 Système à 1 corps 1 étoile seule Immobilité totale (accel = 0). ⬜ À tester

3 Performance 50 corps Fluidité de l’animation > 20 FPS. ⬜ À tester

📝 EXEMPLE D’UTILISATION

▶️ Lancement direct

Bash

python script_307cvmn_307.py

📋 Sortie console/graphique attendue

Ouverture d’une fenêtre titrée « Simulateur N-Corps Avancé (RK4) ».

Visualisation de deux étoiles centrales en rotation mutuelle.

Une planète cyan décrivant une trajectoire complexe autour du binôme.

Une petite lune blanche orbitant autour de la planète.

Avis

Il n’y a pas encore d’avis.

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

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