Métodos Matemáticos E.T.S. Minas Tema 9: Sistemas de ecuaciones diferenciales lineales Practica 2 Prof: Francisco Palacios EPSEM-UPC Curso 2007/2008 Versión 1.2 Diciembre 2007 Resolución de algunos sistemas de EDOs lineales. Ejercicio 1 > restart; > edo1:=diff(x(t),t)=x+2*y; edo2:=diff(y(t),t)=2*x+y; ∂ edo1 := ∂t edo2 := ∂t ∂ x( t ) = x + 2 y y( t ) = 2 x + y > s:=dsolve({edo1,edo2},{x(t),y(t)}); s := { x( t ) = 1 _C1 e( −t ) + 1 1 _C1 e( 3 t ) + _C2 e( 3 t ) − 1 _C2 e( −t ), y( t ) = 1 _C1 e( 3 t ) − 2 2 2 2 2 > sp:=dsolve({edo1,edo2,x(0)=1,y(0)=2},{x(t),y(t)}); sp := { y( t ) = 3 2 1 e( 3 t ) + 2 e( −t ), x( t ) = − 1 2 e( −t ) + 3 2 1 2 _C1 e( −t ) + 1 2 _C2 e( −t ) + 1 2 _C2 e( 3 t ) } e( 3 t ) } > with(linalg): Warning, new definition for norm Warning, new definition for trace > a:=matrix(2,2,[1,2,2,1]); ⎡1 a := ⎢ ⎣2 2⎤ ⎥ 1⎦ > p:=charpoly(a,lambda); p := λ − 2 λ − 3 2 > solve(p,lambda); -1, 3 > eigenvalues(a); -1, 3 > eigenvects(a); [ 3, 1, { [ 1, 1 ] } ], [ -1, 1, { [ -1, 1 ] } ] Ejercicio 5 > restart; > edo1:=diff(x(t),t)=-4*x+y+z; ∂ x( t ) = −4 x + y + z edo1 := ∂t edo2 := ∂t > edo2:=diff(y(t),t)=x+5*y-z; ∂ y( t ) = x + 5 y − z > edo3:=diff(z(t),t)=y-3*z; ∂ z( t ) = y − 3 z ∂t > s:=dsolve({edo1,edo2,edo3},{x(t),y(t),z(t)}); edo3 := s := { y( t ) = e( 5 t ) _C1 − z( t ) = 1 8 1 9 e( 5 t ) _C1 − _C2 e( 5 t ) + 1 8 1 9 _C1 e( −3 t ) − _C2 e( −4 t ) − 1 9 1 9 _C2 e( −4 t ) − _C3 e( −4 t ) + 1 72 1 9 _C3 e( 5 t ), _C2 e( 5 t ) + Page 1 9 8 _C2 e( −3 t ) + 1 72 _C3 e( 5 t ) − 1 8 _C3 e( −3 t ) + 1 9 _C3 e( −4 t ), x( t ) = 1 e( 5 t ) _C1 − 1 _C1 e( −3 t ) + 9 10 _C2 e( −3 t ) − _C2 e( −4 t ) − 1 _C2 e( 5 t ) + 10 _C3 e( −4 t ) + 1 8 8 8 9 72 9 72 > s1:=dsolve({edo1,edo2,edo3,x(0)=1,y(0)=0,z(0)=1},{x(t),y(t),z(t)}); _C3 e( 5 t ) − s1 := { y( t ) = 0, z( t ) = e( −3 t ), x( t ) = e( −3 t ) } Ejercicio 7 > edo1:=diff(x(t),t)=x-2*y+2*z; edo2:=diff(y(t),t)=-2*x+y-2*z; edo3:=diff(z(t),t)=2*x-2*y+z; ∂ edo1 := edo2 := ∂t ∂ ∂t x( t ) = x − 2 y + 2 z y( t ) = −2 x + y − 2 z ∂ z( t ) = 2 x − 2 y + z ∂t > sol:=dsolve({edo1,edo2,edo3,x(0)=1,y(0)=0,z(0)=0},{x(t),y(t),z(t)}); edo3 := sol := { z( t ) = 1 e( 5 t ) − 1 e( −t ), x( t ) = 2 e( −t ) + 1 e( 5 t ), y( t ) = − 3 3 3 3 Asignamos los nombres x(t),y(t),z(t) a las expresiones que contien las soluciones > assign(sol); > x(t); 2 3 e( −t ) + 1 1 3 e( 5 t ) + 1 3 e( −t ) } e( 5 t ) 3 > y(t); − 1 3 e( 5 t ) + 1 3 e( −t ) > z(t); 1 1 e( 5 t ) − e( −t ) 3 3 Representación conjunta de las componentes del vector solución en el intervalo [0,0.7] > plot([x(t),y(t),z(t)],t=0..0.7,color=[red,blue,black]); 10 5 0 0.1 0.2 0.3 t 0.4 0.5 0.6 0.7 -5 -10 Definición de una función vectorial que permite calcular el valor de la solución para distintos valores de t > F:=unapply([x(t),y(t),z(t)],t); 1 1 1 1 1 ⎡2 ⎤ F := t → ⎢⎢ e( −t ) + e( 5 t ), − e( 5 t ) + e( −t ), e( 5 t ) − e( −t ) ⎥⎥ 3 3 3 3 3 ⎣3 ⎦ Cálculo del valor para t=0.5 > F(0.5); [ 4.465185093, -3.858654434, 3.858654434 ] Resolución numérica Es necesario limpiar x(t), y(t) , z(t) > x(t):='x(t)';y(t):='y(t)';z(t):='z(t)'; Page 2 1 8 _C3 e( −3 t ) } edo1:=diff(x(t),t)=x-2*y+2*z; edo2:=diff(y(t),t)=-2*x+y-2*z; edo3:=diff(z(t),t)=2*x-2*y+z; > solnum:=dsolve({edo1,edo2,edo3,x(0)=1,y(0)=0,z(0)=0},{x(t),y(t),z(t)},type=numeric); x( t ) := x( t ) y( t ) := y( t ) z( t ) := z( t ) edo1 := edo2 := ∂ ∂t ∂ ∂t edo3 := x( t ) = x − 2 y + 2 z y( t ) = −2 x + y − 2 z ∂ ∂t z( t ) = 2 x − 2 y + z solnum := proc(rkf45_x) ... end > solnum(0.5); [ t = .5, y( t ) = -3.858654355830112, z( t ) = 3.858654355830112, x( t ) = 4.465185015541929 ] Obtención de valores y vectores propios con linalg > a:=matrix(3,3,[1,-2,2,-2,1,-2,2,-2,1]); ⎡1 ⎢ a := ⎢-2 ⎢ ⎣2 -2 1 -2 2⎤ ⎥ -2⎥ ⎥ 1⎦ > with(linalg): Warning, new definition for norm Warning, new definition for trace > p:=charpoly(a,lambda); p := λ − 3 λ − 9 λ − 5 3 2 > factor(p); ( λ − 5 ) ( λ + 1 )2 > solve(p,lambda); 5, -1, -1 > eigenvals(a); 5, -1, -1 > eigenvects(a); [ -1, 2, { [ 1, 1, 0 ], [ -1, 0, 1 ] } ], [ 5, 1, { [ 1, -1, 1 ] } ] Problema 11 > restart; > edo1:=diff(x(t),t)=2*y+exp(t); edo1 := ∂ ∂t x( t ) = 2 y + et > edo2:=diff(y(t),t)=-x+3*y-exp(t); ∂ y( t ) = −x + 3 y − et ∂t > sol:=dsolve({edo1,edo2,x(0)=1,y(0)=1},{x(t),y(t)}); edo2 := sol := { x( t ) = −2 e( 2 t ) + 4 t et + 3 et, y( t ) = −2 e( 2 t ) + 3 et + 2 t et } > assign(sol); > plot([x(t),y(t)],t=0..1.8,color=[red,blue]); Page 3 5 0.2 0.4 0.6 0.8 t 1 1.2 1.4 1.6 1.8 0 -5 -10 -15 -20 -25 -30 valor de t donde se anula x(t) > tx0:=fsolve(x(t)=0,t=0..2); tx0 := 1.507329784 valor de t donde se anula y(t) > ty0:=fsolve(y(t)=0,t=0..1); ty0 := .8576766739 A continuación definimos una función vectorial que permite calcular el vector solución para distintos valores de t > F:=unapply([x(t),y(t)],t); F := t → [ −2 e( 2 t ) + 4 t et + 3 et, −2 e( 2 t ) + 3 et + 2 t et ] > F(tx0); [ 0, -13.61016166 ] > F(ty0); [ 4.044248574, -.2 10-8 ] > Page 4