Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Prctica 3: Resolucin de ecuaciones diferenciales ordinarias. 1. Resolucin exacta de ecuaciones diferenciales ordinarias
Para resolver de forma exacta una o varias ecuaciones diferenciales, Matlab dispone de la orden dsolve. Por defecto, la variable independiente es t, pero se puede usar cualquier otra variable si se incluye como ltimo argumento: dsolve(ec1,...,ecn) resuelve el sistema diferencial de ecuaciones y condiciones iniciales {ec1,...,ecn}
dsolve(ec1,...,ecn,var) resuelve el sistema diferencial de ecuaciones y condiciones iniciales {ec1,...,ecn}, y usa var como variable independiente La letra D se utiliza para representar la derivacin con respecto a la variable independiente, es decir, u se escribe Du; las derivadas orden superior u , u , . . . se escriben D2u, D3u, . . . cuando se resuelve un sistema de ecuaciones diferenciales, Matlab proporciona las funciones solucin en orden lxico-grco.
1.1.
Ejemplo
Para resolver el problema de valores iniciales u = basta escribir >> u = dsolve(Du = u/2,u(0) = 1/4) Se obtiene u = 1/4*exp(1/2*t) 1 t/2 e 4 La solucin se puede representar grcamente usando ezplot; por ejemplo, en el intervalo [0,3]. u(t) = >> ezplot(u,[0 3]) es decir, la solucin es 1 u, 2 u(0) = 1 , 4
1.2.
Ejemplo
Es posible obtener la solucin general de una ecuacin diferencial: >> u = dsolve(Du=u/2) u = C1*exp(1/2*t) Esto signica que la solucin de la ecuacin diferencial u = u/2 es u(t) = C1 et/2 , 1 (C1 R)
1.3.
Ejemplo
La ecuacin diferencial, o la condicin inicial, pueden contener parmetros. Por ejemplo, si se desea resolver el problema u = r u, t 0, u(0) = u0 . basta escrbir >> u = dsolve(Du = r*u,u(0) = u0) y se obtiene u = u0*exp(r*t)
1.4.
Ejercicio
1.5.
Ejercicio
1.6.
Ejercicio
1.7.
Ejercicio
para los siguientes valores de u0 : 10, 20, 50, 60, 70, 80 y 100. Representa todas las soluciones obtenidas en una misma grca, para t [0, 10].
1.8.
Ejemplo
Es posible resolver sistemas de ecuaciones diferenciales, con o sin condiciones iniciales. Por ejemplo, para resolver el sistema 3 1 u + v, u = 4 4 v = 9 5 u v, 4 4
es conveniente seguir el procedimiento siguiente. Primero resolvemos el sistema, pero guardamos la solucin en una variable auxiliar s: >> s = dsolve(Du = 1/4*u + 3/4*v,Dv = 9/4*u - 5/4*v,t) s = u: [1x1 sym] v: [1x1 sym] La respuesta indica que se ha obtenido una solucin guardada en s que consta de dos componentes: u y v (obsrvese el orden lxico-grco). Para conocer cmo es cada componente, basta hacer >> u = s.u u = 1/4*C1*exp(t)-1/4*C1*exp(-2*t)+1/4*C2*exp(-2*t)+3/4*C2*exp(t) >> v = s.v v = 3/4*C1*exp(-2*t)+1/4*C1*exp(t)+3/4*C2*exp(t)-3/4*C2*exp(-2*t) Esto quiere decir que la solucin general del sistema es u(t) = v(t) =
1 4 3 4
C 1 et
1 4
C1 e2t +
1 4
1 4 3 4
C2 e2t + C 2 et
3 4
3 4
C 2 et = ( 1 et 4
1 4
e2t ) C1 + ( 1 e2t + 4
1 4
3 4
et ) C 2 ,
C1 e2t +
C 1 et +
C2 e2t = ( 3 e2t + 4
et ) C 1 + ( 3 et 4
3 4
e2t ) C2 .
1.9.
Ejemplo
Resuelve el sistema anterior con condiciones iniciales u(0) = 0,2 , v(0) = 0,05.
1.10.
Ejercicio
Resuelve el siguiente problema de tipo depredador-presa du = 3 u u v, dt dv = v + 2 u v dt con las condiciones iniciales u(0) = 1 y v(0) = 2. Representa las soluciones u y v sobre una misma grca.
1.11.
Ejercicio
Resuelve el siguiente problema de tipo depredador-presa du = 3 u 0,4 u2 u v, dt dv = v + 2uv dt con las condiciones iniciales u(0) = 1 y v(0) = 2. Representa las soluciones u y v sobre una misma grca.
c 2004 Pablo Prez
2.
Cuando se resuelve de manera exacta un problema de valor inicial del tipo u = f (t, u), u(TI ) = uI , t [TI , TF ],
se obtiene como solucin una funcin u() que puede ser evaluada en cualquier instante t del intervalo [TI , TF ]. En cambio, cuando el problema se resuelve mediante un mtodo numrico, slo es posible obtener una coleccin nita {u1 , u2 , . . . , uN } de aproximaciones de la solucin en ciertos instantes t1 < t2 < . . . , tN , con TI = t1 y TF = tN , es decir, un u(tn ), n = 1, 2, . . . , N. A grandes rasgos, se puede decir que el error en = u(tn ) un (la diferencia entre el valor exacto, que es desconocido, en el instante tn y el valor aproximado, que es el conocido) depende en gran medida del mtodo numrico empleado. Matlab dispone de una amplia variedad de mtodos numricos para resolver problemas de valor inicial. Destacamos dos de ellos: [t,u] = ode45(FUN,[TI TF],uI) resuelve numricamente el sistema diferencial de ecuaciones u = f(t,u) en el intervalo [TI TF], con la condicin inicial u(TI)=uI. FUN es una funcin de Matlab tal que FUN(t,u) es un vector columna con el valor de f(t,u). El mtodo numrico es el par RK5(4) de Dormand y Prince. Anlogo al anterior, la diferencia est en el tipo de mtodo numrico empleado.
En ambos casos, se obtiene como respuesta un vector columna t que contiene los instantes en los que se ha calculado la solucin aproximada, y el vector u o una matriz, en el caso de un sistema que contiene tales aproximaciones. Los instantes contenidos en t son elegidos automticamente por el mtodo numrico; si se desean instantes predeterminados, basta reemplazar el argumento [TI TF] por [T1 T2 ... TN]. La solucin aproximada se puede representar grcamente con la orden plot.
2.1.
Ejemplo
Para resolver numricamente el poblema u = (0, 7 0, 01 u)u, u(0) = 20. basta escribir el archivo de funcin function du = f(t,u) du = (0.7 - 0.01 * u) * u ; y luego ejecutar la orden >> [t,u] = ode45(f,[0 10],20); Como respuesta, se obtienen dos vectores columna t y u cuyos comienzo y n son
c 2004 Pablo Prez
t [0, 10],
f.m
t = [ 0
0.1005
0.2010
0.3014
... ...
9.7010
9.8505 10.0000]
2.2.
Ejemplo
f.m
Para resolver numricamente el problema del Ejercicio 1.9 en el intervalo [0, 1], la funcin f puede ser function du = f(t,u) du1 = 1/4 * u(1) + 3/4 * u(2); du2 = 9/4 * u(1) - 5/4 * u(2); du = [du1;du2]; y luego bastar ejecutar la orden >> [t,u] = ode45(f,[0 1],[0.2; 0.05]); La variable de salida u es ahora una matriz de dos columnas: en la primera estn los valores aproximados de u1 (), y en la segunda columna estn los de u2 (): t 0 0.0065 0.0130 . . . 0.9630 0.9815 1.0000 u 0.2000 0.0500 0.2006 0.0525 0.2012 0.0550 . . . . . . 0.4311 0.4389 0.4468 0.4093 0.4178 0.4265
2.3.
Ejercicio
Resuelve numricamente el problema del Ejercicio 1.10, en el intervalo [0, 20]. Representa las soluciones sobre una misma grca.
2.4.
Ejercicio
Resuelve numricamente el problema del Ejercicio 1.11, en el intervalo [0, 20]. Representa las soluciones sobre una misma grca.