Sistemas de ecuaciones diferenciales lineales Practica 2

Anuncio
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
Descargar