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