Академический Документы
Профессиональный Документы
Культура Документы
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.
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.
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
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
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.
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)
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
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
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
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