🔷 INFORMATIONS GÉNÉRALES
Champ Détail
Nom du script script_259cvmn_259.py
Version 1.0.0
Date de création 07/03/2026
Auteur / Demandeur IA Générée (Gemini)
Objectif principal Simuler et visualiser les trajectoires orbitales de corps célestes (Soleil, Terre, Mars) en utilisant l’algorithme d’intégration numérique Runge-Kutta d’ordre 4 (RK4).
🎯 DESCRIPTION FONCTIONNELLE
📌 Que fait ce script ?
Ce script modélise les interactions gravitationnelles entre plusieurs corps massifs. Il calcule l’évolution de leurs positions et vitesses au fil du temps en résolvant les équations différentielles de Newton. Il génère enfin un graphique statique montrant les orbites parcourues sur une période donnée (2 ans par défaut).
📌 Problème résolu
Il permet de prédire le mouvement d’objets célestes soumis à une influence gravitationnelle mutuelle (problème à N-corps), là où une solution analytique simple n’existe pas pour plus de deux corps.
⚙️ SPÉCIFICATIONS TECHNIQUES
🐍 Environnement
Élément Valeur
Version Python 3.8+
OS cible Tous (Windows / Linux / MacOS)
Mode d’exécution CLI / Script interactif
📦 Dépendances / Librairies
numpy (Calcul vectoriel et gestion des vecteurs d’état)
matplotlib (Visualisation graphique et structure d’animation)
📥 ENTRÉES (INPUTS)
# Nom Type Obligatoire Description Exemple
1 system list ✅ Oui Liste d’objets Body (Soleil, Terre, Mars) [soleil, terre, mars]
2 temps_total float ✅ Oui Durée de la simulation en années 2.0
3 pas_de_temps float ✅ Oui Précision de l’intégration (dt) 0.001
📤 SORTIES (OUTPUTS)
# Nom Type Description Exemple
1 trajectory list Historique des positions stocké dans chaque objet Body [array([1., 0.]), …]
2 Visualisation Plot Graphique Matplotlib affichant les orbites Fenêtre contextuelle
🧱 STRUCTURE DU SCRIPT
script_259cvmn_259.py
│
├── 📌 IMPORTS (numpy, matplotlib)
├── 📌 CONSTANTES (G_SCALED pour unités UA/Années/Masse Solaire)
├── 📌 CLASSES
│ └── Body → Définit un objet céleste (masse, r, v, couleur)
├── 📌 FONCTIONS
│ ├── n_body_rhs() → Calcule les dérivées (vitesses et accélérations)
│ ├── rk4_step() → Intégrateur Runge-Kutta 4
│ └── simulate_n_body() → Boucle temporelle de simulation
└── 📌 MAIN / VISUALISATION (Initialisation et rendu graphique)
🔄 LOGIQUE / ALGORITHME
Initialisation : Création du vecteur d’état combinant positions et vitesses de tous les corps.
Calcul des forces : Pour chaque pas de temps, calcul de l’accélération gravitationnelle exercée par chaque corps sur tous les autres.
Intégration RK4 :
Calcul de 4 pentes intermédiaires (k1,k2,k3,k4) pour minimiser l’erreur numérique.
Mise à jour de la position et de la vitesse.
Stockage : Ajout de la nouvelle position dans l’historique trajectory.
Rendu : Tracé des courbes sur un fond noir simulant l’espace.
🚨 GESTION DES ERREURS
Instabilité numérique : Le script inclut une sécurité if r_mag > 1e-6 pour éviter la division par zéro si deux corps entrent en collision.
Types de données : Utilisation de dtype=float forcée sur les arrays NumPy pour éviter les erreurs de calcul sur des entiers.
✅ CONTRAINTES & RÈGLES MÉTIER
Unités : Le script utilise des unités astronomiques (UA), des masses solaires et des années. La constante G est redéfinie en GSCALED=4π2.
Précision : L’algorithme RK4 est beaucoup plus stable que la méthode d’Euler simple pour les orbites circulaires.
🧪 TESTS ATTENDUS
# Cas de test Entrée Résultat attendu
1 Orbite Terre Terre à 1.0 UA Retour au point de départ après 1.0 an
2 Stabilité Soleil Masse Soleil = 1.0 Le Soleil doit rester quasi immobile (centre de masse)
3 Pas de temps dt = 0.1 Orbite dégradée (spirale) due à une faible précision
📝 EXEMPLE D’UTILISATION
Python
# Lancement de la simulation
python script_259cvmn_259.py
Sortie console :
Plaintext
Démarrage de la simulation N-corps…
Simulation terminée. Génération de la visualisation…



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