Sie sind auf Seite 1von 6

20/8/2017 Solucin Numrica de Ecuaciones Diferenciales con ode45 en Matlab, Ejemplos.

| El Blog de Programacin para Ingenieras

(h ps://blogdelingeniero1.les.wordpress.com/2014/04/sol_edo1.png)
Fig 1. Solucin de la Primera Ecuacin Diferencial Propuesta.

UN EJEMPLO DE SEGUNDO ORDEN!

Para este siguiente ejemplo usaremos un conocido ejercicio de


sistemas fsicos que genera una ED de segundo orden a la cual le
hallaremos la solucin con ode45() para ver el comportamiento de
su movimiento a travs del tiempo, este sistema es el conocido
masa-resorte de la gura 2.

(h ps://blogdelingeniero1.les.wordpress.com/2014/04/masa_res.png)
Fig 2. Sistema Masa-Resorte.
https://blogdelingeniero1.wordpress.com/2014/04/17/solucion-numerica-de-ecuaciones-diferenciales-con-ode45-en-matlab-ejemplos/ 4/11
20/8/2017 Solucin Numrica de Ecuaciones Diferenciales con ode45 en Matlab, Ejemplos. | El Blog de Programacin para Ingenieras

Fig 2. Sistema Masa-Resorte.

Y elegimos este sistema porque tenemos la ecuacin diferencial de


segundo orden que modela su movimiento (se puede obtener
fcilmente por anlisis de fuerzas de Newton) y es la siguiente.

[Cabe recordar que el operador . (punto) tambin se usa para indicar


derivadas se lee (prima)].

(h ps://blogdelingeniero1.les.wordpress.com/2014/04/edo1.png)

* Antes de continuar debemos aclarar algunas cosas, primero la


variable dependiente en este caso es X [X(t)], en otras palabras X es
funcin de t.

* ode45() solo resuelve ecuaciones del tipo y=f(t,y) por lo tanto si


vamos a resolver ecuaciones de orden superior (orden>1) entonces
si tenemos una ecuacin de orden N, deberemos llevar esta
ecuacin a un sistema de N ecuaciones diferenciales de primer
orden, y esto se logra mediante algo conocido como reduccin de
orden de ecuaciones diferenciales.

Continuando con la solucin a nuestro problema propuesto,


debemos entonces reducir el orden de nuestra ecuacin diferencial
a un sistema de dos ecuaciones diferenciales de primer orden,
cmo lo hacemos?.

Denimos dos variables X1 y X2, y se sigue el procedimiento a


continuacin:

https://blogdelingeniero1.wordpress.com/2014/04/17/solucion-numerica-de-ecuaciones-diferenciales-con-ode45-en-matlab-ejemplos/ 5/11
20/8/2017 Solucin Numrica de Ecuaciones Diferenciales con ode45 en Matlab, Ejemplos. | El Blog de Programacin para Ingenieras

(h ps://blogdelingeniero1.les.wordpress.com/2014/04/reduccion.png)

Entonces habiendo hecho este cambio de variables, si reescribimos


la ecuacin diferencial original (y lo debemos hacer para un mejor
entendimiento) quedara de la siguiente forma.

(h ps://blogdelingeniero1.les.wordpress.com/2014/04/nueva_edo.png)

Hay que recordar que a la hora de trabajar con ode45() debemos


tener una ED de la forma y=f(t,y) por lo tanto debemos tener
despejada a la primera derivada, quedando la ecuacin anterior de
la siguiente forma, y a su vez el sistema quedara descrito como:

(h ps://blogdelingeniero1.les.wordpress.com/2014/04/reescrito.png)

Teniendo en cuenta que:

(h ps://blogdelingeniero1.les.wordpress.com/2014/04/prima.png)
https://blogdelingeniero1.wordpress.com/2014/04/17/solucion-numerica-de-ecuaciones-diferenciales-con-ode45-en-matlab-ejemplos/ 6/11
20/8/2017 Solucin Numrica de Ecuaciones Diferenciales con ode45 en Matlab, Ejemplos. | El Blog de Programacin para Ingenieras

(h ps://blogdelingeniero1.les.wordpress.com/2014/04/prima.png)

Notan como logramos reescribir una ecuacin diferencial de


segundo orden en un par de ecuaciones de primer orden?

Ahora, no escogimos las nuevas variables X1 y X2 pudiendo haber


escogido U1 y U2, etc. La eleccin se hizo con el n de lograr un
mayor entendimiento a la hora de pasar estos parmetros a ode45()
ya que lo que recibe esta funcin es un vector, entonces le
pasaremos un vector de nombre X que contendr a X1 y X2 dentro
de l, en otras palabras, los subndices 1 y 2 harn referencias a las
columnas del vector principal X donde se almacenan los valores de
X1 y X2 respectivamente, lo ilustramos de la siguiente forma:

(h ps://blogdelingeniero1.les.wordpress.com/2014/04/vector.png)

Y para las derivadas es bsicamente lo mismo, aunque en este caso


se trata de un vector columna:

(h ps://blogdelingeniero1.les.wordpress.com/2014/04/vector_dev.png)

y ser este el vector que se usar tanto en el archivo que dene el


sistema de ecuaciones como en el retorno de ode45() el cual
recordemos que retorna [t,X].

Teniendo lo anterior en cuenta y habiendo comprendido


comprendido el proceso, procedemos entonces a escribir los scripts,
el primero como siempre, dene el tiempo_de_solucin y las
condiciones_iniciales, y de la misma forma que antes, hace el
llamado a ode45() y recibe su solucin en los vectores
[t,X] quedando dicho script de la siguiente forma:

(h ps://blogdelingeniero1.les.wordpress.com/2014/04/script_ode45.png)
https://blogdelingeniero1.wordpress.com/2014/04/17/solucion-numerica-de-ecuaciones-diferenciales-con-ode45-en-matlab-ejemplos/ 7/11
20/8/2017 Solucin Numrica de Ecuaciones Diferenciales con ode45 en Matlab, Ejemplos. | El Blog de Programacin para Ingenieras

(h ps://blogdelingeniero1.les.wordpress.com/2014/04/script_ode45.png)

En este caso en las condiciones iniciales le decimos al programa que


la masa se encuentra en la posicin X(0)=0 es decir, en su posicin
de equilibrio, y que lleva una velocidad dx(0)=2 (hay que aclarar
que las condiciones iniciales se dan con el formato CI=[x(0) dx(0)] ).

En el siguiente script se dene el sistema equivalente de ecuaciones


diferenciales de primer orden y cuyo archivo lleva el mismo
nombre que se us en el llamado de ode45() que es EDO2.m en este
caso, quedando como se muestra a continuacin.

(h ps://blogdelingeniero1.les.wordpress.com/2014/04/edo2.png)

Para entender el manejo de ndices que se hizo en esta funcin


volvemos a visualizar cada variable:

(h ps://blogdelingeniero1.les.wordpress.com/2014/04/vector.png)

(h ps://blogdelingeniero1.les.wordpress.com/2014/04/prima.png)

Cuando se realiza la ejecucin del cdigo que se encarga de llamar a


la funcin ode45() se logra el siguiente resultado, donde se
aprovech el hecho de que la funcin ode45() retorna la solucin
para X1 y X2, recuerde que X1=x lo que quiere decir que la solucin
de X1 (en este caso la primera columna de la matriz principal X)
representar la solucin de x -> posicin, y X2 corresponde a x lo
que quiere decir que la columna 2 de la matriz principal X
contendr a x o que quiere decir que X(:,2) contiene la velocidad.

Para ilustrar mejor lo retornado por ode45() entonces mostramos en


la siguiente tabla el contenido de la matriz X:

https://blogdelingeniero1.wordpress.com/2014/04/17/solucion-numerica-de-ecuaciones-diferenciales-con-ode45-en-matlab-ejemplos/ 8/11
20/8/2017 Solucin Numrica de Ecuaciones Diferenciales con ode45 en Matlab, Ejemplos. | El Blog de Programacin para Ingenieras

(h ps://blogdelingeniero1.les.wordpress.com/2014/04/tabla1.png)
Tabla 1. Contenido de la matriz X retornada por ode45()

Es por esta razn que al gracar la matriz X de la la siguiente forma,


se ve en la gura 3 la posicin y la velocidad, y que adems pueden
ser identicadas fcilmente ya que cumplen con las condiciones
iniciales dadas.

(h ps://blogdelingeniero1.les.wordpress.com/2014/04/ploteada.png)

(h ps://blogdelingeniero1.les.wordpress.com/2014/04/dibujo1.png)
Fig 3. Grca de x(t) y dx/dt, posicin y velocidad retornada por
ode45().

De la misma forma en que se resolvi esta ecuacin diferencial de


https://blogdelingeniero1.wordpress.com/2014/04/17/solucion-numerica-de-ecuaciones-diferenciales-con-ode45-en-matlab-ejemplos/ 9/11