Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Facultad de Ingeniera
Departamento de Ingeniera Elctrica
Matemtica Avanzada
Resolucin de ecuaciones
diferenciales utilizando Matlab
Por:
William Escudero
Introduccin
Matlab cuenta con variadas formas de representar sistemas
que cambian o evolucionan en el tiempo.
En el presente documento se presentan dos formas de
resolver ecuaciones diferenciales utilizando Matlab. Algunas
de ellas son:
Utilizando mtodos numricos. Para ello se utiliza los mtodos
ODE##.
Mediante la resolucin analtica de ecuaciones diferenciales. Para
ello se presenta la herramienta DSOLVE, incluida en Matlab.
Empleando funciones de transferencia. Un ejemplo de esto es
Simulink.
2
Mtodos ode##
Una ecuacin diferencial ordinaria (EDO) de primer orden es
una expresin que se puede escribir de la forma:
dy
y'
g ( x, y )
dx
Una solucin a una EDO de primer orden es una funcin
y=f(x) tal que f(x)=g(x,y)
La solucin de una ecuacin diferencial normalmente es una
familia de funciones, donde se requiere una condicin
inicial para determinar una solucin nica.
4
Mtodos ode##
Es preferible obtener la solucin analtica de una ecuacin
diferencial, pero muchas veces estas tienen soluciones
exactas complicadas, o en otros casos, simplemente no
poseen.
Para este tipo de casos se requiere de mtodos numricos
para resolver las ecuaciones diferenciales, siendo las
tcnicas numricas ms comunes el mtodo de Euler y los
mtodos de Runge-Kutta.
Matlab cuenta con funciones ODE## para calcular
soluciones numricas de ecuaciones diferenciales
ordinarias.
Mtodos ode##
Considerar la funcin dy f (t , y )
dt
y (t0 ) y0
Mtodos ode##
Se debe definir la ecuacin a resolver, lo cual se puede
hacer de la siguiente forma:
g = inline('funcion', 't', 'y')
funcion es la funcin dy f (t , y ) a resolver.
dt
Tipos de ode##
Matlab cuenta con distintos tipos de algoritmos numricos
para la resolucin de EDO.
Sentencia
Tipo de
mtodo
Tipo de
problema
Orden de exactitud
Mtodo
ode45
Explcito
No stiff
Medio
Runge-Kutta
ode23
Explcito
No stiff
Bajo
Runge-Kutta
ode113
Explcito
No stiff
Bajo a Alto
Adams
ode15s
Implcito
Stiff
Bajo a Alto
Back difference
formula (BDF)
ode23s
Implcito
Stiff
Bajo, a veces ms
estable que ode15s
Rosenbrock
ode23t
Implcito
Moderadamente Stiff
Bajo, a veces ms
estable que ode15s
Trapezoidal
ode23tb
Implcito
Stiff
Bajo, a veces ms
estable que ode15s
TR-BDF2
En Matlab escribimos:
[t, y] = ode45(inline('y*t', 't', 'y'), [1,3], 2)
Solucin real:
y (t) C e
t 2 /2
10
dy
2t y, en intervalo t [2, 2]
dt
y0 (2) 20
Soluciones particulares:
y1 (2) 10
y2 (2) 10
y3 (2) 20
figure(1)
hold on
axis([-2 2 -20 20])
grid on
plot(t0,y0);
plot(t1,y1);
plot(t2,y2);
plot(t3,y3);
12
13
a 1
b2
ecuacion1.m
%dx_dt = a*x + b;
Xo = 1; %condicion inicial
tspan = [0,5];
%intervalo
[t,x] = ode113(@funcion1, tspan, Xo);
%grafico
figure;
hold on; plot(t,x,'r:'); ylabel('x'); xlabel('t') 14
15
x(0) 8
y (0) 8
z (0) 27
16
plot(t,x(:,1));
plot(t,x(:,2));
plot(t,x(:,3));
plot(x(:,1),x(:,3));
18
19
x1 ax1 bx2
x2 cx1 dx2
x1 a b x1
x c d x
2
2
x1 1 1 x1
x 1 2 x
2
2
20
EcuacionMtz.m
%Ejemplo ecuacion de matricial
Xo = [1;1];
%condiciones inicial
tspan = [0,5]; %intervalo
[t,X] = ode45(@matricial,tspan,Xo);
%grafico
figure(1)
hold on
plot(t,X(:,1));plot(t,X(:,2),'r:')
legend('x1','x2');
ylabel('x');
xlabel('t')
21
22
Adicionalmente
Se pueden configurar opciones para las funciones ode##
(tolerancias de error relativo y absoluto, tamao de paso,
cantidad de puntos, etc).
Para ms informacin, revisar archivos de ayuda de los
diferentes mtodos:
help ode45
help ode 113
23
24
Mtodo dsolve
Aunque Matlab trabaja principalmente con mtodos
numricos, tambin puede resolver ecuaciones
diferenciales de forma simblica.
Para obtener la solucin general se aplica el comando:
1.
2.
dsolve('ecuacion')
dsolve('ecuacion','var')
Mtodo dsolve
Para obtener la solucin particular para una condicin en
dsolve('ecuacion','condicion inicial')
dsolve('ecuacion','condicion inicial','var')
26
Ejemplo 6: dsolve
Resolver la ecuacin diferencial:
Se escribe en Matlab:
dy
y
dt
y=dsolve('Dy=y')
y = C1*exp(t)
y=dsolve('Dy=y', 'x')
y = C2*exp(x)
27
Ejemplo 6: dsolve
Si se desea una solucin particular para la condicin inicial
dada:
dy
y ; y (0) 1
dx
Se escribe en Matlab:
y = exp(x)
28
x(t ) x(t ) 2 y (t ) z (t )
y(t ) x(t ) z (t )
z (t ) 4 x(t ) 4 y (t ) 5 z (t )
30
inits='x(0)=1,y(0)=2,z(0)=3'
[x,y,z]=dsolve('Dx=x+2*y-z','Dy=x+z','Dz=4*x-4*y+5*z',inits)
31
32
33
34
35
t=1:0.001:3;
yy=eval(vectorize(y));
plot(t, yy)
36