Utilizació de MATLAB e la solució de ecuacioes difereciales co ua itroducció a la modelizacó matematica Muchas de las ecuacioes difereciales co las cuales os ecotramos o so maejables e forma exacta como se aprede e los cursos sobre ODE. Ua herramieta e el aálisis de estas ecuacioes es el uso de paquetes de solució umérica de ecuacioes difereciales. Otras metodologías proporcioa u aalisis cualitativo de las solucioes y asi obteemos algua iformació acerca de las solucioes auque o exista ua forma explicita para la misma..veremos como Matlab puede ser utilizado como ua herramieta para ecotrar ua solució aproximada y así poder dibujarla. Ecuació diferecial escalar. Primeramete estudiaremos el caso mas simple co ua sola variable, la cual tiee la forma geeral: dz F(, tz) = zt ( ) = z 0 0 Pesamos a la variable t como el tiempo y z como la variable que describe el estado del sistema. E geeral uo trata co sistemas autóomos (idepedietes del tiempo), pero aquí es dode matlab se hace fuerte pudiedo tratar co sistemas mas geerales e los cuales el miembro derecho depeda del tiempo y de las variables de estado del sistema. Veamos Matlab puede ser usado para resolver el modelo de Verhulst dn N = rn(1 ) (1.1) K Nt ( ) = N 0 0 La variable de estado es escrita como N e vez de z. Los parámetros r y K so cotates que represeta el crecimieto si obtaculos (por ejemplo si limitacioes e los recursos o poblacioes pequeñas o e estado isipiete) y la capacidad de trasporte. Supogamos por u mometo de cómo se resuelve la ecuació de Verhults por separació de variables. He aquí como Matlab puede evaluar aproximadamete y dibujar si coocer e forma explícita la formula para la solució exacta. Primero escribimos ua Mfile que compute F, el lado derecho de la ecuació diferecial. Para el caso del modelo de Verhults N F = F(, t N) = rn(1 ) K A cotiuació se reproduce el código de la fució que resuelve el modelo de Verhulst
fuctio F=verhulst(t,N) % esta fucio devuelve la velocidad de cambio de la poblacio para el % modelo de verhulst % el usuario debe ajustar parametros e la seccio de USER PARAMETERS % % dn/=f(n)=r N (1 - N/K) % % Iput variables % t=time % N=curret populatio size % % Iput parameters (exteros): % r=uhitered per capita growth rate of populatio % N=curret populatio size % output variables % F=velocidad de cambio de la poblacio (dn/) % parametros del usuario r=0.55; K=665; % computo pricipal F=r*(1-N/K)*N; retur Hay que hacer otar que auque F o depede explícitamete del tiempo se ha icluido como argumeto e la etrada de la primera liea. Esto es ecesario para que el ODE solver pueda trabajar apropiadamete El primer argumeto de la fució debe ser la variable tiempo, y el segudo argumeto de la fucio debe ser la variable de estado, la cual e este caso es llamada N. Matlab por supuesto requiere úmeros específicos para todos los parámetros de etrada, de modo que se debe proporcioar valores para r y K. Es coveiete recolectar todas las costates de etrada e u lugar como por ejemplo se hizo e la seccio %User parameters de forma que el usuario pueda cambiar los valores co facilidad. Ahora supodremos que queremos resolver el modelo de verhults (1.1) sobre el itervalo de tiempo 0< t < 18 horas (se debe estar alerta hacerca de la cosistecia de las uidades tal como horas para t, pero por supuesto que a Matlab o le iteresa el sistema de uidades que uo use. Pero si es importate que los cálculos sea cosistetes y asi poder iterpretar los resultados e termio de resultados del mudo real. Supogamos que e t=0 la població de tamaño N0=9.6 (medida co repecto uidad biomasica del sistema). A cotiuació se lista el programa que puede llevar a cabo tal tarea e modo comado es >>tspa=[0 18]; >>N0=9.6 >>[t,n]=ode45('verhulst',tspa,n0); >>plot(t,n) >>title('matlab solutio of Verhulst model') >>xlabel('t (hours')
>>ylabel('n (biomass)') Las variables t y N so realmete vectores columa que guarda los valores de t y N e cada paso de tiempo que Matlab utiliza para resolver la ecuació diferecial. La grafica de la solucio de la ecuació se muestra e la figura 1. Notemos que la solucio umérica aproximada tiee la misma forma que la solució exacta Figura 1 Sistemas de ecuacioes difereciales E muchas ocasioes ecesitados describir la evolució de u estado el cual requiere de 2 o mas variables para poderlo describir. Si la velocidad de cambio del sistema puede ser expresada como ua fucio istataea del tiempoy del estado del sistema, etoces se puede modelar matemáticamete como ua ecuació diferecial para dicho vector: dz Ftz (, ) = (1.2) zt ( 0) = z (0) Dode z es u vector que describe el estado y F es ua fucio vectorial del tiempo E compoetes esto puede ser escrito como sigue
dz1 = F1( t, z1, z2,..., z) dz2 = F2( t, z1, z2,..., z)...... dz = F ( t, z, z,..., z ) 1 2 Co codicioes iiciales z ( t ) = z (0) 1 0 1 z ( t ) = z (0) 2 0 2... z ( t ) = z 0 (0) Supoemos aquí que el estado requiere de variables z1, z2,.., z para su descripció. Como ejemplo se cosiderará el caso de dos especies que compite. El estado del sistema está descrito por dos variables x e y las cuales represetas las poblacioes de cada ua de las especies. El sistema de ecuacioes difereciales que describe el modelo es: dx = ( a by) x, (1.3) dy = ( m x) y, Dode a,b,m y so parámetros costates que ecesita ser especificados exteramete al modelo y debemos aportar codicioes iiciales de la forma x( t ) = x 0 0 y( t ) = y 0 0 (1.4) No teemos igua solució explicita dispoible para este sistema de ecuacioes difereciales. Pero podemos pregutarle a MATLAB si os puede proporcioar ua solució aproximada co el paquete ODE paquete ode45. Coceptuallmete es mas de lo mismo que e el caso de ua sola variable. Pero debemos ser cuidadosos co la otació. El ODE solver de MATLAB espera que se describa el estado del sistema co u vector. Por lo tato para resolver 2.3 co MATLAB debemos primero describir el estado del sistema co u vector de estado co compoetes igual a las variables de estado z1 z =, z 2 z = x, 1 z = y, 2
Reescribiedo el sistema de ecuacioes difereciales 2.3 e térmio de este vector de estado teemos: dz ( a bz2) z1 = Ftz (, ) =, ( m z1) z 2 x0 zt ( 0) =, y 0 La cual es de la forma 2-2. Ahora podemos escribir ua M-file que calcule el lado derecho del sistema de ecuacioes difereciales e la forma de u vector F(t,z). fuctio F=compspec(t,z) % evalua la velocidad de cambio de ua poblacio de u modelo simple de % especies e competecia % El usuario debe ajustar los parámetros e la seccio user parameters % dx/ = a x +b x y % dy/ = m y -m x y % % Variables de etrada % t= tiempo % z= vector de estado co compoetes z(1)=x, z(2)=y, % co x e y represet5ado la poblacio de las especies % Parametros de etrada (exteros) % Parametros de etrada % a,m= velocidad de crecimieto aistado per capita de cada especie % parametros de iteraccio % variables de salida % F=vector columa co F(1)=dx/ y F(2)=dy/ %USER PARAMETERS a=3; b=5/2; m=2; =1; % traduccio del vector de estado a variables mas coveietes x=z(1); y=z(2); % ajusta de F como u vector columa co dos etradas F=zeros(2,1); % Computo pricipal F(1)=a*x-b*x*y; f(2)=m*y-*x*y; retur Ahora supodremos que queremos resolver la evolució de la població de especies e competecia sobre el itervalo de tiempo 0=< t =< 2.5, comezado co poblacioes iiciales x0=0.2 e y0=0.18 (imagiado que el tamaño de la població digamos que está e uidades de millar digamos)
Etoces aquí es como MATLAB puede ser istruido para realizar esta tarea tspa=[0 2.5]; z0=[0.2 0.18]; [t z]=ode45('compspec',tspa,z0); La variable t es uevamete u vector columa que guarda los valores de t que utilize MATLAB para discretizar el tiempo. La variable z es ahora ua matriz. La primera colua se refiere a los valores de z1 e varios tiempos, y la seguda columa se refiere a los valores de z2 e los distitos tiempos. Hay u úmero de graficos que puede utilizar esta iformació. Quizas estemos iteresados e dibujar x versus t fig.2 plot(t,z(:,1)) title('poblacio de la primera especie vs tiempo') xlabel('t') ylabel('x') Fig.2 O quizas deseemos graficar y versus t (fig.3). Para lo cual corremos el script siguiete tspa=[0 2.5]; z0=[0.2 0.18]; [t z]=ode45('compspec',tspa,z0); plot(t,z(:,2)) title('poblacio de la seguda especie vs tiempo') xlabel('t') ylabel('y')
FIG.3
Y tambie podemos plotear todas las variables de estado simultáeamete como ua fucio del tiempo(fig.4) mediate el script. tspa=[0 2.5]; z0=[0.2 0.18]; [t z]=ode45('compspec',tspa,z0); plot(t,z) title('poblacio de la seguda especie vs tiempo') xlabel('t') ylabel('y') FIG.4 Fialmete para el sistema de dos variables, es frecuetemete iteresate haccer u dibujo del espacio de faces de ua variable e fucio de la otra(fig.5) cuyo strip es: tspa=[0 2.5]; z0=[0.2 0.18]; [t z]=ode45('compspec',tspa,z0); plot(z(:,1),z(:,2)) title('ploteo del espacio de estados') xlabel('x') ylabel('y')
Fig.5 : Solucio del modelo de especies e competecia (2.3). Parámetros a=3,b=5/2,m=2,=1. Codicioes iiciales x0=0.2,y0=0.18