script_296cvmn_296.py

49,00 

Simuler et visualiser la trajectoire verticale d’une fusée en tenant compte de la poussée, de la gravité et de la traînée aérodynamique.

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

🔷 INFORMATIONS GÉNÉRALES

Champ Détail

Nom du script script_296cvmn_296.py

Version 1.0.0

Date de création 09/03/2026

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

Objectif principal Simuler et visualiser la trajectoire verticale d’une fusée en tenant compte de la poussée, de la gravité et de la traînée aérodynamique.

🎯 DESCRIPTION FONCTIONNELLE

📌 Que fait ce script ?

Ce script utilise une approche de physique numérique pour modéliser le vol d’une fusée à un étage. Il calcule l’évolution de l’altitude, de la vitesse et de la masse au fil du temps, de l’allumage du moteur jusqu’à l’impact au sol, puis génère des graphiques d’analyse.

📌 Problème résolu

Il permet de prédire les performances d’une fusée (apogée, durée de combustion, vitesse maximale) sans recourir à des tests physiques coûteux, en résolvant de manière itérative les équations du mouvement.

⚙️ SPÉCIFICATIONS TECHNIQUES

🐍 Environnement

Élément Valeur

Version Python 3.x

OS cible Windows / Linux / MacOS

Mode d’exécution CLI / Script autonome

📦 Dépendances / Librairies

numpy : Pour la manipulation des tableaux de données et les calculs numériques.

matplotlib : Pour la génération des graphiques de résultats.

📥 ENTRÉES (INPUTS)

📂 Paramètres de configuration (Hardcodés dans la classe)

# Nom Type Description Valeur par défaut

1 thrust float Poussée du moteur (Newtons) 2500.0

2 m_fuel float Masse initiale de carburant (kg) 100.0

3 burn_rate float Consommation de carburant (kg/s) 5.0

4 Cd float Coefficient de traînée 0.5

📤 SORTIES (OUTPUTS)

📂 Données et Visualisations

Type Description

Graphique (Matplotlib) Trois courbes : Altitude(t), Vitesse(t), et Masse(t).

Tableaux NumPy Vecteurs de données t, h, v, m retournés par la méthode simulate().

🧱 STRUCTURE DU SCRIPT

script_296cvmn_296.py

├── 📌 IMPORTS (numpy, matplotlib.pyplot)

├── 📌 CLASSE RocketSimulation

│ ├── __init__() → Initialise les constantes physiques et techniques.

│ ├── simulate() → Cœur algorithmique (Boucle de calcul).

│ └── plot_results() → Génération des visuels.

└── 📌 MAIN (Instanciation, exécution et affichage)

🔧 Détail des fonctions principales

Fonction Paramètres Retour Rôle

simulate(dt) dt (pas de temps) tuple(np.array) Calcule la trajectoire via l’intégration d’Euler.

plot_results(t, h, v, m) Tableaux de données None Affiche les graphiques multi-axes.

🔄 LOGIQUE / ALGORITHME

Initialisation : Définition de l’état initial (h=0, v=0, m=total).

Boucle de simulation (Boucle While) : Tant que la fusée n’a pas touché le sol :

Phase de poussée : Si carburant > 0, Force de poussée active, réduction de la masse.

Bilan des forces : Calcul de la Traînée (Fd​=21​ρCd​Av2) et du Poids (P=mg).

Calcul de l’accélération : a=m∑F​.

Mise à jour (Euler) : Nouvelle vitesse et nouvelle position selon le pas de temps dt.

Terminaison : Arrêt de la boucle lorsque l’altitude redevient négative après le décollage.

Rendu : Envoi des données vers le moteur graphique.

✅ CONTRAINTES & RÈGLES MÉTIER

Règle 1 : La poussée tombe à zéro instantanément dès que la masse de carburant est épuisée.

Règle 2 : La densité de l’air (ρ) est considérée comme constante (modèle basse altitude).

Règle 3 : Le sol est une limite infranchissable (arrêt de la simulation).

🧪 TESTS ATTENDUS

# Cas de test Entrée Résultat attendu

1 Vol complet Paramètres standards Courbe parabolique, apogée > 0

2 Pas de carburant m_fuel = 0 La fusée reste au sol

3 Poussée insuffisante thrust < weight La fusée ne décolle pas 📝 EXEMPLE D'UTILISATION ▶️ Lancement direct Bash python script_296cvmn_296.py 💻 Utilisation comme module Python from script_296cvmn_296 import RocketSimulation sim = RocketSimulation() t, h, v, m = sim.simulate(dt=0.01) # Précision accrue print(f"Altitude max atteinte : {max(h)} m")

Avis

Il n’y a pas encore d’avis.

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

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