Está en la página 1de 11

UNIVERSIDAD AUTONOMA DE YUCATAN FACULTAD DE MATEMATICAS Precoloquio 2008 M etodos num ericos para sistemas de ecuaciones diferenciales 28 de Mayo

o de 2008

1.

Ecuaciones diferenciales ordinarias (EDOs).

Una ecuaci on diferencial ordinaria (EDO) contiene una o m as derivadas de una variable dependiente y con respecto a una variable independiente t, a la que usualmente nos referimos como tiempo. La derivada de y con respecto a t se denota como y , la segunda derivada como y , y as sucesivamente. A menudo y (t) es un vector, y sus elementos se denotan por y1 , y2 ,. . . , yn .

1.1.

EDOs de primer orden.

MATLAB resuelve los siguientes tipos de EDOs1 de primer orden: 1. EDOs de la forma y = f (t, y ). 2. EDOs de la forma M (t, y )y = f (t, y ), donde M (t, y ) es una matriz. 3. EDOs de la forma f (t, y, y ) = 0 (solo hay una funci on).

1.2.

EDOs de orden superior.

MATLAB resuelve EDOs de orden superior y para ello se debe escribir la ecuaci on como un sistema equivalente de EDOs de primer orden de la forma y = f (t, y ). Se puede reescribir la EDO y (n) = f (t, y, y , . . . , y (n1) ) como el sistema de EDOs de primer orden y1 = y2 y2 = y3 yn = f (y1 , y2 , . . . , yn ) donde y1 = y , y2 = y ,. . . , yn = y (n1) .
1

ODEs por sus siglas en ingl es.

1.3.

Problemas de valores iniciales (PVIs).

Generalmente, existen muchas funciones que satisfacen una EDO dada y se necesita informaci on adicional para especicar la soluci on de inter es. En un PVI, la soluci on de inter es satisface una condici on inicial, esto es, y toma el valor y0 en el tiempo t = t0 . As , un PVI para una EDO, se puede escribir como y = f (t, y ) y (t0 ) = y0 Si la funci on f (t, y ) satisface ciertas condiciones, el PVI anterior tiene una u nica soluci on. Generalmente la soluci on no tiene una expresi on anal tica, as que es necesario aproximar la soluci on y (t) con m etodos num ericos (para las EDOs mencionadas en 1.1 y 1.2).

1.4.

Tipos de funciones en MATLAB para resolver PVIs.

La siguiente tabla muestra las distintas funciones que resuelven PVIs, el tipo de problema que se puede resolver con ellos, el m etodo en el que cada uno est a basado y algunas ventajas y desventajas. Funci on ode45 Tipo de problema que resuelve EDOs no r gidas. EDOs no r gidas. Se puede aplicar a ecuaciones levemente r gidas. M etodo Runge-Kutta M etodo de un paso. Runge-Kutta M etodo de un paso. Ventajas/ desventajas Responde bien en la mayor a de los problemas. M as eciente que ode45. Para tolerancias primitivas. M as eciente que ode45, cuando la EDO es muy dif cil de evaluar. Responde bien en la mayor a de los problemas. M as eciente que ode15s. Para tolerancias primitivas. Sin amortiguamiento num erico. M as eciente que ode23t, cuando la ODE es muy dif cil de evaluar. Para tolerancias primitivas.

ode23

ode113

EDOs no r gidas.

A-B-M M etodo multipasos. FDNs M etodo multipasos. Rosenbrock M etodo de un paso. FDNs Regla del trapecio.

ode15s

EDOs r gidas.

ode23s

EDOs r gidas.

ode23t

EDOs moderadamente r gidas.

ode23tb

EDOs r gidas.

Runge-Kutta Regla del trapecio.

1.5.

Sintaxis de las funciones en MATLAB para resolver PVIs.

Es muy f acil usar los distintos m etodos num ericos que MATLAB ofrece. Por ejemplo, para aplicar distintos m etodos para un mismo problema, basta cambiar el nombre de la funci on en la instrucci on. La sintaxis com un de las funciones es la siguiente: [t,y]=funci on ( EDOfun , intervalo, y0, opciones2 ) donde la palabra funci on es alguna de las funciones para resolver PVIs que se muestra en la tabla anterior. Las especicaciones de los par ametros de entrada son: Par ametro EDOfun Especicaci on Representa la funci on en el lado derecho de la EDO, es decir, dy dt = EDOfun(t, y ) (y = f (t, y )) dt son vectores columnas. donde t es un escalar y y y dy Para denir la funci on EDOfun, se debe especicar en un M-le. Es un vector que representa el intervalo de integraci on. Se debe dar la condici on inicial en intervalo(1) y se resuelve desde intervalo(1) hasta intervalo(2). Vector de valores iniciales para el PVI. Es una estructura con par ametros adicionales que cambia las propiedades predeterminadas de la funci on. Usualmente sirve para resolver problemas espec cos.

intervalo y0 opciones

Las especicaciones de los par ametros de salida son: Par ametro t y Especicaci on Representa el vector de tiempo. Representa una matriz soluci on, donde cada la de y es la soluci on en la correspondiente la del vector t.

1.6.

Ejemplos.

1. Ejemplo 1. (No r gido) Consideremos la EDO de segundo orden, y (1 y 2 )y + y = 0 donde > 0. Haciendo la sustituci on y1 = y , y2 = y1 , obtenemos el sistema de EDOs y1 = y2 2 )y y y2 = (1 y1 2 1 El sistema anterior genera el siguiente PVI y1 y2 y1 (0) y2 (0)
2

= = = =

y2 2 )y y (1 y1 2 1 2 0

para t [0, 20]

Los valores predeterminados para las tolerancias es de 1e-3 para problemas escalares y de 1e-6 para problemas vectoriales.

a ) Necesitamos denir la funci on EDOfun, la cual depende de t y y . Crearemos un M-le con la siguiente instrucci on: function z = funejem1(t,y) z = [y(2); (1-y(1).^2).*y(2)-y(1)]; Notar que en este caso, la variable t no aparece en la denici on de la funci on funejem1 y = 1. Tambi en, notemos que funejem1 es un vector columna. b ) Denamos la estructura de opciones con la siguiente instrucci on: opciones = odeset( RelTol ,1e-6); c ) Ahora escribiremos la instrucci on que resuelve el PVI. Por las condiciones del problema, el intervalo es [0, 20] y el vector columna de valores iniciales ser a [2; 0], as [t,y]=ode45( funejem1 ,[0,20],[2;0],opciones); (tambi en se puede escribir [t,y]=ode45( funejem1 ,[0,20],[2,0],opciones); o [t,y]=ode45( funejem1 ,[0,20],[2;0]);) d ) Podemos visualizar el resultado mediante una gr aca, la cual se puede obtener mediante las siguientes instrucciones: plot(t,y(:,1), r* ,t,y(:,2), - - ) title( Soluci on de la EDO, mu=1 ); xlabel( tiempo t ); ylabel( soluci on y ); legend( y1 , y2 )

Figura 1 Gr aca de las soluciones del PVI usando la funci on ode45, = 1. 2. Ejemplo 2.(R gido) Cuando en el PVI anterior es sucientemente grande, el problema es r gido. Consideremos el siguiente PVI y1 y2 y1 (0) y2 (0) = = = = y2 2 )y y (1 y1 2 1 2 0 para t [0, 3000]

a ) Crearemos un M-le con la siguiente instrucci on: function z = funejem2(t,y) z = [y(2); 1000*(1-y(1).^2).*y(2)-y(1)]; 4

Notar que en este caso, la variable t no aparece en la denici on de la funci on funejem2 y = 1000. b ) En este problema las condiciones son: el intervalo es [0, 3000] (por razones de escala) y el vector columna de valores iniciales es [2; 0], as [t,y]=ode15s( funejem2 ,[0,3000],[2;0],opciones); (tambi en se puede escribir [t,y]=ode15s( funejem2 ,[0,3000],[2,0],opciones); o [t,y]=ode15s( funejem2 ,[0,3000],[2;0]);). c ) Podemos visualizar el resultado mediante una gr aca, la cual se puede obtener mediante las siguientes instrucciones: plot(t,y(:,1), r- - ) title( Soluci on de la EDO, mu=1000 ); xlabel( tiempo t ); ylabel( soluci on y ); legend( y1 )

Figura 2 Gr aca de una soluci on del PVI r gido usando la funci on ode15s, = 1000.

2.

Ecuaciones diferenciales ordinarias con retardos (EDRs).


Las funciones de MATLAB pueden resolver sistemas de EDOs de la forma y (t) = f (t, y (t), y (t 1 ), . . . , y (t n ))

donde t es la variable independiente, y es la variable dependiente y y representa (la derivada de y con respecto a t) a dy/dt. Los retardos 1 , . . . , n son constantes positivas.

2.1.

Problemas de valores iniciales para EDOs con retardo (PVIsR.)

En un PVI, se busca una soluci on en un intervalo [t0 , tf ] con t0 < tf . Las ecuaciones diferenciales con retardo muestran que y (t) depende de valores anteriores a t. En particular, y (t0 ) depende de y (t0 1 ), . . . , y (t0 n ). Por esto, una soluci on en [t0 , tf ] depende de los valores para t t0 , es decir, depende de la historia S (t), t t0 .

2.2.

Tipos de funciones en MATLAB para resolver PVIsR.

Funci on dde23 La funci on dde23 resuelve PVIs para EDRs3 con retardos constantes. Es decir, resuelve el sistema de primer orden y (t) = f (t, y (t), y (t 1 ), . . . , y (t n )) en el intervalo [t0 , tf ], con t0 < tf y la funci on historia y (t) = S (t), para t t0 . La funci on dde23 produce una soluci on continua en el intervalo [t0 , tf ]. Est a basado en el m etodo de Runge-Kutta. Funci on ddesd La funci on ddesd resuelve PVIs para EDRs con retardos generales. Es decir, resuelve el sistema de primer orden y (t) = f (t, y (t), y (d(1)), . . . , y (d(n))) en el intervalo [t0 , tf ], con t0 < tf , donde los retardos dependen de t y de y (t). Est a basado en el m etodo de Runge-Kutta. Para detalles ver Solving ODEs and DDEs with residual control, L.F. Shampine,Applied Numerical Mathematics, 52 (2005), pp 113-127.

2.3.

Sintaxis de la funci on dde23 en MATLAB.

La sintaxis de esta funci on es la siguiente:

sol=dde23( EDRfun , retardos, historia, intervalo, opciones)

DDEs por sus siglas en ingl es.

Las especicaciones de los par ametros de entrada son: Par ametro Especicaci on Representa la funci on en el lado derecho de la EDR, es decir, dy dt = EDRfun(t, y (t), y (t 1 ), . . . , y (t n )) (y (t) = f (t, y (t), y (t 1 ), . . . , y (t n ))), dt donde t es un escalar y y y dy son vectores columnas. Para denir la funci on EDRfun, se debe especicar en un M-le. Es un vector con los retardos 1 , . . . , n constantes. Representa la funci on historia S (t), para t 0. Para denir la funci on historia, se debe especicar en un M-le. Es un vector que representa el intervalo de integraci on. Se resuelve desde intervalo(1) hasta intervalo(2). Es una estructura con par ametros adicionales que cambia las propiedades predeterminadas de la funci on. Usualmente sirve para resolver problemas espec cos.

EDRfun

retardos historia intervalo opciones

El par ametro de salida es una funci on continua en el intervalo [t0 , tf ]. Para tener una aproximaci on a la soluci on en cualquier punto en [t0 , tf ], podemos usar la funci on auxiliar deval junto con la estructura sol que devuelve la funci on dde23. Las siguientes instrucciones muestran como debe realizarse: t St = = linspace(0,5); deval(sol,t);

La i- esima columna de St aproxima la soluci on en el tiempo t(i), es decir, la i-esima columna representa el vector y (t(i)). La estructura sol tiene dos campos especiales, a saber: sol.x y sol.y. El campo sol.x corresponde al arreglo de t (mencionado en ode23) de la variable independiente y el campo sol.y corresponde al arreglo y (mencionado en ode23) de valores soluci on.

2.4.

Ejemplos.

1. Ejemplo 1. Consideremos la EDR, y1 (t) y2 (t) y3 (t) y1 (t) y2 (t) y3 (t) = = = = = = y1 (t 1) y1 (t 1) + y( t 0,5) y2 (t) y1 (t 1) y1 (t 1) + y2 (t 0,2) y2 (t)

El sistema anterior genera el siguiente PVIR para t [0, 5]

con la historia y1 (t) = 1 y2 (t) = 1 para t 0 y3 (t) = 1

a ) Necesitamos denir la funci on de EDRfun, la cual depende de t y y . Crearemos un M-le con la siguiente instrucci on: function w = ddefunejem1(t,y,z) yretardo1=z(:,1); yretardo2=z(:,2); w = [yretardo1(1);yretardo1(1)+yretardo2(2);y(2)]; Notar que en este caso, la variable t no aparece en la denici on de la funci on ddefunejem1. Tambi en, notemos que ddefunejem1 es un vector columna. b ) Se debe especicar los retardos 1 , . . . , n constantes como un vector. La instrucci on es la siguiente: retardos = [1,0.2]; c ) Denamos la funci on historia , en este ejemplo, la instrucci on es la siguiente: function S = historia(t) S = ones(3,1); d ) Denamos la estructura de opciones con la siguiente instrucci on: opciones = odeset( RelTol ,1e-6); e ) Ahora escribiremos la instrucci on que resuelve el PVI. Por las condiciones del problema, el intervalo es [0, 5], as sol=dde23( ddefunejem1 ,retardos, historia ,[0,5],opciones); (tambi en se puede escribir como sol=dde23( ddefunejem1 , [1,0.2], historia , [0,5], opciones); o sol=dde23( ddefunejem1 , [1,0.2], ones(3,1), [0,5]);) f ) Podemos visualizar el resultado mediante una gr aca, la cual se puede obtener mediante las siguientes instrucciones: t = linspace(0,5); St = deval(sol,t); plot(t,St(1,:), r* ,t,St(2,:), k- ,t,St(3,:), b- ) title( Soluci on de la EDR ); xlabel( tiempo t ); ylabel( soluci on y ); legend( y1 , y2 , y3 ,2)

Figura 1 Gr aca de las soluciones del PVIR usando la funci on dde23. 8

Tambi en se puede usar una manera corta, sin embargo, en este caso, la gr aca es predeterminada, la instrucci on es la siguiente: plot(sol.x,sol.y); title( Soluci on de la EDR ); xlabel( tiempo t ); ylabel( soluci on y ); legend( y1 , y2 , y3 ,2)

Figura 2 Gr aca de las soluciones del PVIR usando la funci on dde23, con la segunda instrucci on. 2. Ejemplo 2. Consideremos la EDR, y1 (t) y2 (t) y3 (t) y1 (t) y2 (t) y3 (t) = = = = = = y1 (t)y2 (t 1) + y2 (t 10) y1 (t)y2 (t 1) y2 (t) y2 (t) y2 (t 10) y1 (t)y2 (t 1) + y2 (t 10) y1 (t)y2 (t 1) y2 (t) y2 (t) y2 (t 10)

El sistema anterior genera el siguiente PVIR para t [0, 40]

con la historia y1 (t) = 5 y2 (t) = 0.1 y3 (t) = 1

para t 0

a ) Necesitamos denir la funci on de EDRfun, la cual depende de t y y . Crearemos un M-le con la siguiente instrucci on: function w = ddefunejem2(t,y,z) yretardo1=z(:,1); yretardo2=z(:,2); w =[-y(1)*yretardo1(2)+yretardo2(2); y(1)*yretardo1(2)-y(2); y(2)-yretardo2(2)]; 9

b)

c)

d) e)

f)

Notar que en este caso, la variable t no aparece en la denici on de la funci on ddefunejem2. Tambi en, notemos que ddefunejem2 es un vector columna. Se debe especicar los retardos 1 , . . . , n constantes como un vector. La instrucci on es la siguiente: retardos = [1,10]; Denamos la funci on historia , en este ejemplo, la instrucci on es la siguiente: function S = historia(t) S = [5;0.1;1]; Denamos la estructura de opciones con la siguiente instrucci on: opciones = odeset( RelTol ,1e-6); Ahora escribiremos la instrucci on que resuelve el PVI. Por las condiciones del problema, el intervalo es [0, 40], as sol=dde23( ddefunejem2 ,retardos, historia ,[0,40],opciones); (tambi en se puede escribir como sol=dde23( ddefunejem2 , [1,10], [5;0.1;1], [0,40], opciones); o sol=dde23( ddefunejem2 , [1,10], [5;0.1;1], [0,40]);) Podemos visualizar el resultado mediante una gr aca, la cual se puede obtener mediante las siguientes instrucciones: t = linspace(0,40); St = deval(sol,t); plot(t,St(1,:), r* ,t,St(2,:), k- ,t,St(3,:), b- ) title( Soluci on de la EDR ); xlabel( tiempo t ); ylabel( soluci on y ); legend( y1 , y2 , y3 ,2)

Figura 1 Gr aca de las soluciones del PVIR usando la funci on dde23. Tambi en se puede usar una manera corta, la instrucci on es la siguiente: plot(sol.x,sol.y); title( Soluci on de la EDR ); xlabel( tiempo t ); ylabel( soluci on y ); legend( y1 , y2 , y3 ,2) 10

Figura 2 Gr aca de las soluciones del PVIR usando la funci on dde23, con la segunda instrucci on.

11

También podría gustarte