Diferencia entre revisiones de «Modelos epidemiológicos Grupo 6C»
(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 | + | 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 | + | 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 | |
Contenido
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