script_207cvmn_207.py

49,00 

Simuler et visualiser la propagation d’une épidémie au sein d’une population en utilisant le modèle mathématique SIR (Susceptibles, Infectés, Rétablis).

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

🔷 INFORMATIONS GÉNÉRALES

Champ Détail

Nom du script script_207cvmn_207.py

Version 1.0.0

Date de création 26/02/2026

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

Objectif principal Simuler et visualiser la propagation d’une épidémie au sein d’une population en utilisant le modèle mathématique SIR (Susceptibles, Infectés, Rétablis).

🎯 DESCRIPTION FONCTIONNELLE

📌 Que fait ce script ?

Ce script modélise la dynamique d’une maladie infectieuse. Il résout un système d’équations différentielles pour prédire l’évolution du nombre de personnes saines, malades et guéries au fil du temps. Il offre une interface visuelle pour observer l’impact du taux de transmission, du taux de guérison et de la vaccination.

📌 Problème résolu

Il permet de comprendre mathématiquement comment une épidémie se propage, d’identifier le « pic » de l’infection et d’évaluer l’efficacité des mesures sanitaires (comme la vaccination ou la réduction des contacts) via le calcul du nombre de reproduction de base (R0​).

⚙️ SPÉCIFICATIONS TECHNIQUES

🐍 Environnement

Élément Valeur

Version Python 3.x

OS cible Tous (Windows / Linux / MacOS)

Mode d’exécution Jupyter Notebook (recommandé pour l’interactif) / CLI

📦 Dépendances / Librairies

numpy : Calculs numériques et gestion des tableaux.

matplotlib : Génération des graphiques et visualisations.

scipy : Utilisation de solve_ivp pour la résolution d’équations différentielles.

ipywidgets : Création de l’interface de contrôle interactive (sliders).

IPython.display : Affichage des widgets dans un environnement de notebook.

📥 ENTRÉES (INPUTS)

⚙️ Paramètres de la classe EpidemieSIR

# Nom Type Obligatoire Description Exemple

1 population_totale int ❌ Non Taille de la population (défaut 1000) 5000

2 beta float ❌ Non Taux de transmission (infectiosité) 0.3

3 gamma float ❌ Non Taux de guérison (1/durée maladie) 0.1

4 vaccin float ❌ Non Pourcentage de la pop. initialement immunisée 50.0

📤 SORTIES (OUTPUTS)

📊 Données générées

# Nom Type Description

1 t ndarray Vecteur temporel (jours de la simulation).

2 y ndarray Matrice contenant les populations S, I, R à chaque instant t.

3 R0_effectif float Nombre de reproduction calculé (β/γ).

📂 Visualisations

Graphique d’évolution : Courbes temporelles S, I et R avec marquage du pic infectieux.

Diagramme de phase : Relation directe entre le nombre de Susceptibles et d’Infectés.

Tableau de bord de scénarios : Comparaison de 6 contextes épidémiques différents.

🧱 STRUCTURE DU SCRIPT

script_207cvmn_207.py

📌 IMPORTS : numpy, matplotlib, scipy, widgets.

📌 CLASSE EpidemieSIR : Cœur logique (équations, simulation, visualisation).

📌 FONCTIONS GLOBALES :

interface_interactive() : Gère les widgets UI.

simulation_scenarios() : Génère la grille comparative.

📌 MAIN : Point d’entrée exécutant une simulation par défaut.

🔄 LOGIQUE / ALGORITHME

Initialisation : Calcul des stocks S0​,I0​,R0​ en fonction de la population et de la vaccination.

Calcul Différentiel : Application des équations :

dtdS​=−NβSI​

dtdI​=NβSI​−γI

dtdR​=γI

Résolution : Utilisation de la méthode Runge-Kutta d’ordre 5(4) (RK45).

Analyse : Identification du maximum de la courbe I (pic) et calcul du R0​.

🚨 GESTION DES ERREURS

Cas d’erreur Type d’exception Comportement attendu

Division par zéro ZeroDivisionError Si γ=0, R0​ est défini sur inf.

Paramètres manquants TypeError Utilisation des valeurs par défaut de la classe.

Environnement non-Jupyter ImportError/DisplayError L’interface interactive peut ne pas s’afficher (print seul).

✅ CONTRAINTES & RÈGLES MÉTIER

Conservation : La somme S+I+R doit rester égale à N (population totale).

Interprétation R0​ :

R0​<1 : Disparition de la maladie. R0​>1 : Propagation épidémique.

🧪 TESTS ATTENDUS

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

1 Cas nominal β=0.3,γ=0.1 R0​=3.0 avec pic visible. ⬜ À tester

2 Immunité collective vaccin=90 Courbe des infectés reste plate. ⬜ À tester

3 Guérison instantanée γ=0.8 R0​<1, pas d’épidémie. ⬜ À tester

📝 EXEMPLE D’UTILISATION

▶️ Lancement en ligne de commande

Bash

python script_207cvmn_207.py

💻 Exemple d’appel en tant que module

Python

from script_207cvmn_207 import EpidemieSIR

sim = EpidemieSIR(population_totale=1000)

t, y, r0 = sim.simuler(beta=0.4, gamma=0.2)

print(f »Le R0 calculé est de : {r0} »)

Avis

Il n’y a pas encore d’avis.

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

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