Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Pract 03 PDF
Pract 03 PDF
Facultad de Biologa
Universidad de Oviedo
Curso 2004-2005
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)
1.1.
Ejemplo
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) =
1.2.
Ejemplo
(C1 R)
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
1.4.
Ejercicio
1.5.
Ejercicio
1.6.
u0
= (a b u)u,
u(0) = u0 .
t 0,
u0
= (a b u)u,
u(t0 ) = u0 .
t t0 ,
Ejercicio
1.7.
Ejercicio
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 =
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-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
v(0) = 0,05.
1.10.
Ejercicio
du
= 3 u u v,
dt
dv
= v + 2 u v
dt
con las condiciones iniciales u(0) = 1 y v(0) = 2.
1.11.
Ejercicio
du
= 3 u 0,4 u2 u v,
dt
dv
=
v
+ 2uv
dt
con las condiciones iniciales u(0) = 1 y v(0) = 2.
1
4
e2t ) C1 + ( 14 e2t +
1
4
et ) C1 + ( 34 et
3
4
3
4
et ) C 2 ,
e2t ) C2 .
2.
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.
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
t [0, 10],
f.m
t = [ 0
2.2.
0.1005
0.2010
0.3014
...
...
9.7010
9.8505 10.0000]
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
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
2.4.
Ejercicio