GUIDE Matlab
Publicado por Nicko (1 intervención) el 20/01/2015 06:11:07
Buenas noches prof. Jeremias
Queria saber como puedo utilizar el ode45 para desarrollar un sistema de ecuaciones diferenciales mediante el GUIDE MATLAB.
Se utilizar el ode45, tengo mi codigo de runge kutta pero no se como puedo implementarlo en un GUIDE pues no me reconoce dbidamente los valores pues me arroja valores muy grandes.
Muchas Gracias.
Codigo
***********************************************
Ss = handles.edit3; % SUCEPTIBLES
Ys = handles.edit4; % INFECTADOS
Rs = handles.edit5; % RECUPERADOS
bs = handles.edit1; % TASA DE CONTAGIO
rs = handles.edit2; % TASA DE RECUPERACION
T = handles.edit6; % TIEMPO LIMITE
x0=0
n=50;
h=(T-x0)/n;
% SISTEMA DE E.D.O.
ys1='-bs*Ss*Ys';
ys2='bs*Ss*Ys-rs*Ys';
ys3='rs*Ys';
F1=inline(ys1,'x','Ss','Ys','Rs','bs','rs');
F2=inline(ys2,'x','Ss','Ys','Rs','bs','rs');
F3=inline(ys3,'x','Ss','Ys','Rs','bs','rs');
x(1)=x0;
w1(1)=Ss;
w2(1)=Ys;
w3(1)=Rs;
for i=1:n
k11=h*F1(x(i),w1(i),w2(i),w3(i),bs,rs);
k12=h*F1(x(i)+h/2,w1(i)+k11/2,w2(i)+k11/2,w3(i)+k11/2,bs,rs);
k13=h*F1(x(i)+h/2,w1(i)+k12/2,w2(i)+k12/2,w3(i)+k12/2,bs,rs);
k14=h*F1(x(i)+h,w1(i)+k13,w2(i)+k13,w3(i)+k13,bs,rs);
k21=h*F2(x(i),w1(i),w2(i),w3(i),bs,rs);
k22=h*F2(x(i)+h/2,w1(i)+k21/2,w2(i)+k21/2,w3(i)+k21/2,bs,rs);
k23=h*F2(x(i)+h/2,w1(i)+k22/2,w2(i)+k22/2,w3(i)+k22/2,bs,rs);
k24=h*F2(x(i)+h,w1(i)+k23,w2(i)+k23,w3(i)+k23,bs,rs);
k31=h*F3(x(i),w1(i),w2(i),w3(i),bs,rs);
k32=h*F3(x(i)+h/2,w1(i)+k31/2,w2(i)+k31/2,w3(i)+k31/2,bs,rs);
k33=h*F3(x(i)+h/2,w1(i)+k32/2,w2(i)+k32/2,w3(i)+k32/2,bs,rs);
k34=h*F3(x(i)+h,w1(i)+k33,w2(i)+k33,w3(i)+k33,bs,rs);
w1(i+1)=w1(i)+(k11+2*k12+2*k13+k14)/6;
w2(i+1)=w2(i)+(k21+2*k22+2*k23+k24)/6;
w3(i+1)=w3(i)+(k31+2*k32+2*k33+k34)/6;
x(i+1)=x0+i*h;
end
Queria saber como puedo utilizar el ode45 para desarrollar un sistema de ecuaciones diferenciales mediante el GUIDE MATLAB.
Se utilizar el ode45, tengo mi codigo de runge kutta pero no se como puedo implementarlo en un GUIDE pues no me reconoce dbidamente los valores pues me arroja valores muy grandes.
Muchas Gracias.
Codigo
***********************************************
Ss = handles.edit3; % SUCEPTIBLES
Ys = handles.edit4; % INFECTADOS
Rs = handles.edit5; % RECUPERADOS
bs = handles.edit1; % TASA DE CONTAGIO
rs = handles.edit2; % TASA DE RECUPERACION
T = handles.edit6; % TIEMPO LIMITE
x0=0
n=50;
h=(T-x0)/n;
% SISTEMA DE E.D.O.
ys1='-bs*Ss*Ys';
ys2='bs*Ss*Ys-rs*Ys';
ys3='rs*Ys';
F1=inline(ys1,'x','Ss','Ys','Rs','bs','rs');
F2=inline(ys2,'x','Ss','Ys','Rs','bs','rs');
F3=inline(ys3,'x','Ss','Ys','Rs','bs','rs');
x(1)=x0;
w1(1)=Ss;
w2(1)=Ys;
w3(1)=Rs;
for i=1:n
k11=h*F1(x(i),w1(i),w2(i),w3(i),bs,rs);
k12=h*F1(x(i)+h/2,w1(i)+k11/2,w2(i)+k11/2,w3(i)+k11/2,bs,rs);
k13=h*F1(x(i)+h/2,w1(i)+k12/2,w2(i)+k12/2,w3(i)+k12/2,bs,rs);
k14=h*F1(x(i)+h,w1(i)+k13,w2(i)+k13,w3(i)+k13,bs,rs);
k21=h*F2(x(i),w1(i),w2(i),w3(i),bs,rs);
k22=h*F2(x(i)+h/2,w1(i)+k21/2,w2(i)+k21/2,w3(i)+k21/2,bs,rs);
k23=h*F2(x(i)+h/2,w1(i)+k22/2,w2(i)+k22/2,w3(i)+k22/2,bs,rs);
k24=h*F2(x(i)+h,w1(i)+k23,w2(i)+k23,w3(i)+k23,bs,rs);
k31=h*F3(x(i),w1(i),w2(i),w3(i),bs,rs);
k32=h*F3(x(i)+h/2,w1(i)+k31/2,w2(i)+k31/2,w3(i)+k31/2,bs,rs);
k33=h*F3(x(i)+h/2,w1(i)+k32/2,w2(i)+k32/2,w3(i)+k32/2,bs,rs);
k34=h*F3(x(i)+h,w1(i)+k33,w2(i)+k33,w3(i)+k33,bs,rs);
w1(i+1)=w1(i)+(k11+2*k12+2*k13+k14)/6;
w2(i+1)=w2(i)+(k21+2*k22+2*k23+k24)/6;
w3(i+1)=w3(i)+(k31+2*k32+2*k33+k34)/6;
x(i+1)=x0+i*h;
end
Valora esta pregunta


0