{ "cells": [ { "cell_type": "markdown", "id": "db273aec-eea6-4787-827d-abb38e565923", "metadata": {}, "source": [ "# 12 septembre 2023 : modèle SIR (dynamique d'une épidémie)\n", "## Qu'est-ce que le modèle SIR ?\n", "L'algèbre linéaire est très utile lorsqu'on souhaite modéliser des systèmes dynamiques basés sur des catégories (tranches d'âge, étapes de développement ou de croissance, etc.). Le modèle SIR est un modèle simple qui permet de modéliser la dynamique d'une épidémie. Dans celui-ci, la population est répartie en quatre catégories :\n", "\n", "- les personnes **S**aines\n", "- les personnes **I**nfectées\n", "- les personnes **R**établies (et immunisées)\n", "- les personnes décédées\n", "\n", "Les individus passent d'une catégorie à l'autre selon des statistiques observées. Dans notre cas, on suppose ici que\n", "\n", "- parmi la population saine, 5\\% tombent malades et 95\\% restent S ;\n", "- parmi la population infectée, 1\\% meurt, 10\\% guérissent et deviennent R, 4% guérissent et redeviennent S et 85% restent infectés ;\n", "- 100% des personnes rétablies et des personnes décédées restent dans leur état.\n", "\n", "Inspiration :\n", "\n", "- S. Boyd et L. Vandenberghe, *Introduction to Applied Linear Algebra: Vectors, Matrices, and Least Squares*, Cambridge University Press, 2018." ] }, { "cell_type": "markdown", "id": "e9a7ffd3-5b10-4e02-8a20-8167fecc216b", "metadata": {}, "source": [ "### Exercice 0 : visualisation du graphe\n", "Commence par dessiner à la main le graphe dirigé correspond à ce modèle dynamique. Les catégories correspondent aux noeuds et le poids des arrêtes aux probabilités de passer d'une catégorie à l'autre." ] }, { "cell_type": "code", "execution_count": 1, "id": "6695aad5", "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "import matplotlib.pyplot as plt" ] }, { "cell_type": "markdown", "id": "695da9c1-ffeb-4577-bc79-199166609116", "metadata": {}, "source": [ "### Exercice 1 : implémenter le système dynamique linéaire de manière récursive\n", "Commence d'abord par écrire ci-dessous le système d'équations correspondant au modèle :" ] }, { "cell_type": "markdown", "id": "08af4f9b-b7b1-4a74-bdf3-1947c5bd445a", "metadata": {}, "source": [ "..." ] }, { "cell_type": "markdown", "id": "7c0315dc-7528-4171-aa31-83dbc5b78e16", "metadata": {}, "source": [ "Maintenant, affiche sur un graphe l'évolution de la proportion de la population présente dans chaque catégorie pour les 365 jours à venir. Considère qu'au temps initial, l'entièreté de la population est saine et que personne n'est immunisé.\n", "\n", "Calcule les proportions à chaque instant de **façon récursive**." ] }, { "cell_type": "code", "execution_count": 3, "id": "e4a48714-e5f7-4658-95e0-bd39b3a6233d", "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "...\n", "\n", "# Visualisation\n", "\n", "fig = plt.figure(figsize=(10, 6))\n", "ax1 = plt.subplot(1,1,1)\n", "\n", "plt.title(\"Simulation de la dynamique de l'épidémie pour 365 jours\")\n", "\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "6a08d519", "metadata": {}, "source": [ "### Exercice 2 : diagonaliser la matrice du système\n", "En général, on évite de résoudre le système de façon récursive car on souhaite parfois calculer une unique valeur (par exemple, la répartition dans les différentes catégories à 100 jours, 1000 jours, etc.). Le calcul récursif prend du temps et on préfère alors exprimer le vecteur d'état au jour $k$ en fonction du vecteur d'état initial. On a alors\n", "$$x_k = A^k x_0.$$\n", "\n", "Écris d'abord ci-dessous la matrice $A$ du système,\n", "$$A = ...$$\n", "\n", "Calculer $A^k$ n'est cependant pas si facile et prend beaucoup de temps numériquement. On va diagonaliser la matrice pour avoir uniquement une matrice diagonale à élever à la puissance $k$ (très facile !). On cherche donc la matrice $D$ et la matrice $X$ telles que\n", "$$A^k = X D^k X^{-1}.$$\n", "\n", "Utilise la librairie `linalg` de `numpy` pour diagonaliser la matrice. Donne ensuite la répartition de la population pour $k=100$, $k=1000$ et $k=10000$." ] }, { "cell_type": "code", "execution_count": 19, "id": "f577b81a", "metadata": {}, "outputs": [], "source": [ "..." ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.9.7" }, "vscode": { "interpreter": { "hash": "4a2701644a567983fe4c710d2a706eee629c52060847d7c704aa57db76d57a44" } } }, "nbformat": 4, "nbformat_minor": 5 }