Sie sind auf Seite 1von 5

Modelado matemtico de los sistemas ecolgicos Facultad de Biologa

Universidad de Oviedo Curso 2004-2005

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)

Prctica 3: Resolucin de ecuaciones diferenciales ordinarias.

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

Calcula la solucin general de la ecuacin logstica u = (a b u)u

1.5.

Ejercicio

Calcula la solucin del problema u = (a b u)u, u(0) = u0 . t 0,

1.6.

Ejercicio

Calcula la solucin del problema u = (a b u)u, u(t0 ) = u0 . t t0 ,

1.7.

Ejercicio

Calcula la solucin del problema u = (0, 7 0, 01 u)u, u(0) = u0 . t 0,

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

c 2004 Pablo Prez

Prctica 3: Resolucin de ecuaciones diferenciales ordinarias.

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.

Representa las soluciones u y v sobre una misma grca.

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

Prctica 3: Resolucin de ecuaciones diferenciales ordinarias.

2.

Resolucin numrica de ecuaciones diferenciales ordinarias

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.

[t,u] = ode15s(FUN,[TI TF],uI)

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

Prctica 3: Resolucin de ecuaciones diferenciales ordinarias.

t = [ 0

0.1005

0.2010

0.3014

... ...

9.7010

9.8505 10.0000]

u = [20.0000 21.0197 22.0684 23.1448

69.8038 69.8232 69.8408]

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.

c 2004 Pablo Prez

Das könnte Ihnen auch gefallen