miércoles, 6 de junio de 2012

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

2 comentarios:

  1. Sabes resolver ecuaciones diferenciales no lineales, con algún método numérico

    ResponderEliminar
    Respuestas
    1. Si, pero depende d la ecuación, un poco tarde mi respuesta, pero puedo ayudarte.

      Eliminar