Skip to content
Snippets Groups Projects
Commit 874c7383 authored by orestis.malaspin's avatar orestis.malaspin
Browse files

added stufff

parent 312a50fb
No related branches found
No related tags found
No related merge requests found
Pipeline #10082 passed
......@@ -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
......
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()
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
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment