From 874c7383d7aecfb14c27a83cf854183aee80c72a Mon Sep 17 00:00:00 2001 From: Orestis Malaspinas <orestis.malaspinas@hesge.ch> Date: Thu, 19 Mar 2020 21:09:50 +0100 Subject: [PATCH] added stufff --- covid/01_covid.md | 4 ++-- covid/python/covid.py | 27 ++++++++++++++++++--------- covid/python/data.txt | 21 +++++++++++++++++++++ 3 files changed, 41 insertions(+), 11 deletions(-) create mode 100644 covid/python/data.txt diff --git a/covid/01_covid.md b/covid/01_covid.md index 649157e..fec46bc 100644 --- a/covid/01_covid.md +++ b/covid/01_covid.md @@ -18,7 +18,7 @@ qui donne le nombre nombre d'individus ayant contracté une maladie en fonction du temps. La valeur $M_0=M(0)$ est le nombre de malades le jour où la maladie se déclare pour la première fois. On aimerait décrire l'évolution de cette maladie. Pour ce faire, nous allons écrire une équation -qui va représenter le taux de variation de $M(t)$, soit $M'(t)$, la dérivée de $M(t)$. +qui va calculer $M(t+\delta t)$ à partir de $M(t)$ qui est supposé connu. Supposons dans notre modèle très simplifié, que chaque personne malade contamine exactement deux personnes saines en un temps $\delta t$. @@ -50,7 +50,7 @@ Ce qu'on a fait ici comme modèle est un modèle compartimental (on a compartime on a divisé la population en une classe, celle des malades $M(t)$. Puis on a adjoint une règle d'évolution à cette classe: chaque jour chaque malade infecte deux nouvelles personnes. Ce modèle est très simpliste mais il illustre très bien -comment on constuit un modèle d'épidémie. +comment on construit un modèle d'épidémie. Par ailleurs, on peut se rendre compte que l'équation que nous avons écrite plus haut décrit l'évolution du *taux de variation* de $M(t)$. En effet, en réarrangeant les termes de cette équation, on a que diff --git a/covid/python/covid.py b/covid/python/covid.py index 87982cb..c6f3ad2 100644 --- a/covid/python/covid.py +++ b/covid/python/covid.py @@ -1,6 +1,11 @@ import numpy as np import matplotlib.pyplot as plt +swiss = np.array([2.100350058, 3.150525088, 4.900816803, 6.534422404, 10.501750292, 13.302217036, 24.970828471, 31.271878646, 39.323220537, 43.640606768, 57.292882147, 76.079346558, 100.116686114, 131.271878646, 158.576429405, 256.709451575, 256.709451575, 268.378063011, 309.218203034, 353.325554259, 453.675612602]) +swiss = np.array([18, 27, 42, 56, 90, 114, 214, 268, 337, 374, 491, 652, 858, 1125, 1359, 2200, 2200, 2300, 2650, 3028, 3888]) + +days = np.array(range(1,len(swiss)+1)) + def s(dt, beta, S0, I0, N): return S0 - dt * (beta * S0 * I0 / N) @@ -20,9 +25,9 @@ def timestep(S0, I0, R0, dt, beta, lamb, N): return S1, I1, R1 S0 = 400000 -I0 = 1 +I0 = swiss[0] R0 = 0 -max_t = 1000 +max_t = 30 n_steps = 1000 dt = max_t / n_steps @@ -30,7 +35,7 @@ dt = max_t / n_steps N = compute_n(S0, I0, R0) lamb = 1.0 / 14.0 -beta = 1 +beta = 0.33 s_list = [S0] r_list = [R0] @@ -42,16 +47,20 @@ for i in range(0, n_steps): i_list.append(I1) r_list.append(R1) t_list.append((i+1)*dt) - # if ((i+1)*dt >= 10): - # beta = 0.1, 0.25, 0.5 + # if ((i+1)*dt >= 10 and (i+1)*dt <= 365): + # beta = 0.1 + # else: + # beta = 1 -s = np.array(s_list) +s = np.array(s_list) r = np.array(r_list) ii = np.array(i_list) t = np.array(t_list) -plt.plot(t, s, 'b') -plt.plot(t, r, 'r') -plt.plot(t, ii, 'k') +# plt.plot(t, s, 'b') +# plt.plot(t, r, 'r') +plt.semilogy(t, ii, 'k') +plt.loglog(days, swiss, 'k*') +plt.legend(['S', 'I', 'R', swiss]) plt.show() diff --git a/covid/python/data.txt b/covid/python/data.txt new file mode 100644 index 0000000..2e62eb3 --- /dev/null +++ b/covid/python/data.txt @@ -0,0 +1,21 @@ +2.100350058 18 1 +3.150525088 27 2 +4.900816803 42 3 +6.534422404 56 4 +10.501750292 90 5 +13.302217036 114 6 +24.970828471 214 7 +31.271878646 268 8 +39.323220537 337 9 +43.640606768 374 10 +57.292882147 491 11 +76.079346558 652 12 +100.116686114 858 13 +131.271878646 1125 14 +158.576429405 1359 15 +256.709451575 2200 16 +256.709451575 2200 16 +268.378063011 2300 17 +309.218203034 2650 18 +353.325554259 3028 19 +453.675612602 3888 20 -- GitLab