Marche à suivre¶
Dans un nouveau programme python, définir les variables
susceptibles
,malades
,gueris
, etmorts
qui représentent respectivement le nombres de personnes susceptibles d’attraper la maladie, le nombre de malades, le nombre de guéris et le nombre de morts de la maladie. On commence avec une population d’un million de personnes dont une seule est malade, aucune n’est guéries et aucune n’est morte de la maladie. Déterminer les valeurs initiales de ces quatre variables.Définir ensuite des variables pour les probabilités suivantes:
la probabilité qu’un malade donné croise et contamine une personne susceptible donnée en l’espace d’un jour
p_contamination = 0.00001 # probabilité de contamination
la probabilité qu’un malade donné guérisse en l’espace d’un jour
p_guerison = 0.1 # probabilité de guérison
la probabilité qu’un malade donné meure en l’espace d’un jour
p_deces = 0.0001 # probabilité de deces
Définir les variables suivantes et trouver comment calculer leur valeur en fonction des variables définies précédemment
Le nombre de nouvelles infections en un jour
infections
Le nombre de guérisons en un jour
guerisons
Le nombre de décès en un jour
deces
et compléter le code suivant avec
infections = guerisons = deces =
Réfléchir à la cohérence de votre modèle, en particulier pour des valeurs particulières (par exemples 0) de malades et de susceptibles.
En fonction des trois variables définies ci-dessus, calculer les nouvelles valeurs des variables
susceptibles
,malades
,gueris
etmorts
après le premier jour et compléter le code suivant en avec le résultat:susceptibles = malades = gueris = morts =
Combien y a-t-il de malades après le premier jour selon ce modèle? Est-ce que cela vous semble cohérent? Sinon, quelle modification pouvez-vous apporter à votre modèle?
Que peut-on dire du nombre total de personnes (susceptibles, malades, guéries ou décédées) dans votre modèle? Cela vous semble-t-il logique?
Placer une boucle
for jour in range(10):
au bon endroit de votre code pour que chaque répétition de la boucle corresponde au passage d’un jour. Attention à bien adapter l’indentation du code.Combien y a-t-il de malades après 10 jours? Et après 20 jours?
On souhaite tracer la courbe des nouvelles infections. Pour ceci définir (avant la boucle
for
) une liste vide appeléecourbe_infection
. Le premier élément de cette liste contiendra le nombre de nouvelles infections le premier jour, le deuxième le nombre de nouvelles infections les deuxième jours etc. Pour remplir cette liste, placer l’instructioncourbe_infection.append(infections)
dans la boucle
for
.Afficher le nombre d’infection les dix premiers jours. Est-ce que cela vous semble cohérent? Sinon quelle modification pouvez-vous apporter à votre modèle?
Afin de pouvoir utiliser
matplotlib
, un module python pour faire des graphique, ajouter l’instruction suivante en début de programmeimport matplotlib.pyplot as plt
En utilisant les instructions suivantes en fin de programme, vous devriez pouvoir tracer un graphe des nouvelles infections sur les dix premiers jours.
plt.plot(courbe_infection,'-') plt.xlabel('jours') plt.ylabel("nombre d'infections") plt.show()
Vous pouvez fermer la fenêtre du graphique pour terminer le programme.
Modifier le programme pour tracer un graphique du nombre d’infections les 50 premiers jours.
Ajouter l’instruction
plt.savefig('courbe_infection.png')
en fin de programme pour sauvegarder votre graphique dans le fichier nommé dans la parenthèse ci-dessus.Modifier le programme pour tracer également la courbe des décès sur les 50 premiers jours.
Modifier les paramètres du modèle et relancer la simulation. Est-ce que vous observez des choses bizarres? Si oui, essayer d’en déterminer la cause.
On souhaite comparer le modèle à l’épidémie de Covid-19 dans le canton de Vaud. Le code suivant vous permet de lire le fichier ‘covid_vd.csv’ et d’obtenir une liste contenant le nombre de nouveaux cas chaque jour.
import csv cas = [] date = [] with open ("covid_vd.csv") as covid_file: reader = csv.reader(covid_file) entete = next(reader) for row in reader: date.append(row[0]) if row[1]== '': cas.append(0) else: cas.append(float(row[1]))
Essayer de trouver les paramètre de votre modèle qui correspondent le mieux à la première vague, puis à la seconde vague. Quelle vague reflète selon vous le mieux la réelle propagation du virus?