Sunteți pe pagina 1din 21

Solucin de Ecuaciones diferenciales ordinarias

en matlab
JANETH A LPALA
U NIVERSIDAD DE NARIO
Licenciatura en Matemticas
Electiva II

7 de abril de 2015

E LECTIVA II

U NIVERSIDAD DE NARIO

1 / 20

Bsqueda de soluciones explcitas


Mtodos Numricos
Bibliografa
Referencias

Ecuaciones de primer orden


Ecuaciones de Orden Superior
Sistemas

Tabla de contenido

Bsqueda de soluciones explcitas


Ecuaciones de primer orden
Ecuaciones de Orden Superior
Sistemas

Mtodos Numricos
Mtodo de Euler

Bibliografa

E LECTIVA II

U NIVERSIDAD DE NARIO

2 / 20

Bsqueda de soluciones explcitas


Mtodos Numricos
Bibliografa
Referencias

Ecuaciones de primer orden


Ecuaciones de Orden Superior
Sistemas

Con la funcin dsolve, es decir S = dsolve(eqn) podemos resuelver la Ecuacin Diferencial Ordinaria eqn. Para esto se debe crear una
funcin simblica, por ejemplo y(x) y utilizamos el operador == para
crear una ecuacin, donde la funcin diff indica la diferenciacin.
Supongamos, por ejemplo, que queremos resolver la ecuacin diferencial de primer orden
dy
= xy
dx

(1)

La entrada y salida para la solucin de este problema es la siguiente.


syms y(x); dsolve(diff(y) == x*y)
ans =
C1*exp(x^2/2)
E LECTIVA II

U NIVERSIDAD DE NARIO

3 / 20

Bsqueda de soluciones explcitas


Mtodos Numricos
Bibliografa
Referencias

Ecuaciones de primer orden


Ecuaciones de Orden Superior
Sistemas

Se puede tambin representar eqn como una cadena, utilizando la


letra D para indicar la diferenciacin. Por lo tanto, Dy significa dy/dt.
Por defecto, dsolve asume que la variable independiente es t, por lo
que x debe especificarse de forma explcita como la variable
independiente, por ejemplo
dy
= y+1
dx

(2)

>> y= dsolve(Dy = y + 1,x)


y =
C2*exp(x) - 1

E LECTIVA II

U NIVERSIDAD DE NARIO

4 / 20

Bsqueda de soluciones explcitas


Mtodos Numricos
Bibliografa
Referencias

Ecuaciones de primer orden


Ecuaciones de Orden Superior
Sistemas

Alternativamente, si vamos a utilizar la misma ecuacin en varias


ocasiones, es posible optar por definirla como una variable, digamos,
eqn1.
Y para resolver un problema de valor inicial, por ejemplo, la ecuacin
(1) con y (1) = 1, utilizamos
>> eqn1=Dy=x*y
eqn1 =
Dy=x*y
>> y=dsolve(eqn1,y(1)=1,x)
y =
exp(-1/2)*exp(x^2/2)
E LECTIVA II

U NIVERSIDAD DE NARIO

5 / 20

Bsqueda de soluciones explcitas


Mtodos Numricos
Bibliografa
Referencias

Ecuaciones de primer orden


Ecuaciones de Orden Superior
Sistemas

La solucin se puede representar grficamente usando ezplot; por


ejemplo, en el intervalo [0,1]
>> ezplot(y,[0 1])

Figura: solucin de y0 = xy
E LECTIVA II

U NIVERSIDAD DE NARIO

6 / 20

Bsqueda de soluciones explcitas


Mtodos Numricos
Bibliografa
Referencias

Ecuaciones de primer orden


Ecuaciones de Orden Superior
Sistemas

Tabla de contenido

Bsqueda de soluciones explcitas


Ecuaciones de primer orden
Ecuaciones de Orden Superior
Sistemas

Mtodos Numricos
Mtodo de Euler

Bibliografa

E LECTIVA II

U NIVERSIDAD DE NARIO

7 / 20

Bsqueda de soluciones explcitas


Mtodos Numricos
Bibliografa
Referencias

Ecuaciones de primer orden


Ecuaciones de Orden Superior
Sistemas

Supongamos que queremos resolver y graficar la solucin de la ecuacin de segundo orden


4y00 + 4y0 + 17y = 0;

y(0) = 1, y0 (0) = 2.

(3)

La letra D seguida de un dgito indica repetir diferenciacin. Cualquier


carcter inmediatamente despus de un operador de diferenciacin es
una variable dependiente.
>> eqn2=4*D2y+4*Dy+17*y=0;
>> y=dsolve(eqn2,Dy(0)=2,y(0)=-1,x)
y =
(3*sin(2*x)*exp(-x/2))/4 - cos(2*x)*exp(-x/2)
E LECTIVA II

U NIVERSIDAD DE NARIO

8 / 20

Bsqueda de soluciones explcitas


Mtodos Numricos
Bibliografa
Referencias

Ecuaciones de primer orden


Ecuaciones de Orden Superior
Sistemas

es decir, la solucin es y = ex/2 ( 43 sen2x cos2x) La solucin se


puede representar grficamente
>> ezplot(y,[-3 3])

Figura: Curva solucin del PVI


En la Figura vemos que la solucin es oscilatoria.
E LECTIVA II

U NIVERSIDAD DE NARIO

9 / 20

Bsqueda de soluciones explcitas


Mtodos Numricos
Bibliografa
Referencias

Ecuaciones de primer orden


Ecuaciones de Orden Superior
Sistemas

Tabla de contenido

Bsqueda de soluciones explcitas


Ecuaciones de primer orden
Ecuaciones de Orden Superior
Sistemas

Mtodos Numricos
Mtodo de Euler

Bibliografa

E LECTIVA II

U NIVERSIDAD DE NARIO

10 / 20

Bsqueda de soluciones explcitas


Mtodos Numricos
Bibliografa
Referencias

Ecuaciones de primer orden


Ecuaciones de Orden Superior
Sistemas

Es posible resolver sistemas de ecuaciones diferenciales, con o sin condiciones iniciales. Por ejemplo, para resolver el sistema
x0 (t ) = x(t ) + 2y(t ) z(t )

(4)

y (t ) = x (t ) + z(t )
z0 (t ) = 4x(t ) 4y(t ) + 5z(t ).

>> [x,y,z]=dsolve(Dx=x+2*y-z,Dy=x+z,
Dz=4*x-4*y+5*z)
x =
- (C16*exp(t))/2 - (C14*exp(2*t))/2 - (C15*exp(3*t))/4
y =
(C16*exp(t))/2 + (C14*exp(2*t))/4 + (C15*exp(3*t))/4
z =
C16*exp(t) + C14*exp(2*t) + C15*exp(3*t)
E LECTIVA II

U NIVERSIDAD DE NARIO

11 / 20

Bsqueda de soluciones explcitas


Mtodos Numricos
Bibliografa
Referencias

Ecuaciones de primer orden


Ecuaciones de Orden Superior
Sistemas

Para resolver un problema de valor inicial, simplemente definimos un


conjunto de valores iniciales y los agregamos al final del comando
dsolve . Supongamos que tenemos x (0) = 1, y (0) = 2, y z (0) = 3.
Tenemos, entonces,
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)
x =
6*exp(2*t) - (5*exp(3*t))/2 - (5*exp(t))/2
y =
(5*exp(3*t))/2 - 3*exp(2*t) + (5*exp(t))/2
z =
10*exp(3*t) - 12*exp(2*t) + 5*exp(t)
E LECTIVA II

U NIVERSIDAD DE NARIO

12 / 20

Bsqueda de soluciones explcitas


Mtodos Numricos
Bibliografa
Referencias

Ecuaciones de primer orden


Ecuaciones de Orden Superior
Sistemas

Finalmente, la grafica de esta solucin puede realizarse con


>> t=linspace(0,.5,25); xx=eval(vectorize(x));
yy=eval(vectorize(y));
zz=eval(vectorize(z)); plot(t, xx, t, yy, t, zz)
legend(x, y, z)

Figura: Curvas solucin del sistema 3


E LECTIVA II

U NIVERSIDAD DE NARIO

13 / 20

Bsqueda de soluciones explcitas


Mtodos Numricos
Bibliografa
Referencias

Mtodo de Euler

Tabla de contenido

Bsqueda de soluciones explcitas


Ecuaciones de primer orden
Ecuaciones de Orden Superior
Sistemas

Mtodos Numricos
Mtodo de Euler

Bibliografa

E LECTIVA II

U NIVERSIDAD DE NARIO

14 / 20

Bsqueda de soluciones explcitas


Mtodos Numricos
Bibliografa
Referencias

Mtodo de Euler

Ejemplo. Utilice el mtodo de Euler con n = 10 para resolver la


ecuacin diferencial
dy
= sen(xy); y(0) =
dx

(5)

en el intervalo [0, 1]
Vamos a llevar a cabo las primeras iteraciones en detalle, y luego
implementaremos un archivo en MATLAB para llevarlo a cabo en
su totalidad. En primer lugar, el valor inicial y(0) = , obteniendo x0 = 0 y y0 = .
Si la particin se compone de subintervalos igualmente espaciados, entonces, x1 = dx = 1/10 = 0.1
y obtenemos
y1 = y0 + sen(x0 y0 )dx = + sen(0)0.1 =
E LECTIVA II

U NIVERSIDAD DE NARIO

15 / 20

Bsqueda de soluciones explcitas


Mtodos Numricos
Bibliografa
Referencias

Mtodo de Euler

Ejemplo. Utilice el mtodo de Euler con n = 10 para resolver la


ecuacin diferencial
dy
= sen(xy); y(0) =
dx

(5)

en el intervalo [0, 1]
Vamos a llevar a cabo las primeras iteraciones en detalle, y luego
implementaremos un archivo en MATLAB para llevarlo a cabo en
su totalidad. En primer lugar, el valor inicial y(0) = , obteniendo x0 = 0 y y0 = .
Si la particin se compone de subintervalos igualmente espaciados, entonces, x1 = dx = 1/10 = 0.1
y obtenemos
y1 = y0 + sen(x0 y0 )dx = + sen(0)0.1 =
E LECTIVA II

U NIVERSIDAD DE NARIO

15 / 20

Bsqueda de soluciones explcitas


Mtodos Numricos
Bibliografa
Referencias

Mtodo de Euler

Ahora tenemos el punto (x1 , y1 ) = (0.1, ), y podemos usar esto en


la ecuacin para calcular
y2 = y1 + sen(x1 y1 )dx = + sen(.1pi)(.1) = 3.1725
Ahora tenemos (x2 , y2 ) = (.2, 3.1725), y podemos usar esto para
calcular
y3 = y2 + sen(x2 y2 )dx = 3.1725 + sen(.2(3.1725))(.1) = 3.2318.

E LECTIVA II

U NIVERSIDAD DE NARIO

16 / 20

Bsqueda de soluciones explcitas


Mtodos Numricos
Bibliografa
Referencias

Mtodo de Euler

De manera ms general, podemos utilizar la funcin en Matlab


euler.m
function [xvalores, yvalores] = euler(f,x0,xn,y0,n)
%EULER: MATLAB funcin que resuelve la
%ODE y=f, y(x0)=y0 on [x0,y0] usando una particin
%con n subintervalos igualmente espaciados
dx = (xn-x0)/n;
x(1) = x0;
y(1) = y0;
for k=1:n
x(k+1)=x(k) + dx;
y(k+1)= y(k) + f(x(k),y(k))*dx;
end
xvalores = x;
yvalores = y;

E LECTIVA II

U NIVERSIDAD DE NARIO

17 / 20

Bsqueda de soluciones explcitas


Mtodos Numricos
Bibliografa
Referencias

Mtodo de Euler

Podemos implementar este archivo con el siguiente cdigo,


>> f=inline(sin(x*y))
f =
Inline function:
f(x,y) = sin(x*y)
>> [x,y]=euler(f,0,1,pi,10)
x =
0
0.6000

0.1000
0.7000

0.2000
0.8000

0.3000
0.9000

0.4000
1.0000

y =
3.1416
3.4112

3.1416
3.5103

3.1725
3.5963

3.2318
3.6548

3.3142
3.6764

E LECTIVA II

U NIVERSIDAD DE NARIO

0.5000

3.6598
18 / 20

Bsqueda de soluciones explcitas


Mtodos Numricos
Bibliografa
Referencias

Mtodo de Euler

De manera ms general, podemos utilizar la funcin en Matlab


euler.m
>>plot(x,y)
>>[x,y]=euler(f,0,1,pi,10);
>>plot(x,y,b+:)

Figura: aproximaciones con dx=0.1


E LECTIVA II

U NIVERSIDAD DE NARIO

19 / 20

Bsqueda de soluciones explcitas


Mtodos Numricos
Bibliografa
Referencias

Referencias

P. Howard: Solving ODE in MATLAB 2009


http://www.mathworks.com/help/symbolic/dsolve.html

E LECTIVA II

U NIVERSIDAD DE NARIO

20 / 20

S-ar putea să vă placă și