Sie sind auf Seite 1von 12

ANyCA 2012 Prcticas de Laboratorio Resolucin de Ecuaciones Diferenciales Ordinarias con Condiciones Iniciales usando MATLAB

NDICE

Contenidos
1 2 3 4 Presentacin .............................................................................................................................................. 2 Descripcin de los algoritmos (solvers) de matlab ............................................................................... 2 Entradas y salidas de los algoritmos (solvers) ........................................................................................ 3 Ejemplo 1 ................................................................................................................................................... 5 4.1 4.2 5 Ejemplo 1: Variante 1 ........................................................................................................................ 8 Ejemplo 1: Variante 2 ........................................................................................................................ 9

Problemas ................................................................................................................................................ 12

1 PRESENTACIN
En esta prctica vamos a experimentar cmo resolver con MATLAB: Ecuaciones diferenciales ordinarias de primer orden explcitas. Sistemas de ecuaciones diferenciales ordinarias de primer orden, explcitas y con condiciones iniciales. Ecuaciones diferenciales de orden superior explcitas con condiciones iniciales. Todas estas ecuaciones pueden escribirse: yt = f (t, y), y(t0) = y0 (1)

MATLAB tiene incorporados varios mtodos de resolucin de problemas de valor inicial: todos empiezan por ode y le siguen dos o ms nmeros y, en algunos casos, una o dos letras o los nmeros indican el orden del/de los mtodo/s empleado/s todos requieren los mismos datos y proporcionan los resultados de manera similar Los programas son: o ode45 o ode23 o ode113

o o o o

ode15s ode23s ode23t ode23tb.

2 DESCRIPCIN DE LOS ALGORITMOS (SOLVERS) DE MATLAB


Los algoritmos (solvers) implementados en MATLAB son: ode45: Es un mtodo explcito del tipo Runge-Kutta de orden 5 con control de error basado en la frmula de orden 5, RK4-5. Es un mtodo de un paso y es el primer mtodo que se debe probar. ode23: Es tambin un mtodo explcito del tipo Runge-Kutta pero de menor orden, RK23. Si no se requiere demasiada precisin y la ecuacin es poco rgida puede ser ms eficiente que ode45. ode113: Es un mtodo de tipo Adams-Bashforth-Moulton PECE de orden variable. Es por tanto un mtodo multipaso. Estos mtodos son adecuados para sistemas no rgidos. Si no resuelven el problema de forma adecuada se debe probar con uno de los siguientes ode15s: Es un mtodo multipaso de orden variable. Si se sospecha que el sistema es rgido y ode45 no da buen resultado se recomienda probar este mtodo. ode23s: Es un mtodo de un paso que puede ser mas eficiente que el anterior si no se requiere demasiada precisin. ode23t: Es una implementacin basada en la regla del trapecio. Se puede utilizar si el problema es moderadamente rgido y no se requiere demasiada precisin. ode23tb: Es un mtodo Runge-Kutta implcito.

3 ENTRADAS Y SALIDAS DE LOS ALGORITMOS (SOLVERS)


La forma de proporcionar los datos de entrada es la misma para todos los algoritmos (solvers). Todos devuelven el mismo tipo de datos de salida (resultados). Escribiremos ode* para referirnos (invocar) a uno cualquiera de ellos. Todos los algoritmos (solvers) generan como salida o resultado 2 (dos) conjuntos de valores: uno con los valores correspondientes a la variable independiente t y otro con los valores correspondientes a la variable dependiente y y los proporcionan por separado en dos matrices: T e Y, respectivamente, a saber: T: es en realidad un vector columna con los valores correspondientes a la variable independiente t para la que se ha calculado la solucin Y: es una matriz con los valores correspondientes a las variables dependientes
NOTA: esta matriz ser un vector si slo se tiene una sola variable dependiente y la ecuacin diferencial es de orden 1; si se trata de un sistema de ecuaciones diferenciales o de una ecuacin de orden superior a 1 tendr varias columnas tal como veremos posteriormente.

Los datos de entrada mnimos requeridos para resolver un problema de valor inicial : yt = f (t, y), son: 1. la funcin f - f (t, y) - en cuestin 2. el intervalo tspan en el que se quiere obtener la solucin 3. la condicin inicial y0. NOTA: Los datos de entrada deben ser ingresados siempre en este mismo orden! Conforme lo explicitado precedentemente, usando la notacin propia de MATLAB escribiremos: [T, Y] = odefun (f, tspan, y0) donde: T e Y son las matrices que contienen los resultados de salida. odefun es el nombre del algoritmo (solver) de MATLAB que se desea utilizar (e.g., ode45) f es, como ya hemos visto, la funcin en cuestin, que puede ser definida de 2 (dos) maneras equivalentes, a saber: 1. en lnea 2. en un archivo .m pero que en ningn caso puede pasarse como una cadena de texto. y(t0) = y0 (2)

tspan es el intervalo en el que queremos resolver; desde el punto de vista de MATLAB es un vector que especifica el intervalo de integracin: [t0, tf]. El solver impone las condiciones iniciales en tspan (1), y se integra a partir tspan (1) a tspan (final).
NOTA:Para obtener las soluciones en momentos especficos (todos aumentando o todos disminuyendo), debemos usar tspan = [t0, t1, ..., tf].

Consecuentemente, tspan requiere la especificacin de al menos dos componentes,; o el primer componente es el punto o extremo inicial del intervalo, es decir el punto t0 donde se especifican las condiciones iniciales o el ltimo componente es el punto o extremo final del intervalo (que puede ser menor que t0, en cuyo caso se resuelve la ecuacin hacia atrs en el tiempo (o hacia la izquierda en el espacio).
NOTA: Si se especifican ms de dos componentes en el vector tspan se obtendrn resultados en los puntos indicados en el mismo (y slo en ellos), tambin hay que tener en cuenta que dichos componentes han de especificarse en orden lgico, ya sea creciente o decreciente.

4 EJEMPLO 1
Para resolver el Ejemplo: (3)
(cuya solucin analtica exacta es como se demuestra ms adelante en el punto 4.X Ejemplo 1: Variante X)

en el intervalo [ 0, 1 ] y mostrar grficamente el resultado ingresamos en la Ventana de Comandos (Command Window) de MATLAB: f = inline(3*y, t, y) [T, Y] = ode45(f, [0 1], 1) plot(T, Y, T, Y, o) MATLAB nos devuelve los resultados siguientes:
f= Inline function: f(t,y) = 3*y T= 0 0.0167 0.0335 0.0502 0.0670 0.0920 0.1170 0.1420 0.1670 0.1920 0.2170 0.2420 0.2670 0.2920 0.3170 0.3420 0.3670 0.3920 0.4170 0.4420 0.4670 0.4920 0.5170 0.5420 0.5670 0.5920 0.6170 0.6420 0.6670 0.6920 0.7170 0.7420 0.7670 0.7920 0.8170 0.8420 0.8670 0.8920 0.9170

0.9420 0.9670 0.9752 0.9835 0.9917 1.0000

Y= 1.0000 1.0515 1.1057 1.1627 1.2226 1.3178 1.4204 1.5310 1.6503 1.7788 1.9174 2.0667 2.2277 2.4012 2.5882 2.7897 3.0070 3.2412 3.4937 3.7658 4.0591 4.3752 4.7160 5.0833 5.4792 5.9059 6.3659 6.8617 7.3961 7.9721 8.5930 9.2623 9.9837 10.7613 11.5994 12.5028 13.4766 14.5262 15.6575 16.8770 18.1915 18.6475 19.1151 19.5943 20.0856

Como es dable observar, en la grfica generada mediante el comando plot(T, Y, T, Y, o), aparecen marcados con o los puntos calculados y una curva construida a partir de ellos, en el intervalo [0 1].

4.1 Ejemplo 1: Variante 1


Si slo estuvisemos interesados en conocer el valor de la solucin en los puntos: 0 0.1 0.2 0.3 0.4 y 0.5, deberamos ingresar en la en la Ventana de Comandos (Command Window) de MATLAB los comandos siguientes:
>> f = inline(3*y, t, y) [T, Y] = ode45(f, [0 0.1 0.2 0.3 0.4 0.5], 1) plot(T, Y, T, Y, o)

MATLAB nos devolvera los resultados siguientes:


f= Inline function: f(t,y) = 3*y

T= 0 0.1000 0.2000 0.3000 0.4000 0.5000

Y= 1.0000 1.3499 1.8221 2.4596 3.3201 4.4817

Como es dable observar, en la grfica generada mediante el comando plot(T, Y, T, Y, o), aparecen marcados con o los puntos calculados y una curva construida a partir de ellos, en el intervalo [0 0.1 0.2 0.3
0.4 0.5]

4.2 Ejemplo 1: Variante 2


Si deseramos que la funcin plot de MATLAB representase:

la curva mediante una lnea de color azul 'bdiamond-.'

los puntos del intervalo mediante un smbolo o Marcador (Marker):


o o

con forma de diamante ('bdiamond-.') con bordes de color rojo ('MarkerEdgeColor','r') con su interior de color verde ('MarkerFaceColor','g') con un tamao igual a 10 ('MarkerSize',10)

o o

la curva mediante una lnea de ancho doble ('LineWidth',2) la curva mediante una lnea compuesta por rayas y puntos 'bdiamond-.'
('ANyCA 2012 PL EDO - Ejemplo 4.1 - Variante1 - FIGURA 1')

con un ttulo igual al siguiente: 'ANyCA 2012 PL EDO - Ejemplo 4.1 - Variante1 - FIGURA 1' title

con un rtulo en el eje x igual a Eje T xlabel('Eje T') con un rtulo en el eje y igual a Eje Y xlabel('Eje Y')
con la grilla activada grid on con el fondo de color amarillo whitebg('y')

deberamos adecuar los parmetros de la funcin plot, ingresando en la en la Ventana de Comandos (Command Window) de MATLAB los comandos siguientes:
>> f = inline('3*y', 't', 'y') [T, Y] = ode45(f, [0 0.1 0.2 0.3 0.4 0.5], 1) plot(T, Y, T, Y, 'bdiamond-.',... 'MarkerEdgeColor','r',... 'MarkerFaceColor','g',... 'MarkerSize',10,... 'LineWidth',2) title ('ANyCA 2012 - PL - EDO - Ejemplo 4.1 Variante 2 - FIGURA 1') xlabel('Eje T') ylabel('Eje Y') grid on %whitebg('y')

MATLAB nos devolvera los resultados siguientes:


f=

Inline function: f(t,y) = 3*y

T= 0 0.1000 0.2000 0.3000 0.4000 0.5000

Y= 1.0000 1.3499 1.8221 2.4596 3.3201 4.4817

NOTA: SE OMITEN LOS RESULTADOS QUE DEBERN SER OBTENIDOS POR CADA ALUMNO.

5 PROBLEMAS

Das könnte Ihnen auch gefallen