RESOLUCIÓN DE ECUACIONES DIFERENCIALES ORDINARIAS APLICANDO LA RUTINA ODE45 DE MATLAB
Cátedra de VMyDM 2012
1
ECUACIONES DIFERENCIALES. REPASO Definición Una ecuación que establece una relación entre la variable independiente x , y la función buscada y = f(x) y n
sus derivadas y’, y’’……..y se llama ecuación
Llamamos
diferencial.
integrar o solucionar la ecuación diferencial al proceso por el que se encuentra la relación entre
x e y .
Clasificación Las ecuaciones diferenciales se clasifican según: 1.
Ec. diferenciales ordinarias o en derivadas parciales
Las ecuaciones
diferenciales ordinarias contienen derivadas respecto a una sola variable
independiente.
Las ecuaciones
diferenciales en derivadas parciales contienen derivadas parciales
respecto a dos o más variables independientes.
2.
Orden de la Ec. diferencial
Se llama
orden de la ecuación diferencial al orden de la derivada superior que interviene en la
ecuación.
3.
Grado de la Ec. diferencial
Si F es un polinomio, se define
grado de la ecuación diferencial como el grado de y(x) y sus
derivadas.
4.
Linealidad de la ecuación diferencial
Se dice que una ecuación
n-1 f(x,y,y’……..y ) es lineal cuando f es una función lineal de diferencial y n =
n-1
y, y’…… y . (grado 1 y que no intervengan funciones trigonométricas respecto a y y sus derivadas) y sus coeficientes son constantes o solo dependen de la variable independiente.
5.
Ec. diferencial a coeficientes constantes o variables
Una
ecuación diferencial es a coeficientes constantes cuando no dependen de la variable
independiente.
6.
Ec. Diferenciales Homogéneas
Son aquellas ecuaciones diferenciales que no poseen término independiente. En caso de contener un término que no dependa de la variable independiente, serán NO homogéneas.
2
Soluciones a ecuaciones diferenciales Se llama
solución (o integral) de la ecuación diferencial a cualquier función y = y(x) que introducida en la
ecuación diferencial la transforma en igualdad. Los tipos de soluciones son: 1.
Explícitas: la variable dependiente y se expresa tan solo en términos de la variable independiente x y constantes.
2.
Implícitas: se trata de una relación G(x,y) = 0 en la que no se puede despejar y mediante funciones elementales. Son soluciones todas las y(x) que cumplen G(x,y) = 0 .
Se dice que la familia n-paramétrica: G(x, y, C 1, C 2………. C n ) = 0
solución general de una ecuación diferencial de orden n , si toda solución de esta ecuación se puede obtener partiendo de esta familia. Cada vez que se asignan valores a los parámetros se tiene una solución particular. Una ecuación diferencial puede tener infinitas soluciones particulares. es la
Problema de valor inicial Se llama problema de valor inicial al problema: Resolver: y n = f(x, y, y’…… y n-1 ) Sujeto a: y(x 0 ) = y 0, y’(x 0 ) = y 1……. y n-1(x 0 ) = y n-1 Donde y 0, y 1……y n-1 son constantes reales llamadas
condiciones iniciales.
Métodos de resolución de ecuaciones diferenciales No existe un método único para encontrar aquella función que cumpla con la ecuación diferencial. Se podría decir que para cada caso en particular se puede elegir el método que más convenga: exacta, transformada de Laplace, numérica, etc. En este apunte en particular nos interesan los métodos de resolución numéricos de
diferenciales ordinarias empleando Matlab, a través de sus rutinas ode23 y ode45.
3
ecuaciones
INTEGRACIÓN NUMÉRICA DE ODE’s EN MATLAB Las rutinas ode23 y ode45 son algoritmos de cálculo empleados para encontrar solución numérica a ecuaciones diferenciales ordinarias (ODE). Utilizan los
métodos de integración incrementales de Runge-
Kutta. ode23 emplea Runge-Kutta de 2°y 3°orden para solu ciones que requieran baja precisión. ode45 aplica Runge-Kutta de 4°y 5°orden para soluciones precis as.
ode45 está diseñado para resolver el siguiente problema:
dx dt
=
f (t , x)
x (t 0 ) = x0
(1)
Donde t es la variable independiente, x es el vector de variables dependientes (soluciones) y f(x, t) es una función que relaciona x con t . La rutina de cálculo ode45 podrá ser aplicada cuando el problema (ODE) esté reducido a la forma en que se presenta la ec. (1), con sus respectivas condiciones iniciales. La ec. (1) es una ecuación diferencial ordinaria de 1°orden.
Si el problema vibratorio que intentamos resolver se describe mediante una ecuación (o un grupo de ecuaciones) diferencial ordinaria de 2°orden o más , para aplicar ode45 será necesario reducir la ecuación diferencial a un sistema de ecuaciones diferenciales de 1° orden. Tendremos tantas ecuaciones diferenciales de 1°orden como orden de la ecuación diferencial ordinaria a solucionar. A continuación se expresa con más detalles.
Dado un problema descrito por medio de una o varias ODE, los pasos necesarios que se deben seguir para solucionar aplicando ode45 se resumen a continuación.
1°Paso: Reducir las ODEs a una serie de ODEs de 1° orden Supongamos que trabajamos con la siguiente ODE lineal de 2°orden:
&& + c y& + k y m y
=
5
y 0
=
3 y& 0
1
= −
(2)
Al ser una ODE de 2°orden, reduciremos el problema a una serie de 2 ODEs de 1°orden. Definimos el vector x , que tendrá 2 componentes:
y x = y&
(3)
La serie de ODEs de 1°orden resulta:
d
x (1) = x ( 2) dt d 1 x ( 2) = (5 − c x (2) − k x (1) ) dt m De esta forma reducimos el problema a 2 ecuaciones
(4)
diferenciales ordinarias de 1°orden que podrán ser
resueltas aplicando ode45.
4
¿Qué sucede si el sistema vibratorio que deseamos resolver posee más de un grado de libertad? Tendremos tantas ecuaciones de movimiento como grado de libertad tenga el sistema vibratorio.
Supongamos que agregamos la siguiente ODE lineal de 3°grado: 3
d z dt 3
2
+
d z dt 2
−
z
=
t
z 0
=
0, z&0
=
0, &z&0
=
1
(5)
Se podrán resolver ambas ODEs, para las variables y - z simultáneamente, agregando al vector x las componentes que resultan de reducir la ODE (5) a una serie de ODEs de 1°orden. (Resultan 3 ODEs de 1° orden). Proponemos las siguientes componentes de x :
x (3) = z x (4) =
dz dt
(6)
2
x (5) =
d z dt 2
Luego el vector x resulta:
y y& x = z z& z&&
(7)
Con sus respectivas condiciones iniciales:
x t
=
0
2 dy dz d z = y , , z , , t 0 dt t 0 t 0 dt t 0 dt 2 =
=
=
=
t =
0
(8)
Se debe mencionar que el orden en que aparecen las componentes del vector x es a elección. Se podría elegir cualquier disposición alternativa. Una vez elegida las posiciones de cada variable dependiente dentro del vector x , debe ser respetada. Finalmente el sistema de ODEs resulta (5 ODEs de 1° orden):
d
x (1) = x ( 2) dt d 1 x ( 2) = (5 − c x (2) − k x (1) ) dt m d x (3) = x ( 4) dt d x ( 4) = x (5) dt d x (5) = t − x (5) + x (3) dt En resumen, ode45 nos permite resolver un número arbitrario de ODEs de 2° orden o superior.
(9)
Lo
importante es reducir el sistema a una serie de ODEs de 1°orden y respetar la configuración adoptada para el vector solución x .
5
Lo anterior es equivalente a expresar las ecuaciones de movimiento en Formato Espacio de Estado. Ver páginas 407-409 del libro B-M.
2°Paso: Aplicar la rutina ode45 Una vez obtenido el sistema de ODEs de 1°orden, es posible aplicar el comando ode45 de Matlab. Se presenta bajo la siguiente forma:
[t, x] = ode45(@fname, tspan, xinit, options) Donde:
fname es el nombre de la rutina m-file usada para definir los 2°miembros de las ODEs de 1°orden resultantes al descomponer las ODEs a resolver. Son las funciones a integrar.
tspan es el vector tiempo en el cual se definen los límites de integración y el incremento de tiempo utilizado para la integración con Runge-Kutta. Por ejemplo, si se desea integrar entre t = 0 y t = 10 , con 100 incrementos de tiempo, el vector tiempo resulta: tspan = [0:0.1:10] .
xinit es el vector condiciones iniciales. La longitud del vector xinit se corresponde con el número de ODEs de 1°resultantes al descomponer las ODEs a resolver.
options son entradas adicionales que pueden ser introducidas en el comando ode45. Para más detalle consultar help ode45 . Se recomienda utilizar las opciones por defecto.
t es el vector tiempo resultante al ejecutar ode45. Es la variable independiente. La longitud de este vector no es necesariamente la de tspan.
x es la solución. Es el objetivo del problema. Es una matriz de tamaño length(t) x length(xinit). Cada columna de x es una variable dependiente diferente. Por ejemplo, si elegimos
x = [ y, y& , z, z&, z&&] y asumimos (por simplicidad) que solo se requieren las soluciones pata t = 0, 1, 2……… 10 (evaluamos la función para 11 tiempo diferentes) obtenemos:
y t 0 y& t 0 z t 0 z& t 0 z&& t 0 y t 1 y& t 1 z t 1 z& t 1 z&& t 1 x = ... ... y t 10 y& t 10 z t 10 z& t 10 z&& t =
=
=
=
=
=
=
=
=
=
=
=
=
=
=
10
Luego x(1,3) da el valor de z en t = 0 , x(7,3) da el valor de z en t = 6 ….
&&] , debemos escribir: Si la configuración utilizada para x es x = [ y, y& , z , z&, z [t, x] = ode45(@fname, tspan, xinit, options) y = x(:,1) ydot = x(:,2) z = x(:,3) zdot = x(:,4) zdotdot = x(:,5) De esta forma se han resuelto las ecuaciones diferenciales a través de la rutina ode45.
6
(10)