Está en la página 1de 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 0 se
escribe Du; las derivadas orden superior u00 , u000 , . . . se escriben D2u, D3u, . . .
cuando se resuelve un sistema de ecuaciones diferenciales, Matlab proporciona las funciones solucin en
orden lxico-grfico.

1.1.

Ejemplo

Para resolver el problema de valores iniciales


u0 =

1
u,
2

u(0) =

1
,
4

basta escribir
>> u = dsolve(Du = u/2,u(0) = 1/4)
Se obtiene
u =
1/4*exp(1/2*t)
es decir, la solucin es

1 t/2
e
4
La solucin se puede representar grficamente usando ezplot; por ejemplo, en el intervalo [0,3].
u(t) =

>> ezplot(u,[0 3])

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 significa que la solucin de la ecuacin diferencial u0 = 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
0
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


u0 = (a b u)u

1.5.

Ejercicio

Calcula la solucin del problema

1.6.

u0
= (a b u)u,
u(0) = u0 .

t 0,

u0
= (a b u)u,
u(t0 ) = u0 .

t t0 ,

Ejercicio

Calcula la solucin del problema

1.7.

Ejercicio

Calcula la solucin del problema

u0
= (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 grfica, 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,
u0 =
4
4
v0 =

c 2004 Pablo Prez

9
5
u v,
4
4

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-grfico). 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) =

1
4

C 1 et

v(t) =

3
4

C1 e2t +

1.9.

1
4

C1 e2t +
1
4

C 1 et +

1
4

C2 e2t +

3
4

C 2 et

3
4

3
4

C2 et = ( 14 et

C2 e2t = ( 34 e2t +

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 grfica.

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 grfica.

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 grfica.


c 2004 Pablo Prez

1
4

e2t ) C1 + ( 14 e2t +
1
4

et ) C1 + ( 34 et

3
4

3
4

et ) C 2 ,

e2t ) C2 .

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


0
u
= f (t, u),
t [TI , TF ],
u(TI ) = uI ,
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 finita {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.

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

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 grficamente con la orden plot.

2.1.

Ejemplo

Para resolver numricamente el poblema


0
u
= (0, 7 0, 01 u)u,
u(0) = 20.

t [0, 10],

basta escribir el archivo de funcin


function du = f(t,u)
du = (0.7 - 0.01 * u) * u ;

f.m

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 fin son
c 2004 Pablo Prez

Prctica 3: Resolucin de ecuaciones diferenciales ordinarias.

t = [ 0

2.2.

0.1005

0.2010

0.3014

...

u = [20.0000 21.0197 22.0684 23.1448

...

9.7010

9.8505 10.0000]

69.8038 69.8232 69.8408]

Ejemplo

Para resolver numricamente el problema del Ejercicio 1.9 en el intervalo [0, 1], la funcin f puede ser
f.m

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 ():

2.3.

t
0
0.0065
0.0130
..
.

0.2000 0.0500
0.2006 0.0525
0.2012 0.0550
..
..
.
.

0.9630
0.9815
1.0000

0.4311
0.4389
0.4468

0.4093
0.4178
0.4265

Ejercicio

Resuelve numricamente el problema del Ejercicio 1.10, en el intervalo [0, 20].


Representa las soluciones sobre una misma grfica.

2.4.

Ejercicio

Resuelve numricamente el problema del Ejercicio 1.11, en el intervalo [0, 20].


Representa las soluciones sobre una misma grfica.

c 2004 Pablo Prez

También podría gustarte