Étude de la propagation d’une épidémie[1] Présentation Cet atelier vise à modéliser sous forme de suite numérique et étudier la propagation d’une maladie sur une population sachant que : Un individu sain est un individu n’ayant jamais été touché par la maladie. Un individu malade est un individu qui a été touché par la maladie et non guéri. Un individu guéri est un individu qui a été touché par la maladie et qui a guéri. Une fois guéri, un individu est immunisé et ne peut plus tomber malade. Les premières observations montrent que, d’un jour au suivant : 5% des individus sains tombent malades. 20% des individus malades guérissent. ✎ Travail n° 1 Application numérique 🕮 Énoncé Pour tout entier naturel n, on note an , la proportion d’individus sains n jours après le début de l’expérience et bn la proportion d’individus malades n jours après le début de l’expérience. On suppose qu’au début de l’expérience tous les individus sont sains : a0 = 1 et b0 = 0. 🎯 Travail à faire : Calculer a1 et b1. Montrer que a2 = 0.9025 et b2 = 0.0875. Exprimer an+1 en fonction de an. En déduire la nature de la suite (an) et l’expression de an en fonction de n. Exprimer bn+1 en fonction de an et bn. 💻 Travail n° 2 Approche informatique 🎯 Travail à faire : Proposer un algorithme qui permet de déterminer le pic de l’épidémie sur une période de 100 jours et le coder en Python Solution pic-epidemie.py periode = 100 sains = [1] malades = [0] for jourPrecedent in range(periode) : sains.append(sains[jourPrecedent]*0.95) malades.append(malades[jourPrecedent] * 0.8 + sains[jourPrecedent] * 0.05) print(f"Pic de l'épidémie atteint au jour n° {malades.index(max(malades))}") Faire un script Python qui trace l’évolution de la population saine et de la population malade. Vérifier graphiquement le jour du pic de l’épidémie Exemple de résultat attendu Solution suite-epidemie-courbe.py import matplotlib.pyplot as plt import matplotlib.ticker as ticker print(">>>> Etude de la propagation d'une maladie <<<<\n"); # Saisie valeur initiale periodeEtude = int(input("Saisir la période d'étude en nombres de jours : ")) # Calcul des termes de la suite sains = [1] malades = [0] for jourPrecedent in range(periodeEtude) : sains.append(sains[jourPrecedent]*0.95) malades.append(malades[jourPrecedent] * 0.8 + sains[jourPrecedent] * 0.05) # Création d'une figure fig = plt.figure() # Ajout des courbes de population saine et malade dans la figure courbeSains = fig.add_subplot(1 # nrows , 1 # ncols , 1 # index , xscale='linear' ) courbeSains.set_xlabel('jour') courbeSains.set_ylabel('Population saine') courbeMalades = courbeSains.twinx() # 2ème courbe qui partage le même axe des x mais pas celui des y courbeMalades.set_ylabel('Population malade') # Tracé des courbes courbeSains.xaxis.set_major_locator(ticker.MaxNLocator(integer = True)) plotSains = courbeSains.plot(range(periodeEtude+1), sains, label="Population saine", color="green") courbeMalades.set_ylim(top=max(malades)*1.2) plotMalades = courbeMalades.plot(range(periodeEtude+1), malades, label="Population malade", color="red") # Mise en place des légendes courbes = plotSains + plotMalades legendes = [c.get_label() for c in courbes] courbeSains.legend(courbes, legendes, loc=0) # Configuration des grilles courbeSains.grid(which='major', axis='x', color='lightgray') # Affichage de la courbe plt.tight_layout() plt.show() 🞄 🞄 🞄 Suite de Syracuse Flux de population