Matlab - Cómo calcular el valor de los parámetros para que minimicen una función?

 
Vista:

Cómo calcular el valor de los parámetros para que minimicen una función?

Publicado por María (1 intervención) el 11/06/2018 21:21:49
Buenas estoy intentando simular el modelo SIR el cual permite predecir el número de susceptibles, infectados y recuperados cuando se produce una epidemia. En este caso cuento con los datos S0=762, I0=1, R0=1 (S0:numero inicial de susceptibles, I0:número inicial de infectados y R0:número inicial de recuperados), alpha=0.5661 y beta=0.002526. Las ecuaciones diferenciales que tengo para poner aplicar ode45 son

dS/dt= -beta*S*I

dI/dt= beta*S*I-alpha*I

dR/dt=alpha*I

Bien una vez que he calculado los valores de S,I y R, al graficarlo veo que no se ajusta muy bien a los datos reales. Por lo que quiero es buscar los valores de los parámetros alpha y beta que miniminicen la función: sumatorio de i=0 a 14 de (Î(i)-I(i))^2 donde I(i) es el número real de infectados en el día i y Î(i) es el número aproximado de individuos infectados que se ha obtenido resolviendo numéricamente el sistema anterior con ode45 usando los datos iniciales ya mencionados y los parámetros beta y alpha que se vayan calculando en cada iteración.

¿Cómo podría hacer para obtener los valores de estos parámetros? Agradecería mucho vuestra ayuda. A continuación dejo lo que tengo de código.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
clear all
hold on
alpha=0.5661;
beta=0.002624;
f =@(t,x) [-beta*x(1)*x(2);beta*x(1)*x(2) - alpha*x(2);alpha*x(2)];
[t,xa] = ode45( f,[0 14],[762 1 0]);
x=[1 2 3 4 5 6 7 8 9 10 11 12 13 14]; %días 
y=[3 8 28 75 221 291 255 235 190 125 10 28 12 5]; %datos reales de infectados por dia
%por tanto en el dia 1 hay 3 infectados, en el día 2 hay 8 y asi..
I=xa(:,2); %número de infectados obtenidos con ode45
% 
%  
suma =0;
   for i=1:14
       suma_nueva=(I(i)-y(i))^2;
       suma=suma+suma_nueva; %encontrar los valores de alpha y beta que miniminicen esta función
                            %siendo I(i) el número aprox de infectados en
                            %el dia i e y(i) el numero real de infectados
                            %en el dia i
   end
   suma
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder