Sie sind auf Seite 1von 28

MÉTODOS MATEMÁTICOS (Curso 2011-2012)

Tercer Curso de Ingeniería Aeronáutica


Departamento de Matemática Aplicada II. Universidad de Sevilla
LECCIÓN 4: CÁLCULO DE AUTOVALORES

Introducción
Los autovalores están presentes en muchas cuestiones de orden prác-
tico. Así, por ejemplo, el régimen de enfriamiento de un sólido ho-
mogéneo es proporcional al autovalor de módulo más pequeño del
operador Laplaciano en la región dada por el volumen de dicho sóli-
do, o la frecuencia principal de vibración de una estructura o de un
sólido cualquiera viene dada por la raíz cuadrada del autovalor de
módulo más pequeño del operador de Navier en la región ocupa-
da por el sólido o estructura. El primer autovalor del operador de
Stokes da en ocasiones idea de para qué numero de Reynolds se
desestabiliza el ujo básico de un uido. Los autovalores de estos
operadores se aproximan en la práctica mediante los autovalores de
matrices adecuadas. Estudiamos en esta lección el cálculo de los
autovalores de una matriz.

Índice
1. CUESTIONES DE REPASO 1
2. MÉTODOS NUMÉRICOS PARA EL CÁLCULO DE AUTOVALORES Y AU-
TOVECTORES 4
2.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.2. El método de la potencia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.3. El método de la potencia inversa . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.4. La iteración QR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

3. CUESTIONES RELACIONADAS 17
3.1. Localización de autovalores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
3.2. Matrices no diagonalizables y matrices fuertemente no normales . . . . . . . . . . . 18

4. CUESTIONES Y PROBLEMAS 20

1. CUESTIONES DE REPASO
Recuerde que un autovalor de una matriz A cuadrada es un escalar λ para el cual existe un
vector no nulo v de modo que
Av = λv.

1
Dado un autovalor λ de una matriz A, todos los vectores v que verican la relación anterior reciben el
nombre de autovectores de A asociados al autovalor λ. Asociados a un autovalor dado, hay innitos
autovectores (todos aquéllos proporcionales a uno dado no nulo).
Si λ es autovalor, debe haber un autovector v no nulo que es solución no nula del sistema
homogéneo
(λ I − A)v = 0,
y por tanto es obligado que det(λI − A) = 0 (en otro caso la única solución del sistema anterior
sería la nula y λ no sería autovalor). Los autovalores de una matriz A son entonces las raíces de su
polinomio característico
pA (x) = det(xI − A).
Eso asegura que el número de autovalores de A distintos es a los sumo es grado de pA (x) (m si A
es m × m). Si pA (x) tiene raíces multiples, el número de autovalores distintos es estrictamente
menor que m. La multiplicidad de cada raíz de pA se conoce como multiplicidad (algebraica) del
autovalor correspondiente. Un procedimiento para calcular los autovalores de una matriz es resolver
la ecuación
pA (x) = 0,
aunque en la práctica sólo es útil para matrices 2 × 2.
Una matriz A de dimensiones m × m se dice que es diagonalizable si hay una base de Rm (o
de Cm ) formada por autovectores de A. Es término "diagonalizable"proviene de que si v1 , . . . , vm
forman una base de Rm y
Avj = λj vj , j = 1, . . . , m
la matriz m × m
V = [v1 , . . . , vm ],
cuyas columnas son los vectores v1 , . . . , vm , satisface que

AV = V D (o V −1 AV = D),

donde D es la matriz diagonal


 
λ1 0 0 ... 0
 0 λ2 0 ... 0 
 
 .. . . . . .. .. 
D= . . . . . .
 
 0 . . . 0 λm−1 0 
0 ... 0 0 λm
ya que
AV = A[v1 , . . . , vm ] = [Av1 , . . . , Avm ] = [λ1 v1 , . . . , λvm ] = V D.
Otra manera de decir que A es diagonalizable es decir que A es semejante a una matriz diago-
nal. Recuerde que dos matrices A y B son semejantes si existe una matriz U invertible de modo
que A = U BU −1 , y que dos matrices semejantes tienen el mismo polinomio característico (los
mismos autovalores con la misma multiplicidad, por tanto) aunque no necesariamente los mismos
autovectores.

2
Los autovectores de una matriz A asociados a autovalores distintos son linealmente independi-
entes, por tanto una matriz es diagonalizable si y solamente si cada autovalor tiene tantos autovec-
tores independientes como indique su multiplicidad.
Recuerde sin embargo que no todas las matrices son diagonalizables. El ejemplo más sencillo es
· ¸
1 1
A= ,
0 1
cuyo polinomio característico es pA (x) = det(xI − A) = (x − 1)2 y por tanto λ = 1 es su único
autovalor (y es doble). Calculamos sus autovectores encontrando las soluciones independientes de
(A − λI)x = 0.
Puesto que · ¸
0 1
A−I =
0 0
queda la ecuación
x2 = 0,
cuyas soluciones son todas las proporcionales a
· ¸
1
v= ,
0
y por tanto no hay dos autovectores de A independientes.
Recuerde que si A matriz m × m es real y simétrica entonces, en primer lugar, todos sus
autovalores son reales , y, en segundo lugar, autovectores suyos asociados a autovalores distintos
no sólo son independientes sino que además son ortogonales entre sí. Aún más, si A es simétrica
siempre es diagonalizable , y además se puede elegir la base de autovectores de manera que sea una
base ortonormal (vectores ortogonales entre sí y de norma 1). La matriz Q = [q1 , . . . , qm ] cuyas
columnas son los elementos de dicha base es por tanto una matriz ortogonal (QT Q = I ). Esta
propiedad es tan importante que se la resumimos a continuación.
A matriz m × m es simétrica ⇔ ∃Q con Q−1 = QT y D diagonal tt. qq. A = QDQT .
Por último recuerde que cuando una matriz A de dimensiones m × m no es diagonalizable,
se puede encontrar una base de Rm , cuyos elementos v1 , . . . , vm se conocen como autovectores
generalizados de modo que la matriz
V = [v1 , . . . , vm ],
cuyas columnas son dichos vectores, satisface que
AV = V B,
donde B es la matriz diagonal por bloques,
 
B1 O O ... O
 O B2 O ... O 
 
 
B =  ... .. ..
. .
..
.
..
. ,
 
 O ... O Bk−1 O 
O ... O O Bk

3
siendo k el número de autovalores de A distintos dos a dos, y si estos son λ1 , . . . , λk , cada bloque
Bj tiene por dimensión la multiplicidad del autovalor λj , y además λj es el único autovalor de Bj .
Hay una forma especial de elegir los vectores v1 , . . . , vm cuya matriz B resultante se conoce como
forma de Jordan de A. Pero, esté Vd. tranquilo, que el cálculo de autovectores generalizados y de la
forma de Jordan es un problema muy mal condicionado, y nadie en su sano juicio se ocupa de ello.

2. MÉTODOS NUMÉRICOS PARA EL CÁLCULO DE AU-


TOVALORES Y AUTOVECTORES
2.1. Introducción
El problema de calcular los autovalores de una matriz está hoy día bien resuelto desde el punto
de vista numérico, siempre que se trate de matrices cuyas dimensiones no sean exageradamente
grandes y que no tengan autovalores con autovectores asociados que, siendo independientes, sean
casi paralelos.
El gran avance en cálculo de los autovalores de una matriz lo produjo la invención de la ite-
ración QR (OJO: no confundir con la descomposición QR, que una cosa es la descomposición y
otra la iteración). Dicha iteración QR fue inventada independientemente en 1961 por J.G. F. Francis
y V. N. Kublanovskaya, y las mayores aportaciones para su compresión y desarrollo se deben a J.
H. Willkinson, y están recogidas en su obra The Algebraic Eigenvalue Problem (Clarendon Press,
Oxford, 1965).
Tres son los métodos que estudiaremos en esta lección.

El método de la potencia para el cálculo del autovalor de mayor módulo de una matriz.

El método de la potencia inversa para el cálculo del autovector asociado a un autovalor cono-
cido.

La iteración QR básica para el cálculo de todos los autovalores de una matriz. El comando
eig de Matlab implementa una versión de la iteración QR excesivamente sosticada para
las pretensiones de este curso. Puede verse una descripción del mismo en G. H. Golub & C. F.
Van Loan, Matrix Computations. Third Edition , The John Hopkins University Press, 1992.

Existen otras técnicas más modernas, pero no tan robustas y todavía por desarrollar completamente.
Entre ellas, el conocido como método de Arnoldi reiniciado implícitamente, creado en 1996 por
Sorensen y Lehoucq, que se utiliza en el comando eigs de Matlab. No veremos este tipo de
técnicas pues se salen del alcance de este curso.

2.2. El método de la potencia


El conocido como método de la potencia sirve para calcular el autovalor de módulo más grande
de una matriz real. Sólo es válido (converge) cuando dicho autovalor de módulo más grande es real
y es simple, o, en caso de ser múltiple, tiene asociados tantos autovectores independientes como
indique su multiplicidad.

4
Explicamos aquí el fundamento del caso más sencillo, que se da cuando la matriz es diago-
nalizable. Sea A una matriz m × m y denotemos sus autovalores como λ1 , . . . , λm , notación que
empleamos tras haberlos ordenado por tamaño,

|λ1 | > |λ2 | ≥ . . . ≥ |λm | .

Observe que sólo se pide que el primer autovalor sea de módulo estrictamente más grande que los
demás . Entre los demás, puede haber autovalores múltiples, pero el primero debe ser simple1 .
Sean v1 , . . . , vm una base de autovectores asociados, esto es

Avj = λj vj , j = 1, . . . , m.

Para un vector x ∈ IRm , tendremos que

x = α1 v1 + α2 v2 + · · · + αm vm ,

para ciertos escalares α1 , . . . , αm . Por tanto,


³ ³ λ ´n ³ λ ´n ´
n 2 m
A x= α1 λn1 v1 + α2 λn2 v2 + ··· + αm λnm vm = λn1 α1 v1 + α2 v2 + · · · + α m vm . (1)
λ1 λ1
Ahora bien, puesto que
¯ ¯ ¯ ¯ ³ λ ´n ³ λ ´n
¯ λ2 ¯ ¯ ¯
¯ ¯ < 1, . . . , ¯ λm ¯ < 1 ⇒ lı́m
2
= . . . = lı́m
m
= 0,
¯ λ1 ¯ ¯ λ1 ¯ n→∞ λ1 n→∞ λ1

de donde se sigue que


³ ³ λ ´n ³ λ ´n ´
2 m
lı́m α2
v2 + · · · + α m vm = 0.
λ1 n→∞ λ1
Por ello, para n sucientemente grande se tiene que

An x ≈ λn1 α1 v1 ⇒ An+1 x ≈ λ1 An x.

Por tanto, si denotamos


yj
y = An+1 x, z = An x, para cualquier componente zj 6= 0 de z tenemos λ1 ≈ .
zj

En la práctica, no es conveniente calcular An x, pues si hay autovalores de módulo mayor que


uno, An x puede tener componentes muy grandes y, eventualmente, producir overow"(el sistema
de coma de otante del ordenador no puede almacenar un número tan grande). Por ello, el algoritmo
del método de la potencia es como sigue.
1) Tomando x ∈ IRm cualquiera, se hace

z ← x/ kxk .

1 Elmétodo de la potencia también produce resultado correctos si λ1 es múltiple, siempre que tenga tantos
autovectores independientes asociados como su multiplicidad algebraica

5
2) Hasta que se repitan tantas cifras decimales en λ como nos interese2 , se repite lo siguiente
2.1) y ← Az
2.2) Si j es tal que |zj | = máx1≤i≤m |zi |
yj
λ← ,
zj
2.3) z ← y/ kyk
Tras realizar este proceso tendremos que
v1
λ ≈ λ1 , z≈ .
kv1 k

El propósito de dividir por kyk en el paso 2,3) es evitar el overow antes mencionado
Ejemplo. Para la matriz  
1 0 1
A =  0 1 1 ,
1 1 0
cuyos autovalores son λ1 = 2, λ2 = 1 y λ3 = −1, ejecutamos el método de la potencia en Matlab.
Para ello ejecutamos primero,

x=rand(3,1); z=x/norm(x);

para crear un vector aleatorio de norma 1. A continuación repetimos la siguiente línea unas cuantas
veces,

y=A*z; [zm,j]=max(abs(z)); lambda=y(j)/z(j); z=y/norm(y); lambda

El resultado es
lambda = 1.6387
lambda = 1.7587
lambda = 1.8746
lambda = 1.9268
lambda = 1.9653
lambda = 1.9807
lambda = 1.9911
lambda = 1.9951
lambda = 1.9978
lambda = 1.9988
lambda = 1.9994
lambda = 1.9997
lambda = 1.9999
lambda = 1.9999
lambda = 2.0000
2 Dicho de otro modo, hasta que dos aproximaciones consecutivas a λ disten menos que una tolerancia previamente
establecida

6
Podemos comprobar que lo encontrado es una aproximación a un autovalor y su correspondiente
autovector calculando la norma del vector A − λv , y viendo que sale una cantidad del orden del
error obtenido en λ (en este caso, inferior a 10−4 ). Ejecutamos pues
norm((A-lambda*eye(3))*z)
obteniendo la respuesta,
ans =
1.8706e-05
que es, efectivamente, un valor pequeño.

El ejemplo anterior muestra también otro detalle importante del método de la potencia. Si
(n)
llamamos λ1 a la aproximación a λ1 en el paso n-ésimo del método de la potencia, se tiene que el
error satisface que
¯ ¯ λ2 ¯ ¯
¯λ1 − λ(n+1)
1
¯ ≈ ¯λ1 − λ(n)
1
¯, n → ∞.
λ1
(6) (7)
(Compare por ejemplo los errores de las aproximaciones sexta λ1 = 1,9807, séptima, λ1 = 1,9911
(7)
y octava, λ1 = 1,9951, que son, respectivamente, 0.0193, 0.0089, 0.0045). Este hecho se explica
a partir de la expresión (1), pues el término (asintóticamente) más grande después del autovector
α1 v1 es el correspondiende a v2 .
El hecho de que los errores decaigan como (λ2 /λ1 )n hace que en ocasiones se busquen los auto-
valores de la matriz A − µI , y luego se les sume µ a los autovalores encontrados para recuperar los
de A. El propósito no es otro que hacer que el cociente (λ2 − µ)/(λ1 − µ) sea signicativamente más
pequeño (en módulo) que λ2 /λ1 , y así efectuar menos iteraciones. Aunque no es de uso generalizado,
el método de la potencia cuando se resta un múltiplo de la identidad para acelerar la convergencia
se conoce con el nombre de método de la potencia trasladado .
Autovalor de módulo más pequeño. También es posible encontrar el autovalor de módulo más
pequeño si se satisface
|λ1 | ≥ |λ2 | ≥ . . . ≥ |λm−1 | > |λm | > 0. (2)
pues dado que los autovalores de A−1 son
1 1 1 1
µ1 = > µ2 = ≥ . . . ≥ µm−1 = ≥ µm =
λm λm−1 λ2 λm

se puede aplicar el método de la potencia a la matriz A−1 (¾cree Vd. que será necesario calcular A−1 ?)
Ejemplo (Cont.). Intentamos calcular el autovalor más pequeño de la matriz del ejemplo anterior
 
1 0 1
A =  0 1 1 ,
1 1 0

(recuerde que los autovalores son λ1 = 2, λ2 = 1 y λ3 = −1) aplicando el método de la potencia


a A−1 . Ejecutando

x=rand(3,1); z=x/norm(x);

7
a continuación

[L,U]=lu(A);

y repitiendo la linea,

y=U\(L\z); [zm,j]=max(abs(z)); mu=y(j)/z(j); z=y/norm(y); lambda=1/mu

el resultado es
lambda = 1.6239
lambda = 1.1071
lambda = 1.4120
lambda = 0.8846
lambda = 1.3157
lambda = 1.2546
lambda = 1.2865
lambda = 1.2709
lambda = 1.2787
lambda = 1.2748
lambda = 1.2768
lambda = 1.2758
lambda = 1.2763
lambda = 1.2761
lambda = 1.2762
lambda = 1.2761
lambda = 1.2762
lambda = 1.2761
lambda = 1.2761
lambda = 1.2761
lambda = 1.2761
lambda = 1.2761
lambda = 1.2761
y ½HORROR DE LOS HORRORES!. Nos ha ocurrido lo peor que nos puede ocurrir haciendo
cálculos con ordendor: ½UNOS RESULTADOS ERRÓNEOS QUE PARECEN CORREC-
TOS! (¾Sabe Vd. por qué son erróneos?).
Podemos comprobar que son erróneos calculando la norma del vector (A − λI)v con el comando

norm((A-lambda*eye(3))*z)
obteniendo la respuesta,
ans =
3.9404e-01
valor mucho mayor que 10−4 , que es una cota superior del error absoluto con el que hemos calcu-
lado λ = 1,2761 (compare con el valor que obtuvimos en el caso anterior). Note entonces que la
comprobación de calcular kAv − λvk conviene hacerla siempre para validar los resultados obtenidos.

8
Si ha reexionado sobre las preguntas que hemos ido haciendo se habrá dado cuenta de que los
autovalores de A verican que |λ1 | > |λ2 | = |λ3 |, y esto contradice (2), que es la condición que
garantiza la convergencia del método de la potencia cuando se aplica a A−1 .
Una posible solución en estos casos puede ser cambiar los autovalores A mediante una traslación
por un múltiplo de la identidad. Así por ejemplo, dado que hemos calculado previamente λ1 = 2,
podemos probar a aplicar el método de la potencia a la inversa de A + 2I , cuyos autovalores son 4,
3 y 1. De este modo ejecutamos,

x=rand(3,1); z=x/norm(x);

a continuación

[L,U]=lu(A+2*eye(3));

y repetimos la linea,

y=U\(L\z); [zm,j]=max(abs(z)); mu=y(j)/z(j); z=y/norm(y); lambda=1/mu-2

obteniendo
lambda = -0.6196
lambda = -0.6940
lambda = -1.1097
lambda = -1.0230
lambda = -1.0055
lambda = -1.0014
lambda = -1.0003
lambda = -1.0001
lambda = -1.0000
lambda = -1.0000
lambda = -1.0000
lambda = -1.0000
que es el valor correcto.
Advertencia. No saque la conclusión errónea de que con una simple traslación se solucionan los
problemas de convergencia del método de la potencia cuando se produce empate entre los módulos
de los autovalores dominantes. Efectuar traslaciones a una matriz requiere un buen conocimiento
de los autovalores de la misma que es, en la práctica, circunstancia no muy frecuente.

2.3. El método de la potencia inversa


Si se tiene una aproximación µ a un autovalor λ de una matriz A, el procedimiento conocido
como método de la potencia inversa para el cálculo de un autovector asociado se basa en que A − µI
tiene como autovalor a λ−µ que es de módulo muy pequeño, y por lo tanto en la matriz (A−µI)−1 el
autovalor σ1 = 1/(λ − µ) dominará extraordinariamente sobre los demás (i.e., el cociente σ2 /σ1 será
extraordinariamente pequeño, por lo que el método de la potencia aplicado a (A − µI)−1 convergerá
rápido.
El método de la potencia inversa es pues como sigue.

9
1) Se toma y ∈ IRm cualquiera, y se hace

b ← y/ kyk .

2) Hasta que se repitan tantas cifras decimales en b como nos interese3 , se repite lo siquiente
2.1) Se calcula la solución x del sistema (A − µI)x = b.
2.3) b ← x/ kxk.
Al nalizar este proceso el vector b será una aproximación a un autovector v asociado a λ.
Ejemplo. Para la misma matriz que ya hemos utilizado
 
1 0 1
A =  0 1 1 ,
1 1 0

(de autovalores λ1 = 2, λ2 = 1 y λ3 = −1) ejecutamos el método de la motencia inversa en Matlab,

y=rand(3,1); b=y/norm(y);

a continuación

[L,U]=lu(A-1.9999*eye(3));

y repetimos

x=U\(L\b); b=x/norm(x)

obteniendo
z =
0.5773
0.5774
0.5774

z =
0.5774
0.5774
0.5774
esto es, en dos iteraciones hemos
p obtenidoT una aproximación con al menos 4 cifras decimales co-
rrectas al autovector v1 = (1/ (3))[1, 1, 1] asociado al autovalor λ1 = 2.
Quizá lo más destacado del método de la potencia inversa es que si µ es una buena aproximación
a λ, la matriz A − µI está muy mal condicionda, por ser casi singular. Sin embargo, los errores que
se producen trabajan a nuestro favor.
3 Dicho de otro modo, hasta que dos valores consecutivos de x disten en norma menos que una tolerancia previa-
mente establecida

10
2.4. La iteración QR
En Matlab, dada una matriz cuadrada A, el comando eig(A) devuelve un vector con los
autovalores de A. Por ejemplo, para la matriz de los ejemplos de la sección anterior,
 
1 0 1
A= 0 1 1 ,
1 1 0

(con autovalores λ1 = 2, λ2 = 1 y λ3 = −1) ejecutando este comando devuelve,


ans=
-1.0000
1.0000
2.0000
El comando eig también puede devolver las matrices V y D tales que

AV = V D

Para ello se debe ejecutar [V,D]=eig(A). Si lo hacemos para la matriz que nos ocupa obtenemos

V =
-0.4082 -0.7071 -0.5774
-0.4082 0.7071 -0.5774
0.8165 0.0000 -0.5774
D =
-1.0000 0 0
0 1.0000 0
0 0 2.0000
Las tres columnas de la matriz V son de norma 1 (Matlab siempre saca las columnas de la matriz V
con norma 1) y son proporcionales a los vectores
     
−1 −1 1
 −1  ,  1  ,  1  ,
2 0 1
respectivamente, vectores que se comprueba fácilmente que son autovectores de A.
El procedimiento que utiliza Matlab para calcular los autovalores de la matriz se conoce como
iteración QR (no confundir con la descomposición QR). Es como sigue,
1) Repetir hasta obtener una matriz de autovalores calculables.
1.1) Hallar una descomposición QR de A

A = QR
1.2) Multiplicar R por Q,

A ← RQ

11
Ejemplo 7. Tomemos la matriz  
13 5 2 2
 3 11 6 6 
A= 
 2 2 8 4 ,
2 2 4 8
cuyos autovalores son λ1 = 20, λ2 = λ3 = 8, y λ4 = 4, y empezemos a repetir
[Q,R]=qr(A);A=R*Q
Tras repetir 14 veces esta línea, obtenemos la respuesta
A =
20.0000 0.0000 4.0000 0.0000
0.0000 8.0000 4.4721 0.0001
0.0000 0.0000 8.0000 0.0000
0.0000 0.0000 0.0000 4.0000
matriz que es triangular superior, y que como vemos tiene los mismos autovalores que la matriz A
de la que hemos partido.
No explicaremos aquí por qué la iteración QR converge a una matriz en la que se pueden calcular
fácilmente los autovalores. Sin embargo, debe saber lo siguiente:

i) Si A = QR es una descomposición QR de A, entonces la matriz RQ es semejante a A, y, por


tanto, tiene los mismos autovalores. Esto es debido a que
Q−1 AQ = Q−1 (QR)Q = RQ.

ii) La matriz a la que converge el algoritmo QR no tiene por qué ser triangular superior como la
del ejemplo que hemos visto. En ocasiones, convergerá a una matriz triangular superior por
bloques, esto es, de la forma
 
B11 B12 . . . B1k
 B22 . . . B2k 
 
T = . . ..  , donde Bjj es 2 × 2 ó 1 × 1, j = 1, . . . k. (3)
 . . 
Bkk
(Véase el Ejercicio 5). Los autovalores de esta matriz son fáciles de calcular pues su polinomio
característico es
det(xI − T ) = det(xI − B11 )det(xI − B22 ) . . . det(xI − Bkk ),
y al ser los bloques diagonales Bjj de orden 1, u orden 2, los polinomios det(xI − Bjj ) son
de grado 1 o de grado 2, y por lo tanto es sencillo calcular sus raíces. En otras palabras, los
autovalores de A son los de los bloques diagonales Bjj .
iii) En ocasiones ni siquiera converge la iteración QR, aunque lo que ocurre es que a partir de un
iterante determinado se obtiene (salvo errores proporcionales a la unidad de redondeo) una
matriz con la estructura de T en (3), pero pudiendo cambiar las componentes de los bloques
diagonales Bjj de iteración en iteración (véase el Ejercicio 7).

12
iv) El algoritmo aquí explicado es la versión más básica. Lo que se programa en los ordenadores
(por ejemplo, lo que ejecuta el comando eig de Matlab) es un poco más sosticado.

Factorización de Schur. La matriz T en (3) se conoce como forma de Schur (real) de A. De hecho
se tiene el siguiente teorema que es de fácil demostración (Véanse por ejemplo o.c. Golub & Van
Loan, Theorem 7.1.3, o el Teorema 24.9 de L. N. Trefethen & D. Bau, III, Numerical Linear Algebra
SIAM, Philadelphia, 1997).

Teorema 1 Dada una matriz real A de dimensiones m × m, existe una matriz ortogonal Q de igual
dimensión de modo que QT AQ = T , donde T es una matriz real con la forma y características
que se indican en (3). Si A tiene autovalores reales, entonces se puede elegir Q de modo que T sea
triangular superior. Por último, tanto si A es real como compleja, existe una matriz compleja U
T T
unitaria (U −1 = U ) de modo que U AU es matriz compleja m × m triangular superior.

El comando schur de Matlab devuelve la forma de Schur real de una matriz si ésta es real, o
compleja en caso contrario. Igual que el comando eig, se puede utilizar como T=schur(A) para
obtener sólamente la matriz T , o bien como [Q,T]=schur(A) si además se desea la matriz de
paso Q. El procedimiento de cálculo que utiliza este comando no es otro que la iteración QR.
Costo operativo. Cada paso de la iteración QR requiere una factorización QR de una matriz m×m.
Por razones de estabilidad numérica dicha factorización se lleva a cabo mediante transformaciones
de Householder. En cada paso de la iteración QR, sólamente la factorización QR requiere (según lo
visto en la Lección 2)
4 3
m ops.
3
Se trata por tanto de un método costoso desde el punto de vista computacional.
Caso de matrices en forma de Hessenberg. Para atenuar el costo operativo de cada paso
de la iteración QR, en la práctica, se transforma la matriz A en otra semejante H con forma de
Hessenberg. Una matriz H se dice que tiene forma de Hessenberg4 (o que es de Hessenberg) si es
nula por debajo de su primera subdiagonal, esto es, es de la forma
 
h11 h12 h13 ... h1m
 h21 h22 h23 ... h2m 
 
 0 h32 h33 . . . h 
H= 3m .
 .. . . . . .. .. 
 . . . . . 
0 . . . 0 hm,m−1 hm,m

Si la matriz H es de Hessenberg, calcular su factorización QR mediante transformaciones de House-


holder se puede hacer en O(m2 ) ops en vez de O(m3 ) ops.
Para entenderlo basta estudiar el primer paso de la factorización QR. Observe que si B es la
matriz 2 × 2 de Householder tal que
· ¸· ¸ · ¸
b11 b21 h11 α
= ,
b21 b22 h21 0
4 En rigor, de Hessenberg superior.

13
entonces la matriz H1 m × m dada por
· ¸
B OT
H1 = ,
O I

es también de Householder, y al ser la primera columna de H nula a partir de su tercera componente,


se tiene que · ¸
α bT
H1 H = ,
0 H (2)
con H (2) de Hessenberg pues, dado que las m − 2 últimas las de H1 son las de la identidad, las
m − 2 últimas las de H (2) son las de H .
Ejemplo. Para la matriz  
3 5 5 5
 4 0 5 5 
H=  0 3
,
1 2 
0 0 5 6
la matriz B es
· ¸ · ¸· ¸ · ¸
1 −3 −4 1 −3 −4 3 −5
B= , pues = ,
5 −4 3 5 −4 3 4 0

la matriz H1 es pues  
−3 −4 0 0
1  −4 3 0 0 
H1 = 
,
5 0 0 5 0 
0 0 0 5
y     
−3 −4 0 0 3 5 5 5 −5 −3 −7 −7

1 −4  
3 0 0  4 0 5 5   
H1 H =   =  0 −4 −1 −1  .
5  0 0 5 0  0 3 1 2   0 3 1 2 
0 0 0 5 0 0 5 6 0 0 5 6
Puesto que al multiplicar H1 H solo alteramos las dos primeras las de H , el costo de este producto
es de 4m ops.
Para seguir reduciendo H1 H a triangular superior, sólo tendremos que operar en la matriz H (2) ,
que es de Hessenberg y de dimensión (m − 1). Luego estamos en la situación anterior pero con una
dimensión menor. Luego el costo en ops de los productos por las matrices de Householder para
llegar a la matriz R es
m−2
X
4 (m − j) = 2(m + 2)(m − 1) + (m − 1)r,
j=0

donde r es el costo en ops de calcular una raíz cuadrada. Además la matriz Q es

Q = H1 H2 . . . Hm−2 .

14
Dado que las matrices Hj son la identidad excepto una caja 2 × 2 en algún punto de la diagonal, es
fácil ver que la construcción de Q se puede llevar a cabo con un costo aproximado de 2m(m − 1)
ops. Pero, y aún más importante, es también fácil razonar que Q es de Hessenberg. Estudie si no
el siguiente ejemplo.
   
1 −1 0 0 1 0 0 0 1 0 0 0
 −1 −1 0 0   0 1 −1 0   0 
   0 1 0 =
 0 0 1 0   0 −1 −1 0   0 0 1 −1 
0 0 0 1 0 0 0 1 0 0 −1 −1
    
1 −1 1 0 1 0 0 0 1 −1 1 −1
 −1 −1 1 0   0   1 −1 
=  0 1 0  =  −1 −1 .
 0 −1 −1 0   0 0 1 −1   0 −1 −1 1 
0 0 0 1 0 0 −1 −1 0 0 −1 −1

Por último, note que si Q es de Hessenberg y R triangular superior, entonces el producto RQ es


de Hessenberg (recuérdese la interpretación del producto matricial en términos de combinaciones
lineales de las columnas de la primera matriz o de las las de la segunda). Además, no es difícil
deducir que el costo de efectuar el producto RQ es aproximadamente de 2m2 ops
En resumen, si H es de Hessenberg,

i) Si H = QR es una descomposición QR de H , entonces la matriz Q es de Hessenberg.

ii) El producto RQ es de Hessenberg.

iii) El costo total de un paso de la iteración QR es O(6m2 ) ops, y en el caso de matrices simétricas,
O(10m) ops. (Véase siguiente epígrafe).

Caso de matrices simétricas. Si H es una matriz de Hessenberg y además es simétrica, por


fuerza es tridiagonal, con lo que la factorización QR y el producto RQ se puede hacer con un coste
total de 10m ops aproximadamente.
Reducción a forma de Hessenberg. Vista la reducción del costo operativo en un paso de la
iteración QR en el caso de una matriz en forma de Hessenberg, los algoritmos que implementan
la iteración QR en una matriz A, transforman primero A en otra matriz H semejante a A (y por
tanto con los mismos autovalores que A) pero de Hessenberg.
El proceso de reducción a forma de Hessenberg se hace mediante transformaciones de House-
holder, y es muy sencillo de entender. Escribamos la matriz A de orden m × m como
 
α γ dT
A =  β δ eT  ,
b c B

con b, c, d, e ∈ Rm−2 y B matriz (m − 2) × (m − 2). Si fuésemos a hallar la factorización QR


buscaríamos una matriz de Householder que transformase la primera columna de A en un vector
proporcional al primer vector coordenado de Rm . Para reducir A a forma de Hessenberg, la idea es
la misma pero olvidándose de la primera la [α, γ, dT ] de A, y procediendo como si buscásemos la
factorización QR de la matriz formada por las restantes las de A,

15
Siguiendo esta idea, buscamos entonces la matriz de Householder G de dimensiones (m − 1) ×
(m − 1), tal que · ¸ · ¸
β β̃
G = .
b 0
Entonces la matriz H1 de dimensión m × m dada por
· ¸
1 0T
H1 =
0 G
es también de Householder y, efectuando el producto
     
· ¸ α γ dT α ¸ γ ¸ dT ¸ α γ dT
1 0 T · · ·
H1 A =  β δ eT  =  β δ eT  =  β̃ δ̃ ẽT 
0 G G G G
b c B b c B 0 c̃ B̃
y dado que H1−1 = H1T = H1 , la matriz H1 AH1T es semejante a A (por lo que tiene los mismos
autovalores) y es de la forma
     
α γ dT · T
¸ α [ γ dT ]GT α γ̂ dˆT
1 0
H1 AH1 =  β̃ δ̃ ẽ 
T T
=  β̃ [ δ̃ ẽ ]G  =  β̃ δ̂
T T
êT  ,
0 GT
0 c̃ B̃ 0 [ c̃ B̃ ]GT 0 ĉ B̂
esto es, no ha afectado a la primera columna de H1 A. Notemos entonces que la primera columna de
la matriz resultante corresponde a una matriz de Hessenberg. Ahora se repite lo que hemos hecho
en A pero en la matriz · ¸
δ̂ êT
,
ĉ B̂
esto es, buscamos una matriz G̃ de Householder de dimensiones (m − 2) × (m − 2) de modo que G̃c̃
tenga todas sus componentes nulas excepto la primera, y completamos G̃ con el borde superior de
la identidad hasta una matriz H2 de tamaño m × m
 
1 0 0T
H2 =  0 1 0 T  ,
0 0 H10
de modo que la matriz H2 (H1 AH1T ) tiene sus dos primeras columnas en forma de Hessenberg, y
como el producto (H2 (H1 AH1T ))H2T deja inalteradas las dos primeras columnas de (H2 (H1 AH1T )),
la matriz H2 H1 AH1T H2T tiene sus dos primeras columnas de Hessenberg. Siguiendo con este proceso,
pues, la matriz
Hm−2 . . . H1 AH1T . . . Hm−2
T
= (Hm−2 . . . H1 )A(Hm−2 . . . H1 )−1
es de Hessenberg y semejante a A. Compruebe que ha comprendido este proceso haciendo el Ejer-
cicio 11.
Si se cuenta el número de ops que se realizan en este proceso resulta ser de 10
3
m3 ops, y otros
4 3
3
m ops si se desea construir la matriz Q = Hm−2 . . . H1 .
Matlab dispone del comando hess para obtener una matriz de hessemberg ortogonalmente
semejante a otra dada.
Resumen. En la práctica pues, la iteración QR se lleva a cabo

16
1) Reduciendo primero A a forma de Hessenberg, con un coste de O( 10
3
m3 ) ops.

2) Aplicando la iteración QR a la matriz de Hessenberg resultante, con un coste de O(6m2 ) ops


por paso, o de O(10m) en el caso en A sea simétrica y, por tanto, su forma de Hessenberg
tridiagonal.

En la práctica no es ésta la única desviación sobre el algoritmo QR básico explicado al principio


de la lección. También se efectúan traslaciones para acelerar la convergencia. Un paso con traslación
sería como sigue

1) Calcular la descomposición QR de H − µI , esto es, H − µI = QR

2) Efectuar H ← RQ + µI

Cómo elegir el factor de traslación µ queda fuera del ámbito de este curso. Puede encontrar infor-
mación en la bibliografía citada al principio de la lección. Debe saber sin embargo, que en cada paso
µ se elige en función de las componentes de la subdiagonal de la matriz H , y cambia de paso en
paso.

3. CUESTIONES RELACIONADAS
3.1. Localización de autovalores
Debe conocer el siguiente teorema, conocido como Teorema de los Círculos de Gershgorin, y que
proporciona información sobre dónde están los autovalores de una matriz A. Note que si una matriz
es diagonal, sus autovalores son los elementos diagonales. El siguiente teorema nos indica que si
la matriz no es diagonal, los autovalores están en círculos con centro en los elementos diagonales
(Véase por ejemplo, el Teorema 7.2.1 de la o.c. Golub & Van Loan, o el Ejercicio 24.2 de la o.c.
Trefethen & Bau).

Teorema 2 Si A es una matriz de dimensiones m × m, los autovalores de A están en el conjunto


m
[ X
{z ∈ C | |z − aii | ≤ ri }, donde ri = |aij | , i = 1, . . . , m.
i=1 j6=i

Es más, cada componente conexa de dicho conjunto contiene tantos autovalores (contados tantas
veces como indique su multiplicidad) como círculos la formen.

Ejemplo La matriz  
5 0 −1
A= 0 2 1 
1 −1 0

17
tiene sus autovalores en el conjunto formado por la unión de los círculos de centro 5 y radio 1, de
centro 2 y radio 1 y de centro 0 y radio 2.

0 2
0 2 5

La unión de estos círculos tiene dos componentes conexas, una de ellas formada por el círculo de
centro 5 y radio 1, que contiene 1 autovalor, λ1 = 4,8063, y otra formada por la unión de los otros
dos círculos, que contiene dos autovalores, λ2 = 1,0468 + 0,5033i, y λ3 = 1,0468 − 0,5033i. Note que
no tiene por qué haber un autovalor dentro de cada círculo, pero que dentro de cada componente
conexa hay tantos autovalores como círculos la forman.

3.2. Matrices no diagonalizables y matrices fuertemente no normales


Mencionamos en la introducción que no trataríamos el caso de matrices no diagonalizables. Tene-
mos una buena noticia y una mala que darle. Recordará del primer curso lo tedioso que era calcular
las potencias de estas matrices. Recuerde que si A era diagonalizable y V era una matriz formada
por los autovalores de A, y D la matriz diagonal con los autovalores a los que están asociados,

A = V DV −1 ⇒ An = V Dn V −1 ,
esto es las componentes de An son combinaciones de las potencias de sus autovalores.
Ejemplo. · ¸ · ¸· ¸· ¸
2 −1 1 1 1 3 0 1 −1
A= = ,
−1 2 2 −1 1 0 1 1 1
y · ¸· ¸· ¸ · ¸ · ¸
n 1 1 1 3n 0 1 −1 3n 1 −1 1 1 1
A = = + .
2 −1 1 0 1n 1 1 2 −1 1 2 1 1

En cambio para matrices no diagonalizables (aparte de más engorroso el cálculo de autovectores


generalizados y la matriz reducida por bloques o forma de Jordan), en la potencia n-ésima de A
aparecen también potencias de n del orden de la multiplicidad de los autovalores menos uno.
Ejemplo. La matriz · ¸
1 1
A=
0 1
como ya vimos en el repaso no es diagonalizable, pues 1 es autovalor doble y no hay otro autovector
que sea independiente de v = [1, 0]T , y
· ¸
n 1 n
A = .
0 1

18
La buena noticia es que las matrices no diagolizables no existen en la práctica; sólo existen en
los primeros cursos para fastidiar a los alumnos. Bueno casi . La razón de que no existan en la
práctica es que basta una pequeña perturbación de la matriz para volverla diagonalizable. Para ²
tan pequeño como se quiera, cualquiera de las matrices
· ¸ · ¸ · ¸
1 1 1 1 1+² 1
A= , A= , A= ,
0 1−² ² 1 0 1
es diagonalizable pues tiene autovalores distintos. Puesto que en la práctica cualquier cálculo viene
afectado de error de redondeo, la matriz A, a la postre, será diagonalizable en la práctica. Lo de
Bueno casi es porque estas matrices diagonalizables que están cerca de una no diagonalizable
presentan los mismos problemas que las no diagonalizables. Por ello, en la práctica, sí se tienen en
cuenta las matrices no diagonalizables, pues aunque sean irreproducibles en un ordenador, modelan
bien el comportamiento de las matrices diagonalizables pero cercanas.
Así por ejemplo, efectuando cálculos en Matlab se tiene que
· ¸ · ¸ · ¸
100 1 100 106 1 106 1010 1 0
f l(A ) = , f l(A ) = , f l(A ) = ,
0 1 0 1 0 1

esto es, cuando n → ∞, f l(An ) coincide con la potencia n-ésima de una matriz diagolizable con un
único autovalor doble igual a 1, esto es, la identidad.
De hecho, si en Matlab ejecutamos
A=[1 1;0 1];[V,D]=eig(A);D A*V-V*D
las respuestas son

D =
1 0
0 1
ans =
1.0e-15 *
0 0.2220
0 0
esto es, D es una matriz diagonal con el único autovalor doble en la diagonal, y las columnas de V
son autovectores de A salvo errores del tamaño de la unidad de redondeo. Como en principio los
autovalores son todos proporcionales a v = [1, 0]T , las columnas V debe ser de la forma
· √ ¸
± 1 − ²2
,
±²
para ² del tamaño de la unidad de redondeo. De hecho, ejecutando
format short e; V
la respuesta es

V =

19
1.0000e+00 -1.0000e+00
0 2.2204e-16

esto es, las columnas de V , siendo independientes, son casi paralelas. La matriz V −1 será de tamaño
grande (piense en su cálculo por la Regla de Cramer), y por tanto la matriz V estará ° muy mal
°
acondicionada. Si calculamos una estimación de su número de condición, cond(V ) = kV k V −1 °,
°
format short; condest(V)
la respuesta es

ans =
9.0072e+15

Ello explica que, aunque a efectos numéricos A es una matriz diagonalizable con 1 como único
autovalor (i.e., la identidad), sin embargo An no tiene dicho comportamiento salvo para n → ∞,
pues ° °
°f l(An ) − An °
° ° ≤ C cond(V ).
°An °
Las matrices que tienen una base de autovectores en la que hay al menos dos de ellos que,
siendo independientes, son casi paralelos, se dicen fuertemente no normales, puesto que las matrices
normales son aquéllas que poseen una base ortonormal de autovectores Aparte de las matrices
simétricas, son también matrices normales las matrices antisimétricas y las matrices ortogonales.
La mala noticia es que las matrices fuertemente no normales existen, y están acechándole para
complicarle la vida en algún momento de su vida profesional (tal vez cuando haga el proyecto de
n de carrera). Le complicarán la vida porque, como acabamos de ver, en las matrices fuertemente
no normales, el número de condición tan alto de la matriz V de sus autovectores, hace irrelevante
cualquier información que se tenga sobre los autovalores de la misma. Esto suele plantear problemas,
por ejemplo, en Mecánica de Fluidos cuando el número de Reynolds es alto, o en problemas de
convección térmica ante fuertes corrientes convectivas. En fín, si tiene mala suerte, ya lo descubrirá.5

4. CUESTIONES Y PROBLEMAS
CUESTIONES

Ejercicio 1 Calcule el polinomio característico de la matriz


 
1 0 1
A =  0 1 1 ,
1 1 0

y obtenga sus autovalores y autovectores asociados.


5 Puedeencontrar más información sobre este tema en L. N. Trefethen & D. Bau, III, Numerical Linear Algebra
SIAM, Philadelphia, 1997.

20
Ejercicio 2 Sabiendo que los autovalores de la matriz simétrica
 
3 −1 3 1
 −1 3 1 3 
A=
 3
,
1 3 −1 
1 3 −1 3

son λ1 = 2, λ2 = −2, y λ3 = λ4 = 6, encuentre la matriz ortogonal Q de modo que QT AQ sea


diagonal.

Ejercicio 3 Aplique el método de la potencia a la matriz


· ¸
1 1
A= ,
1 1

dos veces, la primera partiendo del vector [−2, 0]T , y la segunda partiendo del vector [1, −1]T . ¾Son
esperables los resultados? ¾Están mal las explicaciones que hemos dado en la lección? ¾Es esperable
un comportamiento similar en la práctica si se parte de un vector aleatorio?

Ejercicio 4 Determine los valores del parámetro α para los que, partiendo de los vectores [1, 0]T
y [1, 1]T , converge el método de la potencia cuando se aplica a la matriz
· ¸
α 1
A= ,
1 α

Revise el ejercicio anterior.

Ejercicio 5 Aplique la iteración QR a la matriz


 
2 0 0
A =  0 0 1 .
0 1 0

¾Convergerá la sucesión de iterantes a una matriz triangular superior? ¾Qué autovalores tiene A?

Ejercicio 6 ¾Por qué en los ejemplos de la lección, cuando aplicamos el método de la potencia a la
matriz inversa resolvemos sistemas en vez de calcular la inversa? ¾Pór qué en esos mismos ejemplos
hacemos primero una descomposición LU y luego en cada paso resolvemos sistemas con L y con U
en lugar de resolver sistemas directamente con la matriz A?

Ejercicio 7 Aplique la iteración QR a matrices aleatorias antisimétricas de orden 4 (pruebe con


varias). Puede crear dichas matrices en Matlab con los comandos A=rand(4); A=(A-A')/2.
Convénzase de que la iteración no converge pero, que a partir de un punto determinado podemos
obtener sus autovalores.

Ejercicio 8 Obtenga la factorización de Schur de la matriz


· ¸
−1 2
.
3 0

21
Ejercicio 9 Idem con la matriz  
0 0 1
 −2 2 1 ,
4 −3 0
sabiendo que su polinomio característico es (x + 1)(x − 2)(x − 1).
Ejercicio 10 Sabiendo que los autovalores de
 
5 6 −4
A= 2 6 2 
−2 6 1
son λ1 = 9, λ2 = 6 y λ3 = −3, calcule una descomposición de Schur A = QT QT de la matriz A que
satisfaga que |t11 | ≥ |t22 | ≥ |t33 | .
Ejercicio 11 Obtenga mediante transformaciones de Householder la forma de Hessenberg de la
matriz  
2 6 7
A =  1 5 0 .
1 1 0
Ejercicio 12 Es posible que cuando estudió ecuaciones diferenciales aprendiese que dado el poli-
nomio p(x) = xm + αm−1 xm−1 + · · · + α1 x + α0 , se llama matriz compañera del mismo a
 
0 1 0 ... 0
 .. .. .. .. .. 
 . . . . . 
 
A =  0 ... 0 1 0 .
 
 0 ... 0 0 1 
−α0 . . . −αm−3 −αm−2 −αm−1
a) Utilizando el procedimiento de inducción, demuestre que el polinomio característico de A es p(x).
b) Pruebe también que si ξ es una raíz de dicho polinomio, entonces el vector v = [1, ξ, . . . , ξ m−1 ]T
es autovector asociado.
c) Pruebe que si ξ es raíz de p, entonces A − ξI siempre tiene rango m − 1, y por tanto, si p tiene
raíces múltiples, la matriz A nunca es diagonalizable.
Ejercicio 13 (Junio 2009) Para α con valores 0 < α ≤ 1, encuentre las matrices Q y T (con
|t1,1 | ≥ |t2,2 | ≥ |t3,3 | de la descomposicón de Schur A = QT QT de la matriz
 
3 0 2
A =  α 4 − 2α −α 
2 0 3
Ejercicio 14 Para α > 0 y β ∈ IR, calcular la forma de Hessenberg de la matriz
 
α α α α α
 α β β β β 
 
A=
 α β β β β 

 α β β β β 
α β β β β

22
Ejercicio 15 Demuestre que la matriz tridiagonal de orden n formada por cuatros en la diagonal
principal y unos en las dos subdiagonales es simétrica denida positiva y su determinante es menor
o igual que 6n .

Ejercicio 16 Para α con valores 0 < α ≤ 5, encuentre las matrices Q y T (con |t1,1 | ≥ |t2,2 | ≥ |t3,3 |
de la descomposicón de Schur A = QT QT de la matriz
 
4 0 4
A =  2 − 2α 6 − α −4 + 2α 
3/2 0 3

Ejercicio 17 Sea Q una matriz m × n con m > n y tal que QT Q es la matriz identidad de orden
n. Calcule los autovalores y autovectores de QQT .

23
PROBLEMAS

Problema 1 Se considera la matriz


 
5 −5 6 1
1  0 10 −4 4 
A=  .
2  −1 −1 8 5 
−5 −5 10 7

1. Diseñe una función de Matlab que ejecute el método de la potencia. Los argumentos de
entrada deben ser, además de la matriz, el vector inicial, la toleracia T OL para la cual la
iteración ¯se detiene en¯ el¯ momento
¯ en que dos aproximaciones sucesivas, λ(n) y λ(n+1) satisfa-
gan que ¯λ (n+1)
− λ ¯/¯λ
(n) (n+1) ¯ < T OL, y el número máximo de iteraciones permitidas. Los
argumentos de salida¯ deben ser el¯ autovalor
¯ ¯ calculado y el número de iteraciones realizadas,
y el último valor de λ ¯ (n+1) (n) ¯ ¯ (n+1) ¯
−λ / λ

2. Para un número máximo de iteraciones permitidas igual a 10, 20 y 30, aplique la función
diseñada en el apartado anterior a la matriz A, con T OL = 10−6 y vector inicial [1, 1, 1, 1]T .
Idem con [−1, 1, 0, 0]. Describa y justique las diferencias observadas.

3. Mediante el comando eig, calcule los autovalores de A − 2I . Convergerá el método de la


potencia con esta nueva matriz?

4. Repita el apartado 2 pero en lugar de tratar de aproximar el autovalor de módulo máximo de A,


hágalo para el de módulo mínimo de A − 2I . Para ello, modique la función del apartado 1.

24
Problema 2 El método de la potencia sólo es efectivo cuando hay un autovalor de módulo mayor
que los demás. Si en una matriz real el autovalor de mayor mayor módulo es complejo, se puede
modicar el método de la potencia para que proporcione una aproximación a dicho autovalor.
1. Pruebe que si λ es autovalor complejo de A, x un autovector asociado y el polinomio real
p(t) = t2 + βt + γ tiene por raíces λ y su conjugada λ entonces se satisface que
A2 x + βAx + γx = 0, (4)
y que si y es autovector no nulo de A asociado a otro autovalor µ 6= λ entonces A2 y+βAy+γy 6=
0.
2. Basándose en (4), se tiene el siguiente algoritmo para una matriz A de dimensiones m × m
partiendo de u(0) ∈ Rm ,
para n = 0, 1, . . . ,
v (n) = Au(n) ,
w(n) = Av (n) .
Obtener la solución x(n) = [β (n) , γ (n) ]T ∈ R2 del problema de mínimos cuadrados
B (n) x(n) = −w(n) ,
donde B (n) es la matriz de dimensiones m × 2 cuyas dos columas son v (n) y u(n) ,
B (n) = [v (n) , u(n) ].
λ(n) =raiz de p(t) = t2 + β (n) t + γ (n) con parte imaginaria de signo opuesto a β (n) .
° °
u(j+1) = w(n) /°w(n) °.
Si λ y λ tienen módulo estrictamente mayor que el resto de los autovalores de A, entonces
λ(n) → λ cuando n → ∞.
Elabore una función de Matlab que ejecute este algoritmo. Los argumentos de salida deben
ser el autovalor y el número de iteraciones realizadas, y los de entrada deben ser A, el vector
inicial u(0) , el número máximo de iteraciones a realizar, y la tolerancia T OL para la que la
iteración se detiene si dos estimaciones consecutivas del autovalor distan menos que T OL.
Nota: Para resolver el problema de mínimos cuadrados puede emplear la orden \ de Matlab.
3. Aplique la función desarrollada en el apartado anterior a la matriz
 
2,5 −0,5 4 −1
 −2,5 2,5 2 −1 
A= 
,
1 2 1 −1 
0,5 0,5 1 4
con las siguientes especicaciones. el vector de partida es [1, 1, 1, 1]T , la tolerancia debe ser
menor que 10−6 , y el número máximo de iteraciones es 10, 20, 40. Escriba los valores obtenidos
de λ y de las iteraciones. ¾Qué conclusiones se pueden sacar cuando el algoritmo devuelve un
valor de iteraciones igual al máximo permitido?
4. ¾Qué ocurre si se repite el proceso anterior esta vez partiendo del vector [1, −1, 0, −1]T ?.
Describa y justique las diferencias observadas.

25
Problema 3 Se consideran el par de matrices (A, M ) donde
   
0 −5 8 3 5 1 −1 −1
 −1 4 0 3   1 5 −1 −1 
A=
 −1 −1 5
, M = . (5)
3   −1 −1 6 0 
−5 −5 10 6 −1 −1 0 6
Dado un par de matrices cuadradas, A y M , se llama autovalor generalizado de dicho par a cualquier
escalar λ para el que existe un vector no nulo v tal que Av = λM v . Los autovalores de una matriz
son un caso particular de autovalores generalizados (correspondientes al par (A, I)). Observe que
si M es invertible, entonces λ es autovalor generalizado del par (A, M ) si y sólo si λ es autovalor de
M −1 A.

1. Diseñe una función de Matlab que calcule el autovalor generalizado de mayor módulo de
un par (A, M ), mediante la aplicación del método de la potencia a una matriz adecuada.
Los argumentos de salida deben ser el autovalor y el número de iteraciones realizadas, y en
los de entrada deben estar A y M . Aplíquelo al par (A, M ) dado en (5) con las siguientes
especicaciones: el vector de partida es [1, 2, 3, 4]T , la tolerancia (diferencia entre el valor
absoluto de dos estimaciones sucesivas del autovalor generalizado) debe ser menor que 10−6 ,
y el número máximo de iteraciones es 10, 20, 40. Escriba los valores obtenidos de λ y de
las iteraciones. ¾Qué conclusiones se pueden sacar cuando el algoritmo devuelve un valor de
iteraciones igual al máximo permitido?

2. ¾Qué ocurre si se repite el proceso anterior esta vez partiendo del vector [−1, 1, 0, 0]T ?. Des-
criba y justique las diferencias observadas.

3. Diseñe una función de Matlab similar a la del apartado 1 pero implementando el método
de la potencia inversa para encontrar el autovalor generalizado de módulo más pequeño del
par (A, M ). Pruébelo con el par (A − 1,2M, M ). ¾Cuál es pues el autovalor generalizado de
módulo más pequeño de dicho par? Escriba también la función de Matlab diseñada.

4. Calcule con 6 cifras decimales correctas el valor de


(N )
lı́m λmin ,
N →∞

(N )
donde λmin es el autovalor generalizado de módulo más pequeño del par (A(N ) , B (N ) ) donde
AN y BN son las matrices tridiagonales de orden N − 1,
   
2 −1 0 ... ... 0 4 1 0 ... ... 0
 . .   . .. 
 −1
 2 −1 . . .. 

 1
 4 1 .. . 

 .. .. .. .. .
.   .. .. .. .. . 
 0 . . . . .  1  0 . . . . .. 
A(N ) = N  . .  , M (N )
=  .
 .. . . . . . . . . . . . 0  6N  ... .. .. .. ..
. . . . 0 
   
 . .   .. 
 0 . −1 2 −1   0 . 1 4 1 
0 ... ... 0 −1 2 0 ... ... 0 1 4
Describa cómo lo ha hecho y las instrucciones de Matlab empleadas.

26
Problema 4 (Septiembre 2009) La iteración ortogonal es una generalización del método de la
potencia y sirve para calcular los autovalores de mayor módulo de una matriz. Si en el método de
la potencia se parte de un vector v de norma 1, y se repite

w ← Av, λ ← v T w, v ← w/ kwk ,

(esta variante es equivalente a la explicada en el curso) hasta que el error relativo de dos valores de λ
consecutivos sea menor que una tolerancia jada de antemano o se supere un número de iteraciones
prejado, en la iteración ortogonal para calcular los p autovalores de mayor módulo se parte de una
matriz V de p columnas, ortogonales entre sí y de norma 1 (por ejemplo, p columnas distintas de
la identidad) y se repite

W ← AV,
C ← V T W, e ← autovalores de C ,
V ← Q, donde W = QR es descomp. QR reduducida de W ,

hasta que el error relativo en la norma euclídea de dos valores consecutivos de e sea menor que una
tolerancia jada de antemano (o se supere el máximo de iteraciones prejado).
1. Diseñe una función de Matlab (o modique la hecha en su día para el método de la potencia)
que implemente la iteración ortogonal. Los argumentos de entrada deben ser la matriz A, la
matriz V inicial, la tolerancia T OL para la cual la iteración se detiene
° en el momento° en que
dos aproximaciones consecutivas, digamos e(n) y e(n−1) , satisfagan que °e(n) − e(n−1) ° /ke(n) k <
T OL, y el número máximo de iteraciones permitidas. Los argumentos de salida deben ser el
vector de autovalores
° (n) e (n−1) ° calculado, el número de iteraciones realizadas y el último valor de
°e − e ° /ke(n) k. Escriba el listado en la hoja de respuestas.
Nota. En cada iteración, después de calcular el vector e y antes de calcular el error, debe
ordenar las componentes de e con el comando e=sort(e,'descend'). La descomposición
QR reducida de una matriz rectangular W se calcula con el comando [Q,R]=qr(W,0). Las
p primeras columnas de la identidad de tamaño m se obtienen con el comando eye(m,p).

2. Para un número máximo de iteraciones permitidas igual a 10, 20 y 30, aplique la función
diseñada en el apartado anterior a la matriz
 
5 −5 6 1
 0 10 −4 4 
A=  −1 −1
.
8 5 
−5 −5 10 7

con T OL = 10−6 y matriz inicial igual a las p primeras columnas de la identidad, para p = 1
y p = 3. Escriba los autovalores obtenidos (bastan las cuatro primeras cifras signicativas) en
su hoja de respuestas.

3. Para J = 800, considere la matriz A simétrica de dimensiones (J −1)×(J −1) cuyos elementos
son nulos salvo, por cada la, i = 1, . . . , J − 1, ai,i−50 = −1, ai,i = 1,3, ai,i+50 = −1. Calcule
con 6 cifras signicativas correctas los 50 de mayor módulo, λ1 ≥ λ2 ≥ . . . ≥ λ50 , y escriba en
su hoja de respuestas únicamente el primero λ1 y el λ50 .

27
4. Repita el punto anterior pero con J = 2400.

Problema 5 Muchos comandos de Matlab son lineales (su valor en una combinación lineal de
vectores es la combinación lineal de los valores de dicho comando en cada uno de los vectores). Por
eso, su valor es equivalente al producto por una matriz, esto es comando(x) y A ∗ x coinciden (salvo
cantidades del orden del error de redondeo), donde A es la matriz cuyas columnas son el valor de
comando en las columnas de la matriz identidad. Dicha matriz recibe el nombre de matriz asociada
al mencionado comando y sus autovaloresse denominan los autovalores del comando. Para vectores
x de longitud N , considere el siguiente comando:

real(fft(cumsum(x))) -sum(x))/sqrt(length(x))

1. Para N = 4, escriba los autovalores del comando anterior con tres cifras signicativas.

2. Para N = 4096, calcule el autovalor dominante del comando que nos ocupa con seis cifras
signicativas correctas.
Nota: No intente construir la matriz asociada al comando pues se quedará sin memoria.

Problema 6 Considere la matriz A simétrica de dimensiones J × J dada por (J > 1)


· ¸
αJ rT
A=
r T

donde α = 10, r = [1, 1/2, ..., 1/(J − 1)]T y T es la matriz (J − 1) × (J − 1) cuyos elementos son
nulos salvo los que están en torno a la diagonal principal que toman los valores
1 2 16 30 16 1
ti,i−2 = J , ti,i−1 = − J 2 , ti,i = J 2 , ti,i+1 = − J 2 , ti,i+2 = J 2 ,
12 12 12 12 12
para cada i = 1, ..., J − 1.

1. Para J = 103 , 104 , 105 , calcule la solución de Ax = b donde b es un vector de unos y escriba
las ocho primeras cifras signicativas de xJ/2 .

2. Para J = 103 , 104 , 105 , calcule con ocho cifras signicativas correctas el autovalor de módulo
más pequeño de A.

28

Das könnte Ihnen auch gefallen