Вы находитесь на странице: 1из 13

Practica de resolucin de ecuaciones o diferenciales ordinarias con condiciones iniciales usando MATLAB

J. Mas X. Casabn a Noviembre 2005 J. Mar n

ndice I
1. Introduccin o 2. Descripcin de los algoritmos o 3. Entradas y salidas de los programas 4. Cambio de opciones 4.1. Opciones para controlar el error . . . . . . . . . . . . . . . . . 4.2. Opciones para elegir el tipo de salida . . . . . . . . . . . . . . 4.3. Combinacin de opciones . . . . . . . . . . . . . . . . . . . . . o 5. Problemas 1 2 3 5 5 7 7 7

6. Resolucin de sistemas de ecuaciones diferenciales de primer o orden 9 7. Solucin de ecuaciones diferenciales de orden superior con o condiciones iniciales 12

1. Introduccin o
En esta prctica vamos a estudiar cmo resolver con MATLAB: a o Ecuaciones diferenciales ordinarias de primer orden expl citas.

Sistemas de ecuaciones diferenciales ordinarias de primer orden, expl citas y con condiciones iniciales. Ecuaciones diferenciales de orden superior expl citas con condiciones iniciales. Todas estas ecuaciones pueden escribirse y = f (t, y), y(t0 ) = y0 (1)

MATLAB tiene incorporados varios mtodos de resolucin de problemas e o de valor inicial del tipo (1), todos ellos empiezan por ode y le siguen dos o ms nmeros, y quiz alguna letra, los nmeros indican el orden del mtodo, a u a u e o mejor de los mtodos, empleados. Todos ellos requieren los mismos datos y e proporcionan los resultados de manera anloga. Los programas son: ode45, a ode23, ode113, ode15s, ode23s, ode23t y ode23tb.

2. Descripcin de los algoritmos o


Los algoritmos implementados en las versiones 5.3, 6, 6.1, 6.5 y 7.* de MATLAB son: ode45 es un mtodo expl e cito 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 o e paso y es el primer mtodo que se debe probar. e ode23 es tambin un mtodo expl e e cito del tipo Runge-Kutta pero de menor orden, RK23. Si no se requiere demasiada precisin y la ecuacin es o o poco r gida puede ser ms eciente que ode45. a ode113 es un mtodo de tipo Adams-Bashforth-Moulton PECE de orden e variable. Es por tanto un mtodo multipaso. e Estos mtodos son adecuados para sistemas no r e gidos. 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 e sistema es r gido y ode45 no da buen resultado se recomienda probar este mtodo. e ode23s Es un mtodo de un paso que puede ser ms eciente que el anterior e a si no se requiere demasiada precisin. o

ode23t es una implementacin basada en la regla del trapecio. Se puede o utilizar si el problema es moderadamente r gido y no se requiere demasiada precisin. o ode23tb Es un mtodo Runge-Kutta impl e cito.

3. Entradas y salidas de los programas


La forma de proporcionar los datos es la misma para todos los algoritmos. Todos ellos devuelven el mismo tipo de resultados. Escribiremos ode* para referirnos a uno cualquiera de ellos. Todos los mtodos generan una tabla de valores de la variable indepene diente t y los correspondientes de la variable dependiente y, adems todos a ellos los proporcionan por separado. Es decir, se han de guardar los resultados en dos matrices, la primera es en realidad un vector columna con los valores de t donde se ha calculado la solucin y la segunda ser una matriz o a con los valores correspondientes de las variables dependientes. Esta matriz ser un vector si slo se tiene una variable dependiente y la ecuacin difea o o rencial es de orden 1, si se trata de un sistema de ecuaciones diferenciales o de una ecuacin de mayor orden tendr varias columnas tal como veremos o a posteriormente. Los datos m nimos requeridos para resolver un problema de valor inicial y = f (t, y), y(t0 ) = y0 (2)

son: la funcin f , el intervalo en el que se quiere la solucin y la condicin o o o inicial y0 . En este orden hay que proporcionar los datos a los distintos programas. Por tanto escribiremos [T, Y] = ode*(f, tspan, y0) Las matrices T e Y contienen los resultados, tal como se ha dicho. f es la funcin, puede estar denida en l o nea, en un chero .m o annio mamente, pero en ningn caso puede pasarse como una cadena de texto. u tspan es el intervalo en el que queremos resolver, desde el punto de vista de MATLAB es un vector de al menos dos componentes, siendo la primera el punto t0 donde se especican las condiciones iniciales y la ultima el extremo nal del intervalo (que puede ser menor que t0 , en este caso se resuelve la ecuacin hacia atrs en el tiempo o en el espacio hacia la izquierda). Si o a se especican ms de dos componentes en este vector se obtendrn resultados a a en los puntos indicados en el mismo (y slo en ellos), hay que tener en cuenta o que las componentes han de estar en orden, creciente o decreciente. 3

Veamos un ejemplo Ejemplo 1 Para resolver el problema y = 3y, y(0) = 1, (3)

cuya solucin exacta es y = e3t , en el intervalo [ 0, 1 ] y ver grcamente el o a resultado podr amos escribir (se omiten los resultados)
f = inline(3*y, t, y) [T, Y] = ode45(f, [0 1], 1) plot(T, Y, T, Y, o)

en la grca aparecen marcados los puntos calculados y una curva construida a a partir de ellos. Una alternativa es denir la funcin annimamente o o
[T, Y] = ode45(@(t, y) 3*y, [0 1], 1) plot(T, Y, T, Y, o)

Observar que aunque en la ecuacin diferencial y = f (t, y) = 3y no o aparece la variable independiente t (f es slo funcin de y, por tanto se o o trata de una ecuacin diferencial autnoma), es necesario indicar a MATLAB o o que la funcin dependende de las dos variables t e y, para ello se dene la o funcin incluyndolas expl o e citamente, tal como se muestra:
f = inline(3*y, t, y)
Variables

ode*(@(t,y) 3*y, ...


Var

Si se quisiera obtener una tabla con los valores de t en la primera columna y los de y en la segunda deber amos escribir
M = [T Y]

en este caso los valores de la variable t en los que se ha calculado la solucin, o y que estn almacenados en la variable T de MATLAB, estn separados entre a a s aproximadamente 0,025 unidades. Si se quisiera obtener la solucin en [ 1, 0 ], habr que cambiar la o a llamada a ode* por
[T, Y] = ode45(f, [0 -1], 1)

Es muy importante observar que en la llamada a ode se ha especicado el intervalo como [ 0, 1 ] y no como [ 1, 0 ], como parece natural. Ello es debido a que MATLAB asigna la condicin inicial al primer elemento del o elemento del intervalo. De haber escrito [T, Y] = ode45(f, [-1 0], 1) se hubiera resuelto la ecuacin diferencial y = 3y con la condicin inicial o o 3(t+1) y(1) = 1, cuya solucin es diferente (y = e o en lugar de y = e3t ). Por ultimo si slo estamos interesados en conocer el valor de la solucin o o en los puntos 1 y 2, habr que escribir a
[T, Y] = ode45(f, [0 1 2], 1)

4. Cambio de opciones
En la seccin anterior vimos cmo utilizar los diferentes programas en o o la forma ms sencilla posible. Un cuarto parmetro de entrada permite a a cambiar algunas opciones, pero para ello es necesario utilizar la funcin o odeset. Aunque se pueden cambiar bastantes opciones slo comentaremos alguo nas de ellas.

4.1. Opciones para controlar el error


En cada paso los programas estiman el error local de la solucin (o de o cada componente de la misma si se trata de un sistema), de forma que si este error local supera la cantidad establecida se reduce el tamao de paso. n Todas las funciones utilizan los valores RelTol que es un parmetro de a error relativo que se aplica en todos los pasos por igual. Su valor por defecto es 103 . Tambin utilizan el parmetro AbsTol que es la tolerancia para el e a error absoluto. Si el valor absoluto del error local est por debajo de esta a cantidad se da por bueno el tamao de paso. AbsTol puede ser un vector, en n cuyo caso cada componente se aplica a la componente correspondiente de la solucin, o puede ser un escalar, en este caso en todos los puntos se aplica el o mismo criterio. El valor por defecto es 106 . En denitiva el error local de la componente i de la solucin cumple o |ei | mx(RelTol |yi | , AbsToli ) a Ambas cantidades pueden cambiarse utilizando odeset. Para sistemas de ecuaciones diferenciales puede indicarse que el control del error se haga utilizando la norma del error local en lugar de controlar cada una de las 5

componentes para ello hay que cambiar la opcin NormControl a on. El o control de las componentes es ms estricto que el de la norma. a Ejemplo 2 Consideremos la ecuacin o y = y, que vamos a resolver en [ 0, 1 ].
[T, Y] = ode45(f, [0 1], 1)

y(0) = 1

(4)

Como la solucin es y = et , podemos calcular el error cometido en el o extremo derecho del intervalo, que es la diferencia entre el nmero e y el u valor obtenido.
error0 = exp(1) - Y(end)

es decir 6,338 109 . Si queremos ms precisin podemos disminuir el a o criterio de error


opcion1 = odeset(RelTol, 1e-4, AbsTol, 1e-6) [T1, Y1] = ode45(f, [0 1], 1, opcion1) size(Y1) error1 = exp(1) - Y1(end)

como se puede comprobar se ha obtenido el mismo resultado, debido a que la primera vez se ha resuelto con un error real mucho menor que el prejado.

opcion2 = odeset(RelTol, 1e-5, AbsTol, 1e-7) [T2, Y2] = ode45(f, [0 1], 1, opcion2) size(Y2) error2 = exp(1) - Y2(end)

ahora el error es un poco ms pequeo 5,8765 109 y se han calculado a n ms puntos (45). a

opcion3 = odeset(RelTol, 1e-11, AbsTol, 1e-12) [T3, Y3] = ode45(f, [0 1], 1, opcion3); size(Y3) error3 = exp(1) - Y3(end)

que da un error 3,0114 1012 calculando 197 puntos. El error relativo ms pequeo que puede especicarse es eps, el absoluto ha de ser positivo. a n Ejercicio 1 Resolver el ejercicio anterior utilizando el criterio relativo ms a pequeo permitido. n 6

4.2. Opciones para elegir el tipo de salida


Otra opcin que puede ser interesante permite que la salida sea directao mente la grca de la funcin. a o
opciond = odeset(OutputFcn, odeplot) ode45(f, [0 1], 1, opciond);

4.3. Combinacin de opciones o


Se puede usar odeset de varias formas. Se pueden aadir opciones a un n conjunto de opciones ya denido. Por ejemplo
opcionA = odeset(opcion3, OutputFcn, odeplot) ode45(f, [0 1], 1, opcionA);

o se pueden combinar dos existentes.


opcionB = odeset(opcionA, opcion2); ode45(f, [0 1], 1, opcionB)

tambin es posible utilizarla en la propia llamada a ode* e


ode45(f,[0 1],1,odeset(AbsTol,1e-7,OutputFcn,odeplot))

5. Problemas
Ejercicio 2 La poblacin de ciertas especies crece a una velocidad proporo cional a la poblacin presente y que responde a un problema de valor inicial o como y = 0,02 y, y(0) = 5000. (5) Hallar la solucin en [ 0, 5 ] usando ode45, ode23 y ode113 y comparar el o resultado en t = 5 con la solucin exacta1 . o Ejercicio 3 Un paracaidista salta desde un avin. Hasta el momento de o abrir el paracaidas la resistencia del aire es proporcional a v 3/2 , donde v es la velocidad de descenso. Si la velocidad responde a la ecuacin diferencial o 3/2 v = 10 0,01v y abre el paracaidas a los 6 segundos. Qu velocidad ha e alcanzado en ese momento?
La orden dsolve(Dy = 0.02*y, y(0)=5000) de MATLAB devuelve la solucin o exacta de la ecuacin diferencial (5). o
1

Ejercicio 4 Supongamos que en una comunidad de L personas hay P personas contagiadas de una enfermedad no muy grave que les permite seguir en activo. Si y(t) denota el nmero de personas contagiadas los posibles contacu tos entre personas contagiadas y sanas son proporcionales a y(t)(L y(t)), por lo que el problema puede modelarse como y = k y (L y), y(0) = P.

Tomando L = 25000, k = 0,00003 e y(0) = 250 calcular la evolucin o de la epidemia en el intervalo [ 0, 60 ]. Estimar el nmero medio de persou nas contagiadas calculando la media aritmtica de las ordenadas obtenidas e anteriormente. Ejercicio 5 En una reaccin qu o mica una molcula de una sustancia A se e combina con una molcula de una sustancia B para formar una molcula de e e otra sustancia C. Se sabe que la concentracin de y(t) de la sustancia C en el o instante t es la solucin del problema de valor inicial y = k(ay)(by), con o y(0) = 0, donde k es una constante positiva y a y b son las concentraciones iniciales de las sustancias A y B respectivamente. Supongamos que k = 0,01, a = 70milimoles/litro y b = 50milimoles/litro. Usar el mtodo de Rungee Kutta para hallar la solucin en [ 0, 20 ]. Cul es la concentracin nal de o a o C? Ejercicio 6 Resolviendo un problema de valor inicial adecuado hacer una tabla de valores de la funcin de distribucin normal f (t) denida por la o o integral: x 1 1 2 et /2 dt f (x) = + 2 2 0 para x [ 0, 3 ] y con incrementos de 0,5. Ejercicio 7 El ritmo de cambio de la poblacin de lobos, L, en una detero minada zona viene dada por la ecuacin o L = k(650 L) En un momento determinado L = 156, estimar la poblacin de lobos al o cabo de 3 unidades de tiempo, sabiendo que k = 0,4236. Realizar tambin e una grca de la evolucin de la poblacin de lobos hasta 20 unidades de a o o tiempo. Ejercicio 8 Un modelo de crecimiento que describe correctamente la dinmica de algunas poblaciones viene dado por la ecuacin de Gompertz a o N = rN ln K , donde N (t) representa el nmero de individuos a los t aos. u n N 8

Para una poblacin con ritmo de crecimiento r = 0,71 por ao y K = 80,5 o n millones de individuos, encontrar la poblacin al cabo de dos aos sabiendo o n que inicialmente el nmero de individuos es 0,5K. Realizar tambin una u e grca de la evolucin de la poblacin al cabo de 15 aos. a o o n Ejercicio 9 Si P (t) es el nmero de individuos de una cierta poblacin en u o el instante t, medido en aos, la tasa de crecimiento demogrco se modeliza n a por la ecuacin log o stica P (t) = 2,9 102 P (t) 1,4 107 [P (t)]2 . Sabiendo que inicialmente la poblacin es de 50976 individuos, estimar la o poblacin al cabo de cinco aos. Realizar tambin una grca de la evolucin o n e a o de la poblacin hasta 250 aos. o n

6. Resolucin de sistemas de ecuaciones difeo renciales de primer orden


Un sistema de ecuaciones diferenciales de orden 1 puede escribirse como y = f (t, y), y(t0 ) = y0 (6)

donde y , y e y0 son vectores con el mismo nmero de componentes. Sabemos u que para resolver este tipo de problemas se utilizan los mismos mtodos que e para resolver la ecuacin escalar (2). La unica diferencia, desde el punto de o vista de MATLAB, es que la unica forma de denir la funcin vectorial f es o mediante un chero de funcin (chero .m) que ha de devolver adems un o a vector columna. Ejemplo 3 Obtener la solucin en el intervalo [ 0, 10 ], del sistema o x =yz y =zx z =xy con las condiciones iniciales x(0) = 1, y(0) = 0 y z(0) = 1. Este problema puede escribirse tambin e x x yz x(0) 1 y = f t, y = z x , y(0) = 0 z z xy z(0) 1 Para resolverlo en el intervalo [ 0, 10 ] habr que denir en primer lugar a la funcin en un chero o 9

function dy = sistema(t, y) dy = zeros(3,1); %vector columna dy(1) = y(2) - y(3); dy(2) = y(3) - y(1); dy(3) = y(1) - y(2); donde hemos de resaltar que aunque t no aparezca en ninguna de las ecuaciones del sistema debe ser un dato del chero; la segunda l nea fuerza a que la funcin devuelva un vector columna, tal como requieren las funciones ode*, o por ultimo ntese que aunque en el sistema se hayan utilizado diferentes leo tras para las variables dependientes, tal como es usual, en MATLAB hay que trabajar con un vector, por tanto se utiliza un slo nombre (y) para todas o las variables y estas se distinguen porque corresponden a distintos elementos del vector, de forma que la traduccin es ms natural si se escribe el sistema o a como y1 = y2 y3 y2 = y3 y1 y3 = y1 y2 Una vez escrita la funcin se obtiene la solucin con la orden o o [T, Y] = ode*(@sistema, [0 10], [-1 0 1]); La solucin puede verse grcamente con la orden ode*(@sistema, [0 o a 10], [-1 0 1]); La matriz Y tiene tres columnas. La primera corresponde a los valores de la variable x, la segunda a la y y la tercera a la variable z. Ejercicio 10 Considerar un ecosistema simple que consiste en dos poblaciones, una de conejos que disponen de una cantidad innita de alimentos y otra de zorros que se alimentan de los conejos. Un modelo matemtico cla a sico debido a Volterra describe este sistema mediante un par de ecuaciones diferenciales no lineales de primer orden: r = 2r rf, f = f + rf, r(0) = r0 f (0) = f0

donde la variable independiente es el tiempo t, r = r(t) es el nmero de u conejos, f = f (t) es el nmero de zorros, y es una constante positiva. u Cuando = 0 las dos poblaciones no interactuan, y por tanto los conejos prosperan y los zorros mueren de hambre. Cuando > 0 los zorros encuentran a los conejos con una probabilidad que es proporcional al producto del 10

nmero de individuos de ambas poblaciones. Cuando uno de tales encuentros u ocurre se produce un decrecimiento en el nmero de conejos y (por razones u menos obvias) un incremento en el nmero de zorros. u Se va a investigar el comportamiento de este sistema para = 0,01 y diferentes valores de r0 y f0 variando desde 2 3 a varios miles. Dibujar o grcas de las soluciones interesantes. Incluir una grca con r en un eje y a a f en el otro. (a) Calcular la solucin con r0 = 300 y f0 = 150. Debe observarse a o partir de la grca que el comportamiento del sistema es peridico con un a o periodo muy cercano a 5 unidades de tiempo. En otras palabras r(5) est a cercano a r(0) y f (5) est cercano a f (0). a (b) Calcular la solucin con r0 = 15 y f0 = 22. Se encontrar que el o a nmero de conejos baja de 1. Esto puede interpretarse como que los conejos u se extinguen. Encontrar condiciones iniciales que causen la extincin de los o zorros. Encontar condiciones iniciales con r0 = f0 que causen la extincin o de ambas especies. (c) Es posible que alguna componente de la solucin real se haga negao tiva? Es posible que la solucin numrica se haga negativa? Qu pasa si o e e lo hace? (En la prctica las respuestas a las dos ltimas preguntas pueden a u depender de los valores usados como tolerancia de error). (d) Se han hecho mltiples modicaciones de este modelo simple para u describir de forma ms adecuada lo que ocurre en la naturaleza. Por ejemplo, a puede evitarse que el nmero de conejos crezca indenidamente cambiando u la primera ecuacin por o r =2 1 r r rf R

ahora incluso cuando = 0 el nmero de conejos nunca puede exceder la u cantidad R. Elegir algn valor razonable de R y considerar de nuevo las u cuestiones anteriores. En particular qu ocurre con la periodicidad de la e solucin? o Ejercicio 11 La araa roja es una plaga frecuente en el cultivo de c n tricos. Como es dicil de eliminar mediante productos qu micos se suele realizar un control biolgico de la plaga, introduciendo el caro como depredador que o a devora larvas y huevos de la araa roja. Este ecosistema agronmico del tipo n o depredador-presa se modeliza mediante las ecuaciones de Lokta-Volterra PD 3 D = 0,75D + 0,12 P D P = 0,95 P 11

donde la variable t indica el tiempo. P = P (t) es la poblacin de araas o n rojas y D = D(t) es la poblacin de caros. Si en el momento de introducir o a los caros (t = 0) la poblacin de araas rojas es de 4 individuos por hoja y a o n se introducen 8 caros por hoja, se pide: a (a) Nmero mximo y m u a nimo de araas rojas y caros por hoja en el n a intervalo de tiempo [ 0, 50 ]. (b) Representar grcamente la poblacin de araas rojas y caros en el a o n a intervalo anterior. Cmo es el comportamiento del sistema? o

7. Solucin de ecuaciones diferenciales de oro den superior con condiciones iniciales


Para resolver ecuaciones diferenciales de orden superior (de orden mayor que 1) con condiciones iniciales, se transforman en un sistema de ecuaciones diferenciales de orden 1 equivalente y se resuelve ste. El nmero de ecuacioe u nes diferenciales de primer orden del sistema es igual al orden de la ecuacin o diferencial original. Ejemplo 4 Supongamos ahora que queremos resolver la ecuacin de seguno do orden y = 3y t + 5y 2t, y(0) = 1, y (0) = 2 (7) haciendo el cambio de variable z = y , podemos escribir la ecuacin de o segundo orden (7) como el sistema de ecuaciones diferenciales de primer orden y =z , y(0) = 1, z(0) = 2 z = 3zt + 5y 2t Para resolver el problema hemos de denir la funcin f , que en este caso o z e es vectorial f (t, [ y ]) = [ 3zt+5y2t ], escribindola en un chero ejemplo3.m z cuyo contenido es function dy = ejemplo3(t,y) dy = zeros(2, 1); %vector columna dy(1) = y(2); dy(2) = 3 * y(2) * t + 5 * y(1) - 2 * t; y luego resolvemos
[T2, Y2] = ode23(@ejemplo3, [0 1], [-1 2])

12

se observa que Y2 es ahora una matriz, la primera columna corresponde a los valores de la solucin y(t), y la segunda a su derivada y (t). o Tambin la grca, obtenida por ejemplo con la orden e a ode23(@ejemplo3, [0 1], [-1 2], odeset(OutputFcn, odeplot)) muestra los valores de y y de su primera derivada, y . Ejercicio 12 Un cierto sistema resonante de muelles sobre el que se ejerce una fuerza externa peridica se modela mediante la ecuacin o o x (t) + 25x(t) = 8 sen(5t), x(0) = 0, x (0) = 0

Resolver la ecuacin en [ 0, 2 ]. Representar la solucin grcamente. o o a Ejercicio 13 El modelo matemtico de un cierto circuito elctrico RCL a e (Resistencia, Condensador e Inductancia) es: Q (t) + 20 Q (t) + 125 Q(t) = 9 sen(5t), Q(0) = 0, Q (0) = 0

Resolver la ecuacin en el intervalo [ 0, 2 ]. Representar la solucin grcao o a mente. Ejercicio 14 Calcular en [ 0, 5 ] la solucin de o 2 x (t) 5 x (t) 3 x(t) = 45 e2t , Representar la solucin grcamente. o a x(0) = 2, x (0) = 1

13

Вам также может понравиться