You are on page 1of 12

Matemtica Discreta y Algebra

Curso 2007-08
PRACTICA 7
TRANSFORMACIONES LINEALES
Y
CALCULO DE VALORES PROPIOS
Instrucciones y Objetivos
En esta practica se estudia el uso de Maple en problemas relacionados con las transIormaciones
lineales y el calculo de vectores y valores propios, culminando con una parte opcional que trata
sobre el calulo aproximado de valores propios, muy util en diIerentes situaciones practicas. El
objetivo principal de esta practica es conocer y emplear las instrucciones basicas de Maple que
estudiar transformaciones lineales y calcular sus vectores y valores prpios, aplicando los
conceptos vistos en teoria al estudio de sistemas dinamicos discretos y los metodos iteraqtivos
estudiados anteriormente.
Instrucciones
1. Lee con atencion el texto. Cuando aparezcan comandos o procedimientos de Maple
(lineas en rojo), intenta averiguar para que sirven (puedes emplear la ayuda de Maple) y
despues ejecutalos. Puedes ejecutarlos varias veces y cambiar en ellos lo que te parezca para
entenderlos mejor o mejorarlos.
2. Las seccion 1 contiene la inIormacion basica sobre el uso de vectores con Maple,
mientras que en las secciones 2 y 3 se aborda el tratamiento de transIormaciones lineales y
el calculo de valores propios respectivamente. En la ultima parte de la seccion 3 se incluye,
de Iorma opcional, un repaso de un metodo numerico para calcular los valores propios de
una matriz que puede ser util en el Iuturo por sus numerosas aplicaiones a problemas reales.
3. La seccion 4 recoge varios ejercicios tipo test sobre conceptos explicados a lo largo de
este documento y que deberian ser resueltos por el alumno/a sin problema, si se ha
comprendido el contenido de la practica.
Como ya hemos dicho en cada practica, Maple dispone de un conjunto de Iunciones especiIicas
para algebra lineal. En Maple, hay varios conjuntos de Iunciones especiIicas (denominados
paquetes) que deben cargarse aparte usando el comando with(). En este caso las Iunciones
propias de algebra lineal estan guardadas en el paquete linalg de Maple. Para cargar el paquete
procedemos como siempre con la instruccion:
> restart; with(linalg):
Warning, the protected names norm and trace have been redefined and
unprotected
Recordemos que es imprescincible cargar el paquete linalg para que las instrucciones sobre
clculo matricial y lgebra lineal funcionen. Ademas de los comandos que aqui vamos a
tratar, el paquete linalg contiene otros muchas Iunciones utiles en algebra lineal y dejamos a la
curiosidad del alumno/a el que investigue por su cuenta en la ayuda de linalg la potencia de este
paquete.
>
1. Uso de vectores en MAPLE
Para deIinir vectores maple dispone de la orden vector() que podemos emplear de las
siguientes Iormas:
> restart: with(linalg):
u:=vector([1,2,3,4]);
Warning, the protected names norm and trace have been redefined and
unprotected
: u | | , , , 1 2 3 4
La orden anterior sirve para deIinir un vector de R
4
cuyo nombre es u. Otra manera de emplear la
orden vector() es la siguiente
> v:=vector(5);
: v ( ) array , .. 1 5 | |
donde deIinimos un vector generico de R
5
y le damos el nombre v. Asi cuando usamos v, vemos
que es un vector generico de R
5
> evalm(v);
| | , , , , v
1
v
2
v
3
v
4
v
5
Otras maneras de deIinir vectres incluyen el deIinirlos directamente como una lista
> w1:=[1,2,3,4,5,6];
: w1 | | , , , , , 1 2 3 4 5 6
o incluso como una matriz Iila o columna
> w2:=matrix(1,3,[a,b,c]);
w3:=matrix(3,1,[d,e,f]);
: w2 | | a b c
: w3

(
(
(
(
d
e
f
Existen muchos comandos en Maple para realizar tareas relacionadas con los vectores y los
espacios vectoriales, pero con el animo de solo introducir los conceptos estrictamente
necesarios, vamos arepasar solo los conceptos mas imprescindibles, por lo que solo
comentaremos los comandos basis() y dotprod() (este ultimo lo emplearemos en la parte
opcional y en la siguiente practica).
El comando basis(v1,v2,....,vn]) extrae de v1,v2,...,vn} una base del espacio vectorial que
generan. Si se quiere obtener una base a partir de un sistema ordenado de vectores |v1,v2,...,vn|,
se puede aplicar el comando basis(v1,v2,....,vn]).
> B1:=basis({vector([1,1,1]),vector([1,1,0]),vector([2,2,1]),ve
ctor([1,0,0])});
: B1 } , , | | , , 1 1 1 | | , , 1 1 0 | | , , 1 0 0
> B2:=basis([vector([1,1,1]),vector([1,1,0]),vector([2,2,1]),ve
ctor([1,0,0])]);
: B2 | | , , | | , , 1 1 1 | | , , 1 1 0 | | , , 1 0 0
El comando dotproduct(v,w) obtiene el producto escalar de los vectores v y w del espacio
vectorial euclideo R
n
con el producto escalar usual v,w~, que (como veremos) se deIine como
la suma de los productos de las componentes de cada vector, es decir si v(v1,v2,...vn) y
w(w1,w2,..wn), entonces v,w~v1*w1v2*w2...vn*wn.
> v1:=vector([3,2,1]);v2:=vector([1,1,1]);
: v1 | | , , 3 2 1
: v2 | | , , 1 1 1
> dotprod(v1,v2);
6
Para estudiar otras propiedades de vectores (dependencia lineal, calculo de coordenadas respecto
a bases, etc) debemos recordar la reIormulacion de las mismas en terminos de matrices y aplicar
los conceptos vistos en las practicas anteriores (resolucion de sistemas...).
>
2. Transformaciones lineales
Si V y W son dos espacios vectoriales, una transformacin (o Iuncion) lineal entre V y W es
una Iuncion que respeta las estructuras de espacios vectoriales de V y W dadas por las
operaciones de suma y de producto por un escalar, es decir, una Iuncion I :V --~ W es lineal si
para todos vectores u,v de V y para todos escalares , de R se veriIica que
I(u v) I(u) I(v).
Tal y como vimos en el primer cuatrimestre, hay varias maneras de deIinir Iunciones en
Maple. La primera (y la mas sencilla) es deIinir directamente la imagen de un elemento
generico de V. Por ejemplo si tenemos F:R
3
--~R
2
, entonces se puede deIinir como
> F:=(v1,v2,v3)->[v1+v2+v3,-v1-v3];
: F ( ) , , v1 v2 v3 | | , + + v1 v2 v3 v1 v3
> F(1,2,3);
| | , 6 -4
El inconveniente de este tipo de deIiniciones es que los valores de entrada no es un vector sino
una secuencia, lo que puede dar algunos problemas al deIinir Iunciones de vectores. Para
evitar este problema se recomienda deIinir Iunciones vectoriales empleando el comando proc
, que es un poco mas complicada pero ue permite que los valores de entrada sean vectores. Asi
por ejemplo la Iuncion anterior se deIiniria del siguiente modo:
> F:=
proc(x)
local y;
y:=evalm(x);
vector([y[1]+y[2]+y[3],-y[1]-y[3]]);
end;
F :
proc( ) end proc x local ; v ; : v ( ) evalm x ( ) vector | | , + + | | v 1 | | v 2 | | v 3 | | v 1 | | v 3
> F([1,2,3]);
| | , 6 -4
Para probar que F es lineal debemos comprobar que si u,v son vectores de R
3
entonces
F(uv)F(u)F(v) y si a es un numero real, F(au)aF(u).
Sean u y v dos vectores de R
3
y sea a un numero real. VeriIiquemos que F es lineal con
Maple:
> u:=vector(3);
: u ( ) array , .. 1 3 | |
> F(u);
| | , + + u
1
u
2
u
3
u
1
u
3
> v:=vector(3);
: v ( ) array , .. 1 3 | |
> F(v);
| | , + + v
1
v
2
v
3
v
1
v
3
> F(u)+F(v);
+ | | , + + u
1
u
2
u
3
u
1
u
3
| | , + + v
1
v
2
v
3
v
1
v
3
> F(u+v);
| | , + + + + + u
1
v
1
u
2
v
2
u
3
v
3
u
1
v
1
u
3
v
3
Para veriIicar que los dos ultimos vectores son iguales podemos utilizar el comando equal (o
evaluar la diIerencia entre ellos):
> equal(F(u)+F(v),F(u+v));
true
> F(a*u);
| | , + + a u
1
a u
2
a u
3
a u
1
a u
3
> a*F(u);
a | | , + + u
1
u
2
u
3
u
1
u
3
Para veriIicar que los dos ultimos vectores son iguales podemos hacer lo mismo que antes o bien
evaluar la diIerencia entre ellos (o utilizar el comando equal):
> simplify(evalm(F(a*u)-a*F(u)));
| | , 0 0
Si F: R
n
--~R
m
es una Iuncion lineal y B
n
y B
m
son las bases canonica de R
n
y R
m
,
respectivamente, uno de los puntos centrales desarrollado en clase en relacion con las Iunciones
lineales es que, si F es una Iuncion lineal, a la Iuncion F se puede asociar una matriz real A de m
Iilas y n columnas tal que para todo vector x de R
n
, la imagen del vector x mediante F, F(x), se
puede obtener multiplicando el vector columna de coordenadas de x respecto de B
n
por la matriz
A, es decir, para todo vector x de R
n
(Representacin matricial cannica de F)
F(x)Ax.
La matriz A es la matriz cuyas columnas son las coordenadas respecto de la base canonica de R
m

de los vectores que son imagen de los correspondientes vectores de la base canonica de R
n
.
El comando genmatrix (F(x)1],F(x)2],...,F(x)n]],x1],x2],...,xn]]) nos permite recuperar la
matriz A de F:
> A:= genmatrix([F(x)[1],F(x)[2]],[x[1],x[2],x[3]]);
: A

((
1 1 1
-1 0 -1
Podemos veriIicar, por ejemplo, que la imagen del primer vector |1,0,0| de la base canonica de
R
3
es el vector |1,-1| y que la imagen del ultimo vector de la base canonica de R
3
es tambien el
mismo valor , que corresponden a la primera y ultima columna de la matriz A anterior:
> F([1,0,0]);F([0,0,1]);
| | , 1 -1
| | , 1 -1
Para veriIicar que la matriz A sea la correcta, podemos utilizar el comando equal o evaluar la
diIerencia entre F(x) y Ax :
> x:=vector(3):equal(F(x),A&*x); evalm(F(x)-A&*x);
true
| | , 0 0
El ncleo de una Iuncion lineal es el subespacio vectorial Iormado por todos los vectores del
espacio de partida (el dominio) cuya imagen es el vector nulo del espacio de llegada (el
codominio).
El comando kernel(A) (o nullspace(A)) obtiene un conjunto de vectores que Iorman una base
del nucleo de la Iuncion lineal F deIinida por A:
> kernel(A);
} | | , , -1 0 1
> nullspace(A);
} | | , , -1 0 1
El comando rank(A) obtiene la dimension del imagen de A:
> rank(A);
2
Los comandos rowspace(A) y colspace(A) hallan una base del espacio Iila y columna de A,
respectivamente:
> rowspace(A);
} , | | , , 1 0 1 | | , , 0 1 0
> colspace(A);
} , | | , 1 0 | | , 0 1
E1ERCICIO: Como calcularias con Maple la representacion matricial de una
transIormacion lineal F: R
n
--~R
m
respecto a dos bases genericas (no necesariamente las bases
canonicas) B1 y B2? Por ejemplo, con la Iuncion anterior, si B1|1,1,0|,|0,-1,1|,|0,0,1|} y
B2|1,-1|,|1,1|} cual es la representacion matricial de F?
>
>
>
3. Vectores y valores propios
El calculo de vectores y valores propios con Maple es extremadamente simple, pues el paquete
linalg dispone de varios comandos que calculan tanto los vectores como los valores propios.
El comando charpoly(A,x) devuelve el polinomio caracteristico de A, eigenvals(A) obtiene los
valores propios de A (las raices del polinomio caracteristico) y eigenvects(A) obtiene una base
para cada subespacio caracteristico de la matriz A segun el Iormato [valor propio, multiplicidad,
vector(es) propio(s)].
> A:=matrix(3,3,[-1,4,-2,-3,4,0,-3,1,3]);
: A

(
(
(
(
-1 4 -2
-3 4 0
-3 1 3
> charpoly(A,x);
+ x
3
6 x
2
11 x 6
> eigenvals(A);
, , 1 2 3
> eigenvects(A);
, ,

(
(
, , 2 1 }

(
(
, , 1
3
2
3
2
| | , , 3 1 } | | , , 1 3 4 | | , , 1 1 } | | , , 1 1 1
Observese que empleando los comandos anteriores es inmediato determinar si una matriz es
diagonalizable o no, en Iuncion de las multiplicidades de cada uno de los valores propios.
Obtener una diagonalizacion de la matriz A es tambien sencillo con Maple, puesto que el
comando jordan(A,P) devuelve una matriz diagonal J semejante a la matriz A, en el caso de que
exista (y en otro caso una matriz "casi-diagonal" conocida como Iorma canonica de Jordan de la
matriz A), junto con la matriz P de paso cuyas columnas son autovectores de A
(correspondientes a los autovalores de A), cumpliendose que P
} 1
AP J.
> J:=jordan(A,P);
: J

(
(
(
(
1 0 0
0 2 0
0 0 3
> print(P);

(
(
(
(
3 -4 1
3 -6 3
3 -6 4
Comprobemos que eIectivamente P
} 1
AP J.
> evalm(inverse(P)&*A&*P);

(
(
(
(
1 0 0
0 2 0
0 0 3
> evalm(P&*J&*inverse(P));

(
(
(
(
-1 4 -2
-3 4 0
-3 1 3
> equal(A,P&*J&*inverse(P));
true
Como ejercicio te proponemos que emplees el comando jordan(A,P) con una matriz A
que no sea diagonalizable para comprobar que se obtiene.
>
3.1. Clculo aproximado de valores propios (OPCIONAL)
Los valores propios de una matriz se pueden calcular hallando las raices de su polinomio
caracteristico. Sin embargo, en los problemas practicos este metodo no es eIicaz, pues a la
hora de resolver muchos problemas reales solo se necesita saber el valor propio con el valor
absoluto maximo (radio espectral).
Se dice que un valor propio de una matriz A es el valor propio dominante de A si su valor
absoluto es estrictamente mayor que los valores absolutos de todos los autovalores restantes.
Un vector propio que corresponda al valor propio dominante se denomina vector propio
dominante.
Ejemplos:
1) Una matriz de dimension 4 cuyos autovalores son = 1 3, = 2 5, = 3 1, = 4 1,
tiene autovalor dominante = 2 5.
2) Una matriz de dimension 3 con autovalores = 1 3, = 2 3, = 3 1 no tiene autovalor
dominante, ya que hay dos autovalores con valor absoluto igual 3.
Existen varios metodos numericos para poder estimar de Iorma rapida los valores propios de
una matriz (metodo de deIlaccion, metodos de potencias...), pero nosotros nos centraremos
en el llamado mtodo de las potencias que permite estimar el valor propio de mayor valor
absoluto.
Si A es una matriz diagonalizable con un valor propio dominante y X es un vector
columna arbitrario distinto de cero, el valor de A
n
X resulta ser, en general, una buena
aproximacion de un vector propio dominante de A, cuando el valor de n es suIicientemente
grande.
Ejemplo:
> restart:with(linalg):A:=matrix(2,2,[[3,2],[-1,0]]);
Warning, the protected names norm and trace have been redefined and
unprotected
: A

((
3 2
-1 0
> eigenvals(A);
, 2 1
El autoespacio correspondiente al autovalor dominante = 2 es el espacio de soluciones del
sistema ( A 2 I ) X 0,
> nullspace(A-2*matrix(2,2,[[1,0],[0,1]]));
} | | , -2 1
Entonces los autovectores dominantes de A son los vectores de la Iorma (-2t ,t ), donde t es
un parametro real.
Veamos como se puede estimar un vector propio dominante utilizando las potencias de
A.
Se empieza por elegir un vector (distinto de cero) arbitrario del plano :
> X0:=matrix(2,1,[1,1]);
: X0

((
1
1
Los vectores Xn que se obtiene al multiplicar el vector X0 por las potencias n-esima de A
son:
> X1:=evalm(A&*X0);
: X1

((
5
-1
> X2:=evalm(A&*X1);X2 = 5*matrix(2,1,[2.6,-1]);
: X2

((
13
-5
= X2 5

((
2.6
-1
> X3:=evalm(A&*X2);X3=13*matrix(2,1,[2.23,-1]);
: X3

((
29
-13
= X3 13

((
2.23
-1
> X4:=evalm(A&*X3);X4=29*matrix(2,1,[2.1,-1]);
: X4

((
61
-29
= X4 29

((
2.1
-1
> X5:=evalm(A&*X4);X5=61*matrix(2,1,[2.05,-1]);
: X5

((
125
-61
= X5 61

((
2.05
-1
> X6:=evalm(A&*X5);X6=125*matrix(2,1,[2.02,-1]);
: X6

((
253
-125
= X6 125

((
2.02
-1
> X7:=evalm(A&*X6);X7=253*matrix(2,1,[2.01,-1]);
: X7

((
509
-253
= X7 253

((
2.01
-1
Los vectores Xn se estan aproximando cada vez mas a mltiplos escalares del vector
> V:=matrix(2,1,[2,-1]);
: J

((
2
-1
que es el vector dominante correspondiente a t 1. Ya que todo multiplo escalar de un
autovector dominante tambien es un autovector dominante, los calculos anteriores estan
produciendo una aproximacion de un autovector dominante. Una vez obtenido un vector
propio dominante, se puede obtener una aproximacion del autovalor dominante mediante el
cociente de Rayleigh, en el que ,~ es el producto escalar usual:
si X es un autovector de A y es el autovalor de A al que esta asociado, podemos recuperar
el valor de a partir de X mediante el cociente:
<X,AX>/<X,X> X, X>/ <X,X> <X,X>/<X,X> .

Por tanto, si Y es una aproximacion para un autovector dominante X de A, utilizando el
cociente de Rayleigh se puede obtener una aproximacion del autovalor al que X esta
asociado:
<Y,AY>/<Y,Y>.
El metodo que acabamos de illustrar se conoce como mtodo de las potencias o mtodo de
las iteraciones.
Ejemplo:
Aplicando el metodo de las potencias con la aproximacion Y X7 de un autovector
dominante de la matriz A del ejemplo anterior, se obtiene la siguiente aproximacion del
correspondiente autovalor dominante 2:
> Y:=matrix(2,1,[509,-253]); AY:=evalm(A&*Y);
: Y

((
509
-253
: AY

((
1021
-509
> mu:=evalf(dotprod(vector(2,[509,-253]),vector(2,[1021,-509
]))/dotprod(vector(2,[509,-253]),vector(2,[509,-253])));
: 2.007075428
El metodo de las potencias puede generar vectores que tienen componentes muy grandes. El
siguiente metodo, el mtodo de las potencias con reduccin a escala, nos permite reducir
las componentes de los vectores generados.
La reduccion a escala consiste en reducir, en cada paso, los vectores que nos dan la
aproximacion, de modo que sus componentes se encuentren entre -1 y 1.
Ejemplo: En el ejemplo anterior, si se utiliza el metodo de las potencias con reduccion a
escala, se obtiene
> Digits:=4;X0:=matrix(2,1,[1,1]);
: Digits 4
: X0

((
1
1
> Z1:=evalm(A&*X0);X1:=evalf(evalm(1/5*Z1));
: Z1

((
5
-1
: X1

((
1.
-0.2000
> Z2:=evalm(A&*X1);X2:=evalf(evalm(1/2.6*Z2));
: Z2

((
2.600
-1.
: X2

((
1.000
-0.3846
> Z3:=evalm(A&*X2);X3:=evalf(evalm(1/2.23*Z3));
: Z3

((
2.231
-1.000
: X3

((
1.000
-0.4484
Asi que se pueden utilizar estos nuevos vectores en el calculo del cociente de Rayleigh:
> AX3:=evalm(A&*X3);
: AX3

((
2.103
-1.000
> mu:=evalf(dotprod(vector(2,[1,-.4484]),vector(2,[2.103,-1]
))/dotprod(vector(2,[1,-.4484]),vector(2,[1,-.4484])));
: 2.124
>
4. Ejercicios
1. DeIinir utilizando el comando "proc" la Iuncion I : R
3
--~ R
2
, I(x,y,z) (-2y , xy-z )
.Comprobar con Maple si I es lineal o no.
Sei v ( t-s , k-r , s-k-2t ), el vector I(v) es :
a) I(v) ( , + 2 k 2 r + 3 t 2 s 2 k r)
b) I(v) ( + 2 k 2 r, + 3 t 2 r 2 k s)
c) I(v) ( + 2 k 2 r, + 3 t k r s )
>
>
>
2. La representacion matricial (respecto de las bases canonicas) de la Iuncion lineal g: R
4
--~
R
5
,
g(x, y, z, w) ( 4y - 5w, 2x-13z, 3w , 2y-w, 3x) , es :
a)

(
(
(
(
(
(
(
(
3 0 0 0
0 2 0 1
0 0 2 0
0 4 0 5
2 0 0 0
b)

(
(
(
(
(
(
2 0 0 0 3
0 4 0 2 0
0 0 3 0 0
0 5 0 1 0
c)

(
(
(
(
(
(
(
(
0 4 0 5
2 0 13 0
0 0 0 3
0 2 0 1
3 0 0 0
>
>
>
3. Sea I : R
4
--~ R
3
la Iuncion lineal tal que
I(1,0,0,0) ( , , 0 0 2), I(0,1,0,0) ( , , 5 1 98), I(0,0,1,0) ( , , 27 0 31), I(0,0,0,1) ( , , 1 0 43
).
Se veriIica que :
a) I(1,0,3,4) (85,1,17)
b) I(2,-1,3,4) (79,1,-15)
c) I(2,-1,3,4) ( , , 80 1 15)
>
>
>
4. Sea h : R
4
--~ R
6
la Iuncion lineal h(x,y,z,w) ( 0, w-x, 2y5w, 3z-x/2y, 0, 0).
Sea N la nulidad (la dimension del nucleo) y R el rango (la dimension del imagen) de h .
Se veriIica que
a) N 0, R 3 b) N 1, R 3 c) N 2, R 2
>
>
>
5. Sean ( ) P
1
x el espacio vectorial de los polinomios reales (en la variable x) de grado menor
o igual que 1 y ( ) P
2
x el espacio vectorial de los polinomios reales (en la variable x) de grado
menor o igual que 2.
Sean = B
1
( ) , 1 x la base ordenada canonica de ( ) P
1
x y = B
2
( ) , , 1 x x
2
la de ( ) P
2
x .
La matriz asociada a la Iuncion lineal I: ( ) P
2
x --~ ( ) P
1
x , I(ax
2
bxc) (a-2*b)x4*c,
respecto de las bases B
1
y B
2
es
a)

((
2 1 0
0 0 4
b)

((
4 0 0
0 2 1
c) Ninguna de las anteriores
>
>
>
6. VeriIicar si (3,2,-1,1), (1,1,1,1) } es una base del subespacio vectorial de R
4
generado por
el sistema de
vectores (3,2,-1,1), (1,1,1,1), (4,3,0,2), (1,0,-3,-1)}.
>
>
>
>
7. La potencia n-esima de la matriz
A

((
4 2
3 3

es
a)
1

((
2 1
3 1
5
&*
|
\

|
.
|
|

(
(
1 0
0 6
n
&*

((
1 1
3 2
b)
1

((
2 1
3 1
5
&*
|
\

|
.
|
|

(
(
1 0
0 5
n
&*

((
1 1
3 2

c)
1

((
2 1
3 1
5
&*
|
\

|
.
|
|

(
(
3
n
0
0 5
n
&*

((
1 1
3 2

>
>
>
8. Calcula el radio espectral de la matriz del ejercicio anterior.
>
>
>