Modelo para epidemias. Grupo 6-C

De MateWiki
Saltar a: navegación, buscar
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
Alberto Jordá Laguna
Pablo Molinero Brito

Este artículo ha sido escrito por estudiantes como parte de su evaluación en la asignatura


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: Ecuación Logística.png

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.

EpidemiaEuler.jpg

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étodoHeun.png

Método Runge-Kutta:

MétodoRungeKutta.png


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:

Modelo SIR

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

Primera demostración del apartado 4.2
Segunda demostración del apartado 4.3

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 off

A continuacion mostramos las gráficas obtenidas, para todas r=0,0000218 a=0,341:

Caso 1:S(0)=159985, I(0)=15, h=0,1, 4 semanas
Caso 1:S(0)=159985, I(0)=15, h=0,1 20 semanas
Caso 1:S(0)=159985, I(0)=15, h=0,01 4 semanas
Caso 1:S(0)=159985, I(0)=15, h=0,01 20 semanas
Caso 1:S(0)=159985, I(0)=15, h=0,001 4 semanas
Caso 1:S(0)=159985, I(0)=15, h=0,001 20 semanas
Caso 2:S(0)=140000, I(0)=20000, h=0,1, 4 semanas
Archivo:Graficoo.2.8.jpg
Caso 2:S(0)=140000, I(0)=20000, h=0,1, 20 semanas
Caso 2:S(0)=140000, I(0)=20000, h=0,01, 4 semanas
Caso 2:S(0)=140000, I(0)=20000, h=0,01, 20 semanas
Caso 2:S(0)=140000, I(0)=20000, h=0,1, 4 semanas
Caso 2:S(0)=140000, I(0)=20000, h=0,01, 20 semanas


Caso 3:S(0)=159999, I(0)=1, h=0,1, 4 semanas
Archivo:Graficoo.2.8.jpg
Caso 3:S(0)=159999, I(0)=1, h=0,1, 20 semanas
Caso 3:S(0)=159999, I(0)=1, h=0,01, 4 semanas
Caso 3:S(0)=159999, I(0)=1, h=0,01, 20 semanas
Caso 3:S(0)=159999, I(0)=1, h=0,1, 4 semanas
Caso 3:S(0)=159999, I(0)=1, h=0,01, 20 semanas