Modelo para epidemias. Grupo 6-C
| Trabajo realizado por estudiantes | |
|---|---|
| Título | Modelo para epidemias. Grupo 6-C |
| Asignatura | Ecuaciones Diferenciales |
| Curso | Curso 2015-16 |
| Autores |
Manuel Jesús García Vega |
| Este artículo ha sido escrito por estudiantes como parte de su evaluación en la asignatura | |
Contenido
1 Introducción
En este artículo vamos a centrar nuestro estudio en el desarrollo de modelos que nos permitan hacer una estimación del comportamiento temporal de una enfermedad infecciosa sin extensión espacial.
Suponemos las siguientes hipótesis:
1. La población es un número fijo N y cada miembro de la población es susceptible a la enfermedad.
2. La duración de la enfermedad es larga, de manera que no se cura durante el periodo de estudio.
3. Todos los individuos infectados son contagiosos y circulan libremente entre la población.
4. Durante cada unidad de tiempo cada persona infectada tiene c contactos y cada contacto con una persona no infectada redunda en la transmisión de la enfermedad.
2 Cálculo del número de contactos aproximados 'c'
Para realizar el cálculo del número de contactos ‘aproximados’ c que tiene una persona por unidad de tiempo emplearemos un método numérico basado en la siguiente ecuación logística:
donde:
I(t): Número de personas contagidas al cabo de un tiempo de t semanas.
c: Número de contactos que tiene una persona pasadas t semanas.
N: Población total en el lugar de estudio.
Además sabemos que los servicios de salud pública registran la difusión de una epidemia de gripe de duración particularmente larga en una ciudad de 500 000 personas. Al inicio de la primera semana de registro se habían contabilizado 200 casos; durante la primera semana aparecieron 300 nuevos casos.
Para obtener el número de contactos utilizaremos el siguiente método númerico, el cual está basado en el método de Euler.
clear, close all
%Datos del problema
y=[];
y0=200;
c=linspace(1/100,99/100,99);
N=500000; %Población total;
x=linspace(0,300,99);
n=length(c); %numero de puntos
c0=c(1);
Y=N
%Esquema númérico
for i=1:n
Yfinal=Y;
Y=N*y0/(y0+(N-y0).*exp(-c(i))); % en t=1
y=[y;Y]
if abs(Y-500)<=abs(Yfinal-500)
c0=c(i)
end
end
min(abs(y-500)) %Error absoluto mínimo
plot(c,abs(y-500))
Al ejecutar el programa obtenemos el siguiente gráfico que representa la evolución del error que se produce para cada valor de c. Y se obtiene el valor de c que minimiza el error el cual es igual a 0,92.
3 Evolución de los Infectados por la Epidemia
Para determinar la evolución de los infectados por la epidemia conforme avanza el tiempo, emplearemos el método de Hern y el método de Runge Dutta de orden 4.
Método de Heun:
Método Runge-Kutta:
t0=0;
h=0.01;
z=[];
y=[];
y0=200;
z0=200
y(1)=y0;
z(1)=z0;
c =0.92;
N=500000;
for i=1:N;
while y<400000 & z<400000
% Método de Heun
K1H=(c*z(i))/N*(N-z(i));
K2H=(c*(z(i)+K1H*h))/N*(N-(z(i)+K1H*h));
z(i+1)=z(i)+(h/2)*(K1H+K2H);
%Método de Runge Kutta
k1=(c*y(i))/N*(N-y(i));
k2=(c*(y(i)+1/2*k1*h))/N*(N-(y(i)+1/2*k1*h));
k3=(c*(y(i)+1/2*k2*h))/N*(N-(y(i)+1/2*k2*h));
k4=(c*(y(i)+k3*h))/N*(N-(y(i)+h*k3));
y(i+1)=y(i)+(h/6)*(k1+2*k2+2*k3+k4);
i=i+1
end
end
%Discretización variable independiente
tN1=h*(length(y)-1);
tN2=h*(length(z)-1);
ty=t0:h:tN1;
tz=t0:h:tN2;
Semana_maxima_infeccion=[ty(end) tz(end)]
ValorAproximado=[y(7/h),z(7/h)]
hold on
plot(ty,y,'b')
plot(tz,z,'r')
legend('Runge Kutta','Heun','Location','best')
hold off
4 2a Parte: Modelo SIR
Ahora vamos a usar un modelo más general para estudiar la enfermedad, que divide la población total N en susceptibles de ser infectados(S), infectados(I), y removidos, que agrupa tanto a los curados como a los muertos (R). Así, el modelo, que tiene tres incógnitas, S(t), I(t) y R(t), y llamando r a la tasa de infección y a a la de remoción, lo podemos escribir:
4.1 Demostración de que S\left ( t \right )+I\left (t\right )+R\left ( t\right )=N
Sumando la variación de los susceptibles, los infectados y los removidos, vemos que esta es igual a 0, lo que nos quiere decir que la población total N es constante: \frac{\partial S}{\partial t}+\frac{\partial I}{\partial t}+\frac{\partial R}{\partial t}= S’\left ( t \right )+I’\left (t\right )+R’\left ( t\right )\left ( -rSI \right )+\left ( rSI-aI \right )+\left ( aI\right )=0, Además, si sumamos sus valores iniciales vemos que estos son igual a la población total, y al ser ésta constante, vemos que se demuestra el enunciado inicial S\left ( 0 \right )+I\left (0\right )+R\left ( 0\right )=N
4.2 Demostraciones analíticas con la tasa de remoción relativa
Llamamos tasa de remoción relativa a: \rho =\frac{r}{a} Vamos a demostrar que si dicha tasa es mayor o igual que el número de personas susceptibles iniciales, S\left ( 0 \right ), no hay epidemia, ya que el número de infectados no aumenta: También vamos a demostrar que, si dicha tasa es menor que la población susceptible inicial, habrá epidemia, pues aumentarán el número de infectados:
4.3 Resolución numérica
Ahora vamos a resolver numéricamente el problema de epidemias, usando los métodos de Euler, Euler implícito y Runge-Kutta de orden 4. Los aplicaremos a 3 casos, cada uno con diferentes datos, y probando con diferentes anchuras de paso: Mostramos el código para el primer caso con h=0.1
t0=0;%Intervalo de tiempo y anchura de paso
;tf=4;
h= 0.1
S0=159985; I0=15; % datos de la población
r=0.0000218; a=0.341; R0=0;
t=t0:h:tf;
k=((tf-t0)/h);
Se=[]; % método de euler
Ie=[];
Re=[];
Si=[]; % euler implícito
Ii=[];
Ri=[];
Sr=[]; % runge-kutta
Ir=[];
Rr=[];
Se(1)=S0;
Ie(1)=I0;
Re(1)=R0;
Si(1)=S0;
Ii(1)=I0;
Ri(1)=R0;
Sr(1)=S0;
Ir(1)=I0;
Rr(1)=R0;
% esquema numérico euler
for i=1:k
Ie(i+1)=Ie(i)+h*(r*Se(i)*Ie(i)-a*Ie(i));
Se(i+1)=Se(i)+h*(-r*Se(i)*Ie(i));
Re(i+1)=Re(i)+h*(a*Ie(i));
end
% esquema numérico euler implícito (es necesario despejar la I, la S y la R de (j+1) para definir el código
for j=1:k
Ii(j+1)=Ii(j)/(1-(h*r*Si(j))+a*h);
Si(j+1)=Si(j)/(1+r*h*Ii(j));
Ri(j+1)=Ri(j)+h*(a*Ii(j));
end
%esquema numerico runge-kutta
for n=1:k
k1S = -r*Sr(n)*Ir(n);
k1I = r*Sr(n)*Ir(n)-a*Ir(n);
k1R = a*Ir(n);
k2S = -r*(Sr(n) + 1/2*k1S*h)*(Ir(n) + 1/2*k1I*h);
k2I = r*(Sr(n) + 1/2*k1S*h)*(Ir(n) + 1/2*k1I*h)-a*(Ir(n) + 1/2*k1I*h);
k2R = a*(Ir(n) + 1/2*k1I*h);
k3S = -r*(Sr(n) + 1/2*k2S*h)*(Ir(n) + 1/2*k2I*h);
k3I = r*(Sr(n) + 1/2*k2S*h)*(Ir(n) + 1/2*k2I*h)-a*(Ir(n) + 1/2*k2I*h);
k3R = a*(Ir(n) + 1/2*k2I*h);
k4S = r*(Sr(n) + k3S*h)*(Ir(n) + k3I*h);
k4I = r*(Sr(n) + k3S*h)*(Ir(n) + k2I*h)-a*(Ir(n) + 1/2*k2I*h);
k4R = a*(Ir(n) + k3I*h);
Sr(n+1) = Sr(n) + (h/6)*(k1S+2*k2S+2*k3S+k4S);
Ir(n+1) = Ir(n) + (h/6)*(k1I+2*k2I+2*k3I+k4I);
Rr(n+1) = Rr(n) + (h/6)*(k1R+2*k2R+2*k3R+k4R);
end
hold on
plot(t,Ia,'--g',t,Sa,'--m',t,Ra,'--b')
plot(t,Ib,':g',t,Sb,':m',t,Rb,':b')
plot(t,Ic,'-g',t,Sc,'-m',t,Rc,'-b')
legend('I Euler','S Euler','R Euler','I Euler implícito','S Euler implícito','R Euler implícito','I Runge-Kutta','S Runge-Kutta','R Runge-Kutta','Location','best')
hold offA continuacion mostramos las gráficas obtenidas, para todas r=0,0000218 a=0,341:
| Archivo:Graficoo2.8.jpg Caso 2:S(0)=140000, I(0)=20000, h=0,1, 20 semanas |
Como se puede observar en las diferentes gráficas, cuanto menor es el tamaño de paso mas aproximado es el método, siéndolo el que más el de Runge-Kutta que además es el único de orden 4.
5 Interpretación de la epidemia y justificación de parámetros
En los tres casos que se nos plantean con distintos valores iniciales vemos que el número e individuos susceptibles a infectarse (S) se va reduciendo a medida que los individuos infectados (I) e individuos removidos (R) va aumentando, por lo que las variables que hemos utilizado se ajusta a los valores numéricos. Si vemos en un periodo medio de infección que se encontraría alrededor de tres semanas se puede apreciar cambios en todos los casos ya sea porque el número de susceptibles empiece a reducirse o porque dos de las tres variables se igualen en ese momento aproximadamente.
En los datos del caso 1, la población sana se contagia de la enfermedad prácticamente al completo antes de la quinta semana, aumentando a su vez, y como es lógico (R + I + S = N), los infectados y los curados, en menor medida estos últimos. Los infectados tienen un máximo entre la semana 3 y 4, a partir del cual empiezan a disminuir porque la población se recupera hasta casi su totalidad.
En el caso 2, la población sana se infecta casi en su totalidad antes de la segunda semana, con un aumento mucho mayor que el caso anterior. Esto se debe a que el número de infectados en el primer caso eran 15 y en el segundo 20 000. Las curvas de curados e infectados tienen la misma forma que en el caso 1 pero con unas variaciones más suaves, teniendo que pasar más de 20 semanas para que los curados tiendan a ser la población total.
En el caso 3, al haber inicialmente un único infectado, la población comienza a desarrollar la enfermedad en torno a la segunda semana, estando infectada casi en su mayoría al comienzo de la quinta semana. La variación de las curvas de infectados y sanos tienen una gran pendiente. Los curados tienen a aumentar con una pendiente más suave, hasta estabilizarse y llegar estar curada toda la población.
Realmente y como se ha dicho en el apartado anterior, las curvas S e I tienden a cero y la curva R tiende a N en el infinito, aunque es válido decir que son cero y N respectivamente cuando ha pasado un tiempo t lo suficientemente grande como para que el error del método sea pequeño.


