miércoles, 6 de junio de 2012

Sistemas de Ecuaciones diferenciales con Octave

Este es el post que realmente quería escribir.  Pueden visitar el anterior post para ver como se resuelve una ecuación diferencial con Octave, ahora les explicare como hacerlo para resolver un sistema de ecuaciones diferenciales por método numérico, utilizando para ello un ejemplo con el modelo SIR (para epidemias) propuesto por W. O. Kermack y A. G. McKendrick, donde

  • S(t) representa a los individuos susceptibles, es decir, aquellos que no han enfermado anteriormente y por lo tanto pueden resultar infectados al entrar en contacto con la enfermedad.
  • I(t) representa a los individuos infectados y por lo tanto en condiciones de transmitir la enfermedad a los del grupo S.
  • R(t) representa a los individuos recobrados de la enfermedad, y que ya no están en condiciones ni de enfermar nuevamente ni de transmitir la enfermedad a otros.
Las ecuaciones diferenciales son:

dS = -(Constante_beta)SI    dI = (Constante_beta)SI - (Constante_gama)I
dt                                         dt

          dR = (Constante_gama)I
          dt

donde:  (Constante_beta) = 0.2  Constante_gama = 0.7 y las condiciones iniciales son:  S(0) = 19    I(0) = 1 R(0) = 0.

Ahora para resolverlo con lsode se realiza lo siguiente:
voy a colocar el código y luego lo explicare : )

octave:1> function sis = f(x,t); b=0.2;g=0.7;
> sis(1) = -b*x(1)*x(2);
> sis(2) = b*x(1)*x(2)-g*x(2);
> sis(3) = g*x(2);
>endfunction
octave:2> t = (0:0.1:5)';
octave:3> x = lsode("f",[19,1,0],t);
octave:4> plot(t,x)

obtenemos esto

Ahora, explicaré como es q funciona.  Cada ecuación diferencial es una ecuación sis(n).  cada resolución de la ecuación, se representa como x(n), así se va colocando cada ecuación diferencial del sistema, como por ejemplo para los individuos susceptibles dS/dt se escribio la siguiente ecuación:
sis(1) = -b*x(1)*x(2); para escribir: dS/dt = b*S*I, así x(1) representa S y x(2) a I. El otro cambio es para colocar las condiciones iniciales en lsode, donde se coloca en una lista.    Notese que se grafican las tres ecuaciones.  Para colocarle nombre y color para cada gráfica ya son comandos que se conocen en GNUPlot.

Ojalá les sirva estimados lectores : ) porque a mi, si me servira xD : )

Ecuaciones diferenciales no lineales con Octave

Bueno, nos vamos a poner un poco más técnicos acá.  Vamos a aprender como resolver ecuaciones diferenciales no lineales por medio de OCTAVE, uno d mis programas favoritos junto con LyX e Inkscape.

Para resolver este tipo de ecuaciones Octave utiliza la función  lsode (the Livermore Solver for Ordinary Differential Equations, descrita en A. C. Hindmarsh, ODEPACK, a Systematized Collection of ODE Solvers, in: Scientific Computing, R. S. Stepleman et al. (Eds.), North-Holland, Amsterdam, 1983, pages 55–64).

la forma de utilizar esta función es con ecuaciones del tipo:

                dx = f(x,t)
                dt

con condiciones iniciales x(t=0) = x_0

La solución que devuelve lsode es una matriz x, con cada fila correspondiente a un elemento del vector t. El primer elemento de t debe ser t_0 y debe corresponder al estado inicial del sistema x_0, de modo que la primera fila de la salida es x_0.

Para resolver la ecuación diferencial:
                                      dx = x^2       x(t=0) = 0.5
                                      dt

Se procede a definir la ecuación dx/dt:
octave:1> function ret=f(x,t);
> ret = x^2;endfunction

posteriormente se define el intervalo d tiempo así
octave:2> t = (0:0.1:1)';
Ojo q cuando colocas t = (0 <-- este es el valor inicial:0.1<--- este es el rango o intervalo:1<--- este es el valor final para tu gráfica)

como se espera tener una resolución del tipo x(t) se coloca lsode con el siguiente criterio: lsode (fcn, x_0, t)




así se coloca en octave:
octave:3.> x = lsode('f',.5,t);

y para graficar:
octave:4> plot(t,x)

y ya esta.  Tenemos la solución gráfica de la ecuación.

Puedes leer más aca

Beamer y LyX

Esta entrada es para enseñar de manera rápida cómo hacer una presentación en LyX por medio de Beammer.  Pretende enseñar a usted lector, en cinco minutos o menos lo básico que debe saber.

Paso 1: Configurar el documento
En primer lugar debemos colocar en la clase del documento la opción beamer.



Paso 2: Configurar el tema de la presentación 
Luego debemos colocar el tema (formato) de la presentación.  Hay una gran variedad de ellos, Aca  puedes ver algunos.  Para colocar el tema seleccionado debes colocar en el área de preambulo LaTeX lo siguiente:
\usetheme{PaloAlto}
  
También puedes escoger el color tema.  Entre los colores que puedes escoger tienes: albatross (azul marino), beetle (azul y gris), crane (naranja y blanco), default (por defecto), dolphin (azul marino y blanco), dove (gris y blanco), fly (gris), lily (lila), rose, seagull (gris y blanco), whale (azul marino y blanco), se coloca para ello:
\usecolortheme{albatross}

Paso 3: Empieza hacer tu presentación
Ahora que ya está configurada el documento, puedes empezar a realizar tu presentación.  Para realizar la primera diapositva de título, sólo debes buscar "título" "autor" en la pestaña superior izquierda. 
 Luego de colocar la diapositiva inicial, puedes empezar a colocar las subsiguientes diapositivas, esto lo logras utilizando la pestalla de "inicio de fotograma o BeginFrame", esto colocará una línea de texto en rojo que dice "Frame" a la par de esta palabra colocas el título de tu diapositiva. Luego de darle enter al título, ya puedes empezar a escribir lo que tu quieras en la diapositiva.  luego de escribirlo NO debes olvidar colocar "EndFrame o Finalizar Fotograma".  Con cada diapositiva, debes realizar este mismo procedimiento. Y con esto, ya tienes tu presentación.

Coqueterias en tu presentación

Puedes colocar "coqueterias" en tu presentación, tal es el caso de la opción o comando pause, que es un comando que te permite que aparezca la información según se hable de ella.  Es muy sencillo realizarlo.  Una vez colocado lo primero que queremos que aparezca debemos darle "enter" y luego buscamos en la pestalla superior izquierda "pause", en la pantalla aparecerá una linea discontinua a partir de la cual podremos escribir lo que saldrá una vez apretemos cualquier tecla

Si se desea colocar varios items pero que estos aparezcan en diferente orden, sólo debes colocar con código TeX (insert -- TeX Code) dentro de LyX el siguiente código:
\begin{itemize}
     \item<1-> Primero
     \item<3-> Tercero
     \item<2-> Segundo
 \end{itemize}

También puedes colocar TRANSICIONES, esto se logra colocando otra vez código TeX (insert-- TeX Code) despues del título "frame" en cada diapositiva donde quieras la transición.  Estas transiciones pueden ser:
  1. \transboxin -- la diapositiva irá apareciendo desde las esquinas hacia el centro.
  2. \transdissolve -- la diapositiva anterior se irá disolviendo para dar paso a la nueva diapositiva.
  3. \transsplitverticalin -- El texto de la nueva diapositiva aparece verticalmente desde ambos lados hacia el centro.
  4. \transsplithorizontalin -- El texto de la nueva diapositiva aparece horizontalmente desde arriba y abajo hacia el centro.
  5. \transboxout -- la nueva diapositiva aparecerá desde el centro hacia las esquinas.
     
Se pueden colocar otras pero creo q estarás bien hasta aca. También se pueden colocar otras cosas, pero al menos si buscas hacer algo bastante sencillo pues ya tienes una presentación bonita y rápida. Buena suerte estimado lector. ánimo y para adelante en su presentación.