# Soluciones aproximadas de ecuaciones diferenciales ordinarias 
y sistemas de 2 ecuaciones difereciales

## El paquete plotdf.

Para poder usarlo lo primero que hay que hacer es cargarlo:

load("plotdf");

### El comando: plotdf 

La función/comando plotdf dibuja el campo de direcciones de una ecuación diferencial ordinaria de primer 
orden (EDO) o de un sistema de dos ecuaciones autónomas de primer orden y'(x)=G(x,y).

(Método de las isoclinas: Ver por ejemplo (para una ecuación): http://es.scribd.com/doc/50991588/35/Curvas-isoclinas)

Para dibujar el campo de direcciones de un conjunto de dos EDOs autónomas, deben
escribirse de la forma x'=G(x,y)  e y'=F(x,y).

El argumento del comando plotdf será la lista con las dos funciones G y F encerrada entre corchetes o simplemente 
la función G(x,y) en el caso de una sóla EDO.

El orden de las funciones es importante; la primera sera la derivada de la abscisa x(t) respecto del tiempo y 
la segunda la derivada de la ordenada y(t) respecto del tiempo. 

Si sólo se trata de una EDO, plotdf entenderá por defecto que x=t y G(x,y)=1, transformanado la 
ecuación no autónoma (y'(x)= G(x,y) ) en un sistema de dos ecuaciones autónomas (x'(t)=1 ; y'(t)= G(x,y)).

EJEMPLO 1 
El siguiente comando dibuja el campo de vectores (1,G(x,y))  para la ecuación y'=0.2 y (5-y)  (G(x,y)=0.2 y (5-y)) 
y una sólución aproximada 

OBSERVACION: por defecto dibuja el rectángulo del plano [-10,10]x[-10,10] y la curva aproximada que parte de unas condiciones
iniciales y(-10)=y0.

plotdf(0.2*y*(5-y));

IMPORTANTE:  PARA PODER EJECUTAR OTRAS ORDENES EN wxMAXIMA ES NECESARIO CERRAR LA VENTANA DE plotdf

EJEMPLO 2
Si las variables no son las x e y habituales, el segundo argumento que se pase al comando plotdf será una lista 
con los nombres de ambas variables, primero la correspondiente a las abscisas, seguida de la asociada a las ordenadas.
En la siguiente orden también se incluye la condición inicial x(0)=1.
Si vais señalando co n el ratón en distintos puntos podréis ver como es el conjunto de sus soluciones (dos estacionarias y
las trayectorias asintóticas.
Pulsando en el boton de actualizar del menú del panel se limpia el contenido de la ventana y se obtiene el campo de vectores
y la última trayectoria.

plotdf(0.2*x*(5-x),[t,x], [trajectory_at,0,1]);

Tanto el rectángulo como la condición inicial y otras opciones se pueden especificar en el comando, 

En el documento ecuacmaxima.pdf que hemos puesto en la web de la asignatura tenéis una descripción de todas
las opciones posibles tanto del comando como de la propia ventana plotdf.

También encontraréis más información en el menú "Help : ayuda de wxMaxima" o en la documentación de Maxima en castellano 
http://maxima.sourceforge.net/es/documentation.html

EJEMPLO 3
(ejercicio 22 de la hoja de problemas)

Se trata de analizar las soluciones del sistema de ecuaciones de un modelo competitivo
    x'= 3 x + 4 y
    y'= -2 x + 2 y
con la condición inicial x(0)=90￼ e y(0)=150￼.
En este caso como los valores iniciales de x e y son grandes, 
vamos a definir la región donde ver el campo de vectores y las trayectorias con 
las opciones [x,0,800] ( x varia entre 0 y 800) e [y,0,200] (y varia entre 0 y 200):

plotdf([3*x+4*y,-2*x+2*y],[x,0,800],[y,0,200],[trajectory_at,90,150]);

EJEMPLO 4
uso de las opciones:  direction xfun, parameters y sliders.

El siguiente comando incorpora un deslizador para modificar la velocidad del descenso (r) y también incorpora la gráfica
de la solución correspondiente a las condiciones iniciales y(1)=4.

plotdf(-r*y,[xfun,"4*exp(-r*(x-1))"],[direction,forward],[parameters,"r=0.1"],[sliders,"r=0.1:2"]);

EJEMPLO 5
uso de las opciones: parameters, sliders, tstep, nsteps y versus_t

El sistema de EDOs que modela un péndulo amortiguado es
    x'=y
    y'=(-g*sin(x) - b*y/m)/ l

El siguiente comando dibuja el campo de direcciones de un péndulo amortiguado, incluyendo la trayectoria (solución) 
para unas condiciones iniciales dadas, con una barra de deslizamiento que se puede utilizar para cambiar 
el valor de la masa, m, y también dibuja una ventana independiente con el gráfico de las dos 
componentes de estado x(t) e y(t) como funciones del tiempo:

plotdf([y,(-g*sin(x) - b*y/m)/l], [x,-2,10],[y,-14,14],
[parameters,"g=9.8,l=0.5,m=0.3,b=0.05"],[trajectory_at,5.26,1.27],[tstep,0.01],[direction,forward],
[nsteps,300],[sliders,"m=0.1:1"], [versus_t,1]);

### EJERCICIOS

EJERCICIO 1

Resuelve el problema nº 14 de la relación de ejercicios relativo a la evolución de la población de peces modelada
por la ecuación  x'(t) = 0.2 * x* (5-x) + sin(%pi*t) , donde x(t) es el número de peces en miles tras t meses.
Representa gráficamente la evolución de la población durante el primer año para la condición inicial x(0)=1.
Traza la evolución con distintas condiciones iniciales en t=0 y observa la existencia de una solución estacionaria

EJERCICIO 2

Resuelve el problema nº24 de la relación de ejercicios relativo al MODELO PRESA-DEPREDADOR
    x'=x+y
    y'=-x+y
diciendo cual es el depredador y cual es la presa, y representando el diagrama de fases con la trayectoria correspondiente
a las condiciones iniciales x(0)=y(0)=1000, y en otra ventana observa la evolución de las curvas x(t) e y(t).

(Ind: selecciona primero la región [x,0,2000] e [y,0,2000] para hacerte una idea y después puedes cambiar los intervalos para 
observar mejor la dinámica de las poblaciones x e y
selecciona tambien la opción [direction,forward] para no ir hacia atrás en el tiempo)

EJERCICIO 3

Resuelve el problema nº25 de la relación de ejercicios relativo al modelo presa-depredador de VOLTERRA (1926)
    x'=r*x+0.03*x*y
    y'=s*y-0.25*x*y
con distintos valores de los parámetros r y s que se pueden ir modificando con una barra de desplazamiento
los valores a los que se refiere el ejercicio son
apartado (a) r=-0.1    s=0.2
         (b) r=-0.02   s=0.3
         (c) r=-0.2    s=0.05
En todos los casos considera las poblaciones iniciales x(0)=2 e y(0)=8.

Responde a las cuestiones de los distintos apartados, observa la evolución en cada caso con distintas condiciones inciales 
señalandolas con el ratón viendo como hay trayectorias periodicas y curvas/puntos estacionarios/críticos.

(Indicación: considera la ventana inicial [x,0,8] [y,0,15] y varíala después si lo crees conveniente)