Post on 22-Sep-2015
description
Solucin de Ecuaciones diferenciales ordinariasen matlab
JANETH ALPALA
UNIVERSIDAD DE NARIO
Licenciatura en MatemticasElectiva II
7 de abril de 2015
ELECTIVA II UNIVERSIDAD DE NARIO 1 / 20
Bsqueda de soluciones explcitasMtodos Numricos
BibliografaReferencias
Ecuaciones de primer ordenEcuaciones de Orden SuperiorSistemas
Tabla de contenido
1 Bsqueda de soluciones explcitasEcuaciones de primer ordenEcuaciones de Orden SuperiorSistemas
2 Mtodos NumricosMtodo de Euler
3 Bibliografa
ELECTIVA II UNIVERSIDAD DE NARIO 2 / 20
Bsqueda de soluciones explcitasMtodos Numricos
BibliografaReferencias
Ecuaciones de primer ordenEcuaciones de Orden SuperiorSistemas
Con la funcin dsolve, es decir S = dsolve(eqn) podemos resuel-ver la Ecuacin Diferencial Ordinaria eqn. Para esto se debe crear unafuncin simblica, por ejemplo y(x) y utilizamos el operador == paracrear una ecuacin, donde la funcin diff indica la diferenciacin.Supongamos, por ejemplo, que queremos resolver la ecuacin diferen-cial de primer orden
dydx
= xy (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)
ELECTIVA II UNIVERSIDAD DE NARIO 3 / 20
Bsqueda de soluciones explcitasMtodos Numricos
BibliografaReferencias
Ecuaciones de primer ordenEcuaciones de Orden SuperiorSistemas
Se puede tambin representar eqn como una cadena, utilizando laletra D para indicar la diferenciacin. Por lo tanto, Dy significa dy/dt.Por defecto, dsolve asume que la variable independiente es t, por loque x debe especificarse de forma explcita como la variableindependiente, por ejemplo
dydx
= y+ 1 (2)
>> y= dsolve(Dy = y + 1,x)y =C2*exp(x) - 1
ELECTIVA II UNIVERSIDAD DE NARIO 4 / 20
Bsqueda de soluciones explcitasMtodos Numricos
BibliografaReferencias
Ecuaciones de primer ordenEcuaciones de Orden SuperiorSistemas
Alternativamente, si vamos a utilizar la misma ecuacin en variasocasiones, 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*yeqn1 =Dy=x*y
>> y=dsolve(eqn1,y(1)=1,x)y =
exp(-1/2)*exp(x^2/2)
ELECTIVA II UNIVERSIDAD DE NARIO 5 / 20
Bsqueda de soluciones explcitasMtodos Numricos
BibliografaReferencias
Ecuaciones de primer ordenEcuaciones de Orden SuperiorSistemas
La solucin se puede representar grficamente usando ezplot; porejemplo, en el intervalo [0,1]
>> ezplot(y,[0 1])
Figura: solucin de y = xy
ELECTIVA II UNIVERSIDAD DE NARIO 6 / 20
Bsqueda de soluciones explcitasMtodos Numricos
BibliografaReferencias
Ecuaciones de primer ordenEcuaciones de Orden SuperiorSistemas
Tabla de contenido
1 Bsqueda de soluciones explcitasEcuaciones de primer ordenEcuaciones de Orden SuperiorSistemas
2 Mtodos NumricosMtodo de Euler
3 Bibliografa
ELECTIVA II UNIVERSIDAD DE NARIO 7 / 20
Bsqueda de soluciones explcitasMtodos Numricos
BibliografaReferencias
Ecuaciones de primer ordenEcuaciones de Orden SuperiorSistemas
Supongamos que queremos resolver y graficar la solucin de la ecua-cin de segundo orden
4y + 4y + 17y = 0; y(0) = 1, y(0) = 2. (3)La letra D seguida de un dgito indica repetir diferenciacin. Cualquiercarcter inmediatamente despus de un operador de diferenciacin esuna 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)
ELECTIVA II UNIVERSIDAD DE NARIO 8 / 20
Bsqueda de soluciones explcitasMtodos Numricos
BibliografaReferencias
Ecuaciones de primer ordenEcuaciones de Orden SuperiorSistemas
es decir, la solucin es y = ex/2( 34sen2x cos2x) La solucin sepuede representar grficamente
>> ezplot(y,[-3 3])
Figura: Curva solucin del PVI
En la Figura vemos que la solucin es oscilatoria.ELECTIVA II UNIVERSIDAD DE NARIO 9 / 20
Bsqueda de soluciones explcitasMtodos Numricos
BibliografaReferencias
Ecuaciones de primer ordenEcuaciones de Orden SuperiorSistemas
Tabla de contenido
1 Bsqueda de soluciones explcitasEcuaciones de primer ordenEcuaciones de Orden SuperiorSistemas
2 Mtodos NumricosMtodo de Euler
3 Bibliografa
ELECTIVA II UNIVERSIDAD DE NARIO 10 / 20
Bsqueda de soluciones explcitasMtodos Numricos
BibliografaReferencias
Ecuaciones de primer ordenEcuaciones de Orden SuperiorSistemas
Es posible resolver sistemas de ecuaciones diferenciales, con o sin con-diciones iniciales. Por ejemplo, para resolver el sistema
x(t) = x(t) + 2y(t) z(t) (4)y(t) = x(t) + z(t)z(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))/4y =
(C16*exp(t))/2 + (C14*exp(2*t))/4 + (C15*exp(3*t))/4z =C16*exp(t) + C14*exp(2*t) + C15*exp(3*t)
ELECTIVA II UNIVERSIDAD DE NARIO 11 / 20
Bsqueda de soluciones explcitasMtodos Numricos
BibliografaReferencias
Ecuaciones de primer ordenEcuaciones de Orden SuperiorSistemas
Para resolver un problema de valor inicial, simplemente definimos unconjunto de valores iniciales y los agregamos al final del comandodsolve . 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))/2y =
(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)
ELECTIVA II UNIVERSIDAD DE NARIO 12 / 20
Bsqueda de soluciones explcitasMtodos Numricos
BibliografaReferencias
Ecuaciones de primer ordenEcuaciones de Orden SuperiorSistemas
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
ELECTIVA II UNIVERSIDAD DE NARIO 13 / 20
Bsqueda de soluciones explcitasMtodos Numricos
BibliografaReferencias
Mtodo de Euler
Tabla de contenido
1 Bsqueda de soluciones explcitasEcuaciones de primer ordenEcuaciones de Orden SuperiorSistemas
2 Mtodos NumricosMtodo de Euler
3 Bibliografa
ELECTIVA II UNIVERSIDAD DE NARIO 14 / 20
Bsqueda de soluciones explcitasMtodos Numricos
BibliografaReferencias
Mtodo de Euler
Ejemplo. Utilice el mtodo de Euler con n = 10 para resolver laecuacin diferencial
dydx
= sen(xy); y(0) = pi (5)
en el intervalo [0, 1]Vamos a llevar a cabo las primeras iteraciones en detalle, y luegoimplementaremos un archivo en MATLAB para llevarlo a cabo ensu totalidad. En primer lugar, el valor inicial y(0) = pi, obtenien-do x0 = 0 y y0 = pi.Si la particin se compone de subintervalos igualmente espacia-dos, entonces, x1 = dx = 1/10 = 0.1y obtenemos
y1 = y0 + sen(x0y0)dx = pi + sen(0)0.1 = pi
ELECTIVA II UNIVERSIDAD DE NARIO 15 / 20
Bsqueda de soluciones explcitasMtodos Numricos
BibliografaReferencias
Mtodo de Euler
Ejemplo. Utilice el mtodo de Euler con n = 10 para resolver laecuacin diferencial
dydx
= sen(xy); y(0) = pi (5)
en el intervalo [0, 1]Vamos a llevar a cabo las primeras iteraciones en detalle, y luegoimplementaremos un archivo en MATLAB para llevarlo a cabo ensu totalidad. En primer lugar, el valor inicial y(0) = pi, obtenien-do x0 = 0 y y0 = pi.Si la particin se compone de subintervalos igualmente espacia-dos, entonces, x1 = dx = 1/10 = 0.1y obtenemos
y1 = y0 + sen(x0y0)dx = pi + sen(0)0.1 = pi
ELECTIVA II UNIVERSIDAD DE NARIO 15 / 20
Bsqueda de soluciones explcitasMtodos Numricos
BibliografaReferencias
Mtodo de Euler
Ahora tenemos el punto (x1, y1) = (0.1,pi), y podemos usar esto enla ecuacin para calcular
y2 = y1 + sen(x1y1)dx = pi + sen(.1pi)(.1) = 3.1725
Ahora tenemos (x2, y2) = (.2, 3.1725), y podemos usar esto paracalcular
y3 = y2 + sen(x2y2)dx = 3.1725+ sen(.2(3.1725))(.1) = 3.2318.
ELECTIVA II UNIVERSIDAD DE NARIO 16 / 20
Bsqueda de soluciones explcitasMtodos Numricos
BibliografaReferencias
Mtodo de Euler
De manera ms general, podemos utilizar la funcin en Matlabeuler.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 espaciadosdx = (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;
endxvalores = x;yvalores = y;
ELECTIVA II UNIVERSIDAD DE NARIO 17 / 20
Bsqueda de soluciones explcitasMtodos Numricos
BibliografaReferencias
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.1000 0.2000 0.3000 0.4000 0.50000.6000 0.7000 0.8000 0.9000 1.0000
y =3.1416 3.1416 3.1725 3.2318 3.31423.4112 3.5103 3.5963 3.6548 3.6764 3.6598
ELECTIVA II UNIVERSIDAD DE NARIO 18 / 20
Bsqueda de soluciones explcitasMtodos Numricos
BibliografaReferencias
Mtodo de Euler
De manera ms general, podemos utilizar la funcin en Matlabeuler.m>>plot(x,y)>>[x,y]=euler(f,0,1,pi,10);>>plot(x,y,b+:)
Figura: aproximaciones con dx=0.1
ELECTIVA II UNIVERSIDAD DE NARIO 19 / 20
Bsqueda de soluciones explcitasMtodos Numricos
BibliografaReferencias
Referencias
P. Howard: Solving ODE in MATLAB 2009http://www.mathworks.com/help/symbolic/dsolve.html
ELECTIVA II UNIVERSIDAD DE NARIO 20 / 20
TalkBsqueda de soluciones explcitasEcuaciones de primer ordenEcuaciones de Orden SuperiorSistemas
Mtodos NumricosMtodo de Euler
Bibliografa