You are on page 1of 3

148

5.7.2.

Preparaci
on a forma de Hessenberg.

Definici
on 5.7.4. Decimos que una matriz H es Hessenberg superior si hij = 0 para
i j + 2.
Una matriz Hessenberg superior

tiene la forma

Observemos que si es simetrica, lo que tenemos es una matriz tridiagonal.


Teorema 5.7.5. Sea A una matriz de orden n. Entonces A es semejante a una matriz
Hessenberg superior mediante una matriz ortogonal.
Demostraci
on. La prueba consiste
de Householder sobre las co en aplicar matrices

lumnas de la matriz. Sea A = a1 a2 . . . an . Consideremos el vector a Rn1


formado por las n 1 u
ltimas entradas de a1 . Entonces podemos encontrar H1 matriz
de Householder tal que

1
a21

.. 0
H . = .. .
.
an1
0
Consideremos entonces la matriz de orden n definida por

1 0t
U1 =
.
0 H1
Es una matriz ortogonal y U11 = U1 . Entonces

a11
1

A1 = U11 AU1 =
0

...
...

...
.

...

El proceso contin
ua si tomamos ahora las n 2 u
ltimas componentes de la segunda columna de A1 , y calculamos una matriz de Householder H2 correspondiente. Generamos

1 0 0t
0 1 0
.
U2 =
0 0

0 0 H2

Autovalores y autovectores (II).

149

El resultado se sigue por induccion.


La pregunta natural es para que queremos la forma de Hessenberg de una matriz.
La respuesta es que el algoritmo QR trabaja muy rapido si la matriz tiene ya esta
forma. Hay una cuestion a aclarar: el primer paso del algoritmo QR sobre una matriz
de Hessenberg sera rapido, pero que ocurre con los restantes? Afortunadamente, el
algoritmo QR genera en cada paso una matriz de Hessenberg si la de entrada lo es.
Sea H0 = H en forma de Hessenberg. Calculamos su descomposicion QR H0 = Q0 R0 .
Entonces

Q0 =

H0 R01

...

0
...

0 ...
0

0 0 ...
0

Entonces Q0 es una matriz de Hessenberg. A

...
0 ...

A1 = R0 Q0 =
0 0 ...

0 0 ... 0

...
...

0 ...

0 ... 0

continuacion,

0 0

...
...

...

...

es tambien una matriz de Hessenberg.


Ejemplo 5.7.6. Consideremos el ejemplo habitual.
restart:with(LinearAlgebra):
A:=Matrix([[-261.,209,-49],[-530,422,-98],[-800,631,-144]]):
> H:=HessenbergForm(A);
H := [-261. , -74.5804124380298960 , -201.295211270843083]
[959.635347410671328 , 274.049082419372382 , 729.017482897165904]
[0. , .0174828971657632338 , 3.95091758062778808]
> alpha:=H[3,3]:(Q,R) := QRDecomposition(H - alpha * IdentityMatrix(3)):
H:=R . Q + alpha * IdentityMatrix(3);
H := [9.10010121669376026 , 300.876444109636452 ,
1245.41051413481638]
[.0182535169242086272 , 3.95473540896924946 ,

150

.00704758674504200010]
[0. , -.0138266050669163288 , 3.94516337433716080]
> alpha:=H[3,3]:(Q,R) := QRDecomposition(H - alpha * IdentityMatrix(3)):
H:=R . Q + alpha * IdentityMatrix(3);
H := [10.1654845810670125 , 317.136597316412292 ,
-1241.35641264204310]
[-.00373892431728781476 , 2.83170323195413598 ,
4.38831347220778766]
[0. , -.000754947735772917482 , 4.00281218697902386]
> alpha:=H[3,3]:(Q,R) := QRDecomposition(H - alpha * IdentityMatrix(3)):
H:=R . Q + alpha * IdentityMatrix(3);
H := [9.97307585318184132 , 316.183279338380828 ,
1241.60311265860469]
[.000593782523774890269 , 3.02691605183333445 ,
-3.63592841269913070]
[
-5
]
[0. , .216301423997062392 10
, 4.00000809498499788]
>
Si, ademas, la matriz A es simetrica, las matrices de salida del algoritmo QR tambien
lo son, y si la tenemos en forma de Hessenberg sera tridiagonal. En este caso el algoritmo
QR es del orden O(n). La forma practica del algoritmo QR se puede ver en el apendice,
donde se incluyen todas estas modificaciones para acelerar.
Nota 5.7.7. Convergencia: no siempre. Ver Ciarlet.