Diferencia entre revisiones de «Modelos epidemiológicos Grupo 6C»

De MateWiki
Saltar a: navegación, buscar
(Página creada con «{{ TrabajoED | Modelos epidemiológicos. Grupo 6-C | Ecuaciones Diferenciales|Curso 2014-15 | Manuel Moral...»)
 
Línea 1: Línea 1:
 
{{ TrabajoED | Modelos epidemiológicos. Grupo 6-C | [[:Categoría:Ecuaciones Diferenciales|Ecuaciones Diferenciales]]|[[:Categoría:ED14/15|Curso 2014-15]] |  
 
{{ TrabajoED | Modelos epidemiológicos. Grupo 6-C | [[:Categoría:Ecuaciones Diferenciales|Ecuaciones Diferenciales]]|[[:Categoría:ED14/15|Curso 2014-15]] |  
Manuel Morales López 1175; David Toledo Menéndez 1228; Sergio Rodríguez Torcal 994; Jose María Rodríguez Vicente 1213; Lourdes Sánchez-Ocaña Merino 1248; Jorge Villa Lobo 1237 }}
+
Manuel Morales López 1175
 +
David Toledo Menéndez 1228
 +
Sergio Rodríguez Torcal 994
 +
Jose María Rodríguez Vicente 1213
 +
Lourdes Sánchez-Ocaña Merino 1248
 +
Jorge Villa Lobo 1237 }}
 
==Enunciado==
 
==Enunciado==
  
Línea 16: Línea 21:
 
dI
 
dI
 
dt = aSI − bI − cI
 
dt = aSI − bI − cI
donde a, b, c son par´ametros.
+
donde a, b, c son parametros.
 
   
 
   
 
==Interpretación de parámetros==
 
==Interpretación de parámetros==
 +
En el problema: el coeficiente "a" es la tasa de infectados por contagio, "b" la de muertos y "c" la de curados.
 +
  
 
==Método de Euler y Trapecio con S=0==
 
==Método de Euler y Trapecio con S=0==
 +
{{matlab|codigo=
 +
%Apartado 2 trabajo1 2015
 +
% Euler
 +
clear all
 +
%DATOS DEL PROBLEMA
 +
t0=0;
 +
tN=20;
 +
y0=2000;
 +
h=0.01;
 +
%Calculamos número de subintervalos
 +
N=(tN-t0)/h;
 +
% Definimos la variable independiente
 +
t=t0:h:tN;
 +
%Ahora vamos a guardar los valores de la solución aproximada en el vector y
 +
y=zeros(1,N+1); %euler
 +
y(1)=y0;
 +
for i=1:N
 +
    y(i+1)=y(i)-h*(0.3+0.001)*y(i);
 +
end
 +
%sacamos tabla de resultados
 +
[t',y']
 +
%gráfico
 +
[minimo,indice]=min(abs(y-500))
 +
f=y(indice)
 +
p=t(find(y==(500-minimo)))
 +
%p=4.47 %el valor lo hallamos fuera del progarama a mano
 +
hold on
 +
plot(p,y,'r-')
 +
plot(t,f,'r-')
 +
plot(t,y)
 +
hold off
 +
sprintf('El valor 500 se alcanza en el tiempo: %d', p)
 +
legend('Euler','Location','best'); % lo último es para que la leyenda salga en la mejor localizacion}}
  
 
==Método de Euler y Trapecio con S=100==
 
==Método de Euler y Trapecio con S=100==
 +
Se puede interpretar como que a partir de un valor limite de "S" entre 100 y 200, el numero de infectados se mantiene constante en el tiempo. De igual forma, si "S" es  menor que este valor limite, el numero de infectados desciende en el tiempo, y si es mayor que el valor limite "S", asciende.
 +
{{matlab|codigo=
 +
%Apartado 3 trabajo 6-C 2015
 +
clear all
 +
t0=0; tN=40; %Intervalo de tiempo tomado
 +
S0=input('introduce valor de población susceptible: ');
 +
I0=2000; %Valores iniciales de infectados(I) y susceptibles(S)
 +
h=0.1; %Determinación del paso
 +
t=t0:h:tN; %Desarrollo del tiempo desde t0 hasta tN tomando intervalos de paso h
 +
a=0.003; %valores de los parametros
 +
b=0.3;
 +
c=0.01;
 +
N=(tN-t0)/h;
 +
S(1)=S0; %Asignacion del valor incial para la primera componente
 +
I(1)=I0;
 +
 +
%Resolucion del sistema de forma matricial
 +
for n=1:N
 +
  A=[S0;I(n)]+h*[-a*S0*I(n);a*S0*I(n)-(b+c)*I(n)];
 +
  S(n+1)=S0;%Asignacion de los distintos valores de S como la primera compnente de la matriz A
 +
  I(n+1)=A(2); %Asignacion de los distintos valores de I como la primera componente de la matriz A
 +
end
 +
 +
%Interpretación gráfica
 +
hold on
 +
figure(1)
 +
plot(t,S,'r')
 +
plot(t,I,'b')
 +
hold off}}
  
 
==Modelo completo==
 
==Modelo completo==
  
 +
{{matlab|codigo=
 +
%Apartado 4 trabajo 6-C 2015
 +
clear all
 +
t0=0; tN=40; %Intervalo de tiempo tomado
 +
S0=input('introduce valor de población susceptible: ');
 +
I0=input('introduce valor de población infectada inicial: '); %Valores iniciales de infectados(I) y susceptibles(S)
 +
h=input('introduce valor del paso de tiempo: '); %Determinación del paso
 +
t=t0:h:tN; %Desarrollo del tiempo desde t0 hasta tN tomando intervalos de paso h
 +
a=0.003; %valores de los parametros
 +
b=0.3;
 +
c=0.01;
 +
N=(tN-t0)/h;
 +
S(1)=S0; %Asignacion del valor incial para la primera componente
 +
I(1)=I0;
 +
 +
%Resolucion del sistema de forma matricial
 +
for n=1:N
 +
  A=[S(n);I(n)]+h*[-a*S(n)*I(n);a*S(n)*I(n)-(b+c)*I(n)];
 +
  S(n+1)=A(1);%Asignacion de los distintos valores de S como la primera compnente de la matriz A
 +
  I(n+1)=A(2); %Asignacion de los distintos valores de I como la primera componente de la matriz A
 +
end
 +
 +
%Interpretación gráfica
 +
hold on
 +
figure(1)
 +
plot(t,S,'r')
 +
plot(t,I,'b')
 +
hold off
 +
maximo=max(I)
 +
posicion=find(I==maximo)
 +
tiempo=t(posicion)}}
 
==Comparación Runge-Kutta con Euler==
 
==Comparación Runge-Kutta con Euler==
 +
{{matlab|codigo=
 +
%Apartado 5 trabajo 6-C 2015
 +
clear all
 +
t0=0; tN=30; %Intervalo de tiempo tomado
 +
y1=input('introduce valor de población susceptible inicial: ');
 +
y2=input('introduce valor de población infectada inicial: ');
 +
y0=[y1;y2]; %Valores de población iniciales (Susceptibles e Infectados)
 +
h=input('introduce valor del paso del tiempo: ');
 +
N=(tN-t0)/h;
 +
y=y0;
 +
S(1)=y(1); %Asignación del valor incial para la primera componente de S
 +
I(1)=y(2); %Asignación del valor incial para la primera componente de I
 +
a=0.003; % Valores de los parámetros
 +
b=0.3; c=0.01; %Resolución empleando el método Runge Kutta
 +
 +
for n=1:N 
 +
    k1=[-a*y(1)*y(2);a*y(1)*y(2)-(b+c)*y(2)];   
 +
    k2=[-a*(y(1)+1/2*h*k1(1))*(y(2)+1/2*h*k1(2));a*(y(1)+1/2*h*k1(1))*(y(2)+1/2*h*k1(2)-(b+c)*(y(2)+1/2*h*k1(2)))];       
 +
    k3=[-a*(y(1)+1/2*h*k2(1))*(y(2)+1/2*h*k2(2));a*(y(1)+1/2*h*k2(1))*(y(2)+1/2*h*k2(2)-(b+c)*(y(2)+1/2*h*k2(2)))];
 +
    k4=[-a*(y(1)+h*k3(1))*(y(2)+h*k3(2));a*(y(1)+h*k3(1))*(y(2)+h*k3(2)-(b+c)*(y(2)+h*k3(2)))];   
 +
    y=y+h/6*(k1+2*k2+2*k3+k4);   
 +
    S(n+1)=y(1);   
 +
    I(n+1)=y(2);
 +
end
 +
t=t0:h:tN;
 +
figure(1)
 +
hold on
 +
plot(t,S,'b')
 +
plot(t,I,'r')
 +
hold off
 +
 +
for n=1:N
 +
    A=[S(n);I(n)]+h*[-a*S(n)*I(n);a*S(n)*I(n)-(b+c)*I(n)];
 +
    S(n+1)=A(1);%Asignacion de los distintos valores de S como la primera compnente de la matriz A
 +
    I(n+1)=A(2); %Asignacion de los distintos valores de I como la primera componente de la matriz A
 +
end
 +
%Interpretación gráfica
 +
figure(2)
 +
hold on
 +
plot(t,S,'b')
 +
plot(t,I,'r')
 +
hold off}}
  
 
==Tasa de infectados por contagio dependiente del tiempo. Método de Heun==
 
==Tasa de infectados por contagio dependiente del tiempo. Método de Heun==

Revisión del 14:37 27 feb 2015

Trabajo realizado por estudiantes
Título Modelos epidemiológicos. Grupo 6-C
Asignatura Ecuaciones Diferenciales
Curso Curso 2014-15
Autores

Manuel Morales López 1175 David Toledo Menéndez 1228 Sergio Rodríguez Torcal 994 Jose María Rodríguez Vicente 1213 Lourdes Sánchez-Ocaña Merino 1248 Jorge Villa Lobo 1237

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

1 Enunciado

En el desarrollo de una epidemia se distinguen dos tipos de individuos: los que ya han contraido 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´otesis: 1. La poblaci´on de personas infectadas se altera por el fallecimiento o la cura de las mismas. En ambos casos, la tasa de cambio depende del n´umero 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´on entre el n´umero de individuos en ambas clases. Consideramos las variables: t tiempo, S(t) poblaci´on de individuos susceptibles a contraer la enfermedad, I(t) poblaci´on de individuos infectados; y el sistema: dS dt = −aSI dI dt = aSI − bI − cI donde a, b, c son parametros.

2 Interpretación de parámetros

En el problema: el coeficiente "a" es la tasa de infectados por contagio, "b" la de muertos y "c" la de curados.


3 Método de Euler y Trapecio con S=0

%Apartado 2 trabajo1 2015
% Euler 
clear all
%DATOS DEL PROBLEMA
t0=0;
tN=20;
y0=2000;
h=0.01;
%Calculamos número de subintervalos
N=(tN-t0)/h;
% Definimos la variable independiente
t=t0:h:tN;
%Ahora vamos a guardar los valores de la solución aproximada en el vector y
y=zeros(1,N+1); %euler 
y(1)=y0;
for i=1:N
    y(i+1)=y(i)-h*(0.3+0.001)*y(i);
end
%sacamos tabla de resultados
[t',y']
%gráfico
[minimo,indice]=min(abs(y-500))
f=y(indice)
p=t(find(y==(500-minimo)))
%p=4.47 %el valor lo hallamos fuera del progarama a mano
hold on
plot(p,y,'r-')
plot(t,f,'r-')
plot(t,y)
hold off
sprintf('El valor 500 se alcanza en el tiempo: %d', p)
legend('Euler','Location','best'); % lo último es para que la leyenda salga en la mejor localizacion


4 Método de Euler y Trapecio con S=100

Se puede interpretar como que a partir de un valor limite de "S" entre 100 y 200, el numero de infectados se mantiene constante en el tiempo. De igual forma, si "S" es menor que este valor limite, el numero de infectados desciende en el tiempo, y si es mayor que el valor limite "S", asciende.

%Apartado 3 trabajo 6-C 2015
clear all
t0=0; tN=40; %Intervalo de tiempo tomado
S0=input('introduce valor de población susceptible: '); 
I0=2000; %Valores iniciales de infectados(I) y susceptibles(S) 
h=0.1; %Determinación del paso 
t=t0:h:tN; %Desarrollo del tiempo desde t0 hasta tN tomando intervalos de paso h
a=0.003; %valores de los parametros
b=0.3;
c=0.01;
N=(tN-t0)/h;
S(1)=S0; %Asignacion del valor incial para la primera componente
I(1)=I0;
 
%Resolucion del sistema de forma matricial
for n=1:N
   A=[S0;I(n)]+h*[-a*S0*I(n);a*S0*I(n)-(b+c)*I(n)];
   S(n+1)=S0;%Asignacion de los distintos valores de S como la primera compnente de la matriz A
   I(n+1)=A(2); %Asignacion de los distintos valores de I como la primera componente de la matriz A
end

%Interpretación gráfica 
hold on
figure(1) 
plot(t,S,'r')
plot(t,I,'b')
hold off


5 Modelo completo

%Apartado 4 trabajo 6-C 2015
clear all
t0=0; tN=40; %Intervalo de tiempo tomado
S0=input('introduce valor de población susceptible: '); 
I0=input('introduce valor de población infectada inicial: '); %Valores iniciales de infectados(I) y susceptibles(S) 
h=input('introduce valor del paso de tiempo: '); %Determinación del paso 
t=t0:h:tN; %Desarrollo del tiempo desde t0 hasta tN tomando intervalos de paso h
a=0.003; %valores de los parametros
b=0.3;
c=0.01;
N=(tN-t0)/h;
S(1)=S0; %Asignacion del valor incial para la primera componente
I(1)=I0;
 
%Resolucion del sistema de forma matricial
for n=1:N
   A=[S(n);I(n)]+h*[-a*S(n)*I(n);a*S(n)*I(n)-(b+c)*I(n)];
   S(n+1)=A(1);%Asignacion de los distintos valores de S como la primera compnente de la matriz A
   I(n+1)=A(2); %Asignacion de los distintos valores de I como la primera componente de la matriz A
end

%Interpretación gráfica 
hold on
figure(1) 
plot(t,S,'r')
plot(t,I,'b')
hold off
maximo=max(I)
posicion=find(I==maximo)
tiempo=t(posicion)

6 Comparación Runge-Kutta con Euler

%Apartado 5 trabajo 6-C 2015
clear all
t0=0; tN=30; %Intervalo de tiempo tomado
y1=input('introduce valor de población susceptible inicial: ');
y2=input('introduce valor de población infectada inicial: ');
y0=[y1;y2]; %Valores de población iniciales (Susceptibles e Infectados)
h=input('introduce valor del paso del tiempo: ');
N=(tN-t0)/h;
y=y0;
S(1)=y(1); %Asignación del valor incial para la primera componente de S
I(1)=y(2); %Asignación del valor incial para la primera componente de I
a=0.003; % Valores de los parámetros
b=0.3; c=0.01; %Resolución empleando el método Runge Kutta
 
for n=1:N  
    k1=[-a*y(1)*y(2);a*y(1)*y(2)-(b+c)*y(2)];    
    k2=[-a*(y(1)+1/2*h*k1(1))*(y(2)+1/2*h*k1(2));a*(y(1)+1/2*h*k1(1))*(y(2)+1/2*h*k1(2)-(b+c)*(y(2)+1/2*h*k1(2)))];         
    k3=[-a*(y(1)+1/2*h*k2(1))*(y(2)+1/2*h*k2(2));a*(y(1)+1/2*h*k2(1))*(y(2)+1/2*h*k2(2)-(b+c)*(y(2)+1/2*h*k2(2)))];
    k4=[-a*(y(1)+h*k3(1))*(y(2)+h*k3(2));a*(y(1)+h*k3(1))*(y(2)+h*k3(2)-(b+c)*(y(2)+h*k3(2)))];    
    y=y+h/6*(k1+2*k2+2*k3+k4);    
    S(n+1)=y(1);    
    I(n+1)=y(2);
end
t=t0:h:tN;
figure(1)
hold on
plot(t,S,'b')
plot(t,I,'r')
hold off

for n=1:N
    A=[S(n);I(n)]+h*[-a*S(n)*I(n);a*S(n)*I(n)-(b+c)*I(n)];
    S(n+1)=A(1);%Asignacion de los distintos valores de S como la primera compnente de la matriz A
    I(n+1)=A(2); %Asignacion de los distintos valores de I como la primera componente de la matriz A
end
%Interpretación gráfica
figure(2)
hold on
plot(t,S,'b')
plot(t,I,'r')
hold off


7 Tasa de infectados por contagio dependiente del tiempo. Método de Heun

8 Calibración del parámetro a