Diferencia entre revisiones de «Modelos epidemiológicos. (Grupo A4)»
(→Estudio de poblaciones mediante el método de Runge-Kutta) |
(→Análisis con parámetros variables) |
||
| Línea 129: | Línea 129: | ||
S = zeros(1,N+1); | S = zeros(1,N+1); | ||
I = zeros(1,N+1); | I = zeros(1,N+1); | ||
| − | + | ||
%Valores iniciales | %Valores iniciales | ||
S(1) = 1600; | S(1) = 1600; | ||
| Línea 135: | Línea 135: | ||
%Valores de los parámetros | %Valores de los parámetros | ||
| + | a = zeros(1,N+1); | ||
a(1) = 0.003/(1+t0); | a(1) = 0.003/(1+t0); | ||
b = 0.3; | b = 0.3; | ||
Revisión del 18:15 26 feb 2015
| Trabajo realizado por estudiantes | |
|---|---|
| Título | Modelos epidemiológicos. Grupo A11 |
| Asignatura | Ecuaciones Diferenciales |
| Curso | Curso 2014-15 |
| Autores | Nuestros nombres |
| Este artículo ha sido escrito por estudiantes como parte de su evaluación en la asignatura | |
Contenido
1 PÁGINA EN CONSTRUCCIÓN
2 Exposición del problema
En el desarrollo de una epidemia se distinguen dos tipos de individuos: los que ya han contraído la enfermedad o infectados "I", y los que son susceptibles de contraerla por encontrarse en zona de riesgo "S". Supongamos que se dan las siguientes hipótesis:
1. La población de personas infectadas se altera por el fallecimiento o la cura de las mismas.En ambos casos, la tasa de cambio depende del número de personas infectadas.
2. La tasa de individuos que pasan de ser susceptibles a contraer la enfermedad a estar infectados es proporcional a la interacción entre el número de individuos en ambas clases.
Consideramos las variables: t tiempo, S(t) población de individuos susceptibles a contraer la enfermedad, I(t) población de individuos infectados; y el sistema:
| [math] dS/dt=-aSI[/math] |
| [math]dI/dt=aSI-bI-cI [/math] |
explicar aqui que son las cosas
3 Estudio de poblaciones mediante el método de Runge-Kutta
1.Realizaremos varias simulaciones con diferentes valores de las poblaciones iniciales de infectados y susceptibles, el tiempo del estudio y el numero de intervalos. 2. Tomamos los mismos valores de los parámetros que en el apartado anterior: a = 0.003, b = 0.3 y c = 0.01
3. Los datos de poblaciones iniciales los nombraremos como "S(1) para los individuos susceptibles e "I(1)" para los infectados. El tiempo de estudio lo indica la variable "tN" y el paso la variable "h".
4.Aplicamos el método Runge-Kutta y lo programamos en Octave UPM. Escribimos el código una sola vez. Para sacar todas las gráficas de los diferentes modelos solo hay que cambiar los valores de las poblaciones iniciales, tiempo y paso.
clear all
%Valores del tiempo
t0 = 0;
tN = 40;
h = 0.1;
N = round((tN-t0)/h);
t = t0:h:tN;
%Vectores que contendrán la solución
S = zeros(1,N+1);
I = zeros(1,N+1);
%Valores iniciales
S(1) = 800;
I(1) = 20;
%Valores de los parámetros
a = 0.003;
b = 0.3;
c = 0.01;
%Bucle para sacar la componente i+1 de cada vector desde la primera hasta la N
for i = 1:N
K1 = -a*S(i)*I(i);
K2 = -a*S(i)*I(i) + 1/2*K1*h;
K3 = -a*S(i)*I(i) + 1/2*K2*h;
K4 = -a*S(i)*I(i) + K3*h;
S(i+1) = S(i) + h/6*(K1+2*K2+2*K3+K4);
L1 = (a*S(i)*I(i)) -I(i)*(b+c);
L2 = (a*S(i)*I(i)) -I(i)*(b+c) + 1/2*L1*h;
L3 = (a*S(i)*I(i)) -I(i)*(b+c) + 1/2*L2*h;
L4 = (a*S(i)*I(i)) -I(i)*(b+c) + L3*h;
I(i+1) = I(i) + h/6*(L1+2*L2+2*L3+L4);
end
%Gráficas
hold on
plot (t,S,'-')
plot (t,I,'-r')
hold offgrafica del codigo de arriba-------
grafica con poblaciones 10000,40--------
En esta gráfica se observa que al aumentar mucho los valores de la población el método no funciona. Es obvio, por ejemplo, que no puede haber poblaciones negativas ni existir las variaciones que se muestran en la gráfica. Esto es debido a que el paso es demasiado grande y en el bucle al haber números grandes también en la operaciones dan un error que provoca resultados incorrectos. Para solucionar esto simplemente disminuimos el paso a h=0.01 para analizar una mayor cantidad de intervalos y la nueva gráfica sale con la forma correcta. Añadimos también las gráficas con pasos h=0.001 y h=0.0001 en --colores-- y vemos que no hay mucha variación entre ellas.
gráfica arreglada + otros h-------
Hacemos un tercer análisis variando de nuevo las poblaciones y el tiempo de estudio. En los casos anteriores toda la población susceptible acababa infectada y posteriormente la población infectada también llegaba a 0. En este caso vemos que el parámetro "a" que es el de contagio, junto con los datos de las poblaciones iniciales no consiguen que toda la población susceptible sea infectada antes de que la población infectada desaparezca; por lo que cuando esta desaparece la población de susceptibles se mantiene constante.
grafica con gente salvada----------
Utilizamos los métodos de Euler y Runge-Kutta porque son métodos explícitos, es decir, que para calcular el valor del termino "i+i" solo se necesitan los valores de los términos "i" anteriores. por el contrario, en los métodos implícitos para calcular el valor "i+1" se necesitan los propios valores "i+1" lo que conlleva a despejar manualmente los parámetros que se buscan, lo que en muchos casos es complicado o incluso imposible.
4 Análisis con parámetros variables
En este apartado utilizaremos el método de Heun para solucionar el mismo problema, pero le añadiremos unas pequeñas variaciones.
1. Cambiamos los valores de las poblaciones iniciales haciendo que en inicio los susceptibles sean 1600 y los infectados 40.
2. El parámetro de contagio 'a' será variable con el tiempo con valor: [math]a=0.003/1+t[/math] Esto significa que para el momento inicial tendrá un valor de 0.003; pero al ser el denominador negativo según avance el tiempo se ira haciendo cada vez mas pequeño; es decir, que cuanto mas avance el tiempo se tendrán menos posibilidades de ser infectado en el contacto de las dos poblaciones. Matemáticamente esto significa que el primer sumando de ambas ecuaciones, que es en el que interviene "a", se hará cada vez menor, por lo que "S" decrecerá mas lentamente (al tener signo negativo) e "I" crecerá mas lentamente (al tener signo positivo).
El código utilizado y los resultados obtenidos son los siguientes.
clear all
%Valores del tiempo
t0 = 0;
tN = 40;
h = 0.1;
N = round((tN-t0)/h);
t = t0:h:tN;
%Vectores que contendrán la solución
S = zeros(1,N+1);
I = zeros(1,N+1);
%Valores iniciales
S(1) = 1600;
I(1) = 40;
%Valores de los parámetros
a = zeros(1,N+1);
a(1) = 0.003/(1+t0);
b = 0.3;
c = 0.01;
%Bucle para sacar la componente i+1 de cada vector desde la primera hasta la N
for i = 1:N
a(i+1) = 0.003/(1+t(i));
K1 = -a(i)*S(i)*I(i);
K2 = -a(i)*S(i)*I(i) + K1*h;
S(i+1) = S(i) + h/2*(K1+K2);
L1 = (a(i)*S(i)*I(i)) -I(i)*(b+c);
L2 = (a(i)*S(i)*I(i)) -I(i)*(b+c) + L1*h;
I(i+1) = I(i) + h/2*(L1+L2);
end
%Gráficas
hold on
plot (t,S,'-')
plot (t,I,'-r')
hold off
grafica------
Como vemos, al disminuir el ratio de contagio conseguimos que parte de la población sana no se infecte; y cuando esta desaparece por culpa de los términos "-bI" y "-cI", la población sana se mantiene constante. Si al contrario de esto el parámetro "a" tuviera un denominador menor que 1, cada vez el riesgo de contagio seria mayor y la disminución de población sana y aumento de los infectados sería mucho mas rápido.