Material QR via Householder

Anuncio
Sobre la Factorización QR usando matrices de
Householder
Elaborado por
M. Monsalve
c
February
4, 2015
Conceptos previos
Definición: Un conjunto de vectores {q1 , q2 , · · · qm } donde qi ∈ Rn es un
conjunto ortonormal si satisface
0 si i 6= j
< qi , qj >=
1 si i = j
Definición: Sea Q ∈ Rn×n . Se dice que Q es ortogonal Q−1 = QT . Observe
que las columnas (filas) de esta matriz forman un conjunto ortonormal.
Propiedades:
1. QT Q = QQT = I
2. kQxk2 = kxk2 , ∀x ∈ Rn
3. El producto de matrices ortogonales es una matriz ortogonal.
Factorización QR
La idea es, dada A ∈ Rn×n , hallar una matriz ortogonal Q y una matriz R
triangular superior, tal que A = QR. Al igual que el proceso de eliminación
Gaussiana, la matriz A se multiplicará por matrices ortogonales hasta obtener
la matriz R, esto es
Qn−1 Qn−2 · · · Q2 Q1 A = R
|
{z
}
Q−1
Q−1 A = R
QQ−1 A = QR
A = QR
1
(1)
Note que si Q−1 = Qn−1 Qn−2 · · · Q2 Q1 entonces
−1
−1
−1
T T
T
T
Q = (Qn−1 Qn−2 · · · Q2 Q1 )−1 = Q−1
1 Q2 · · · Qn−2 Qn−1 = Q1 Q2 · · · Qn−2 Qn−1
Esquema de la factorización QR
Primer paso: Es necesario hallar

α1
0


Q1 A =  0
 ..
.
0
Q1 tal que

... ∗
. . . ∗

. . . ∗
 = A1
. . . .. 
.
∗ ∗ ... ∗
∗
∗
∗
..
.
∗
∗
∗
..
.
Segundo paso: Es necesario hallar Q2

α1
0


Q2 A1 = Q2 Q1 A =  0
 ..
.
0
tal que
∗
α2
0
..
.
0

... ∗
. . . ∗

. . . ∗
 = A2
. . .. 
. .
∗ ... ∗
∗
∗
∗
..
.
siguiendo con esta metodologı́a es posible hallar
tales que

α1 ∗ ∗ . . .
 0 α2 ∗ . . .


Qn−1 · · · Q2 Q1 A =  0 0 α3 . . .
 ..
..
.. . .
.
.
.
.
0 0 0 ...
n − 1 matrices ortogonales

∗
∗

∗
 = An−1 = R
.. 
.
∗
Transformada de Householder
Una forma de obtener las matrices ortogonales necesarias para realizar la factorización QR de una matriz A ∈ Rn×n dada , es a través del uso de las
matrices de Householder.
Definición: Dado u ∈ Rn . Una matriz de Householder, denotada por H, se
define como
2uut
H = In − t ,
uu
donde In es la matriz identidad de orden n. Las matrices de Householder
también son conocidas con el nombre de Reflectores de Householder. Para
ilustrar este hecho, observe que en la Figura, H es una matriz de Householder
Figure 1: Reflector de Householder
generada por el vector u ∈ R3 y P es el subespacio conformado por todos los
vectores ortogonales al vector u es decir: P = {y ∈ R3 : ut y = 0}. Al aplicar
la matriz H sobre algún vector x se obtiene un vector y = Hx que es el reflejo
de x a través de P .
Propiedades: Asegurase que Ud sabe probar formalmente TODAS estas
propiedades
1. H es ortogonal.
2. H es simétrica.
3. H −1 = H.
4. H 2 = In .
5. Hu = −u
6. ∀y ∈ P : Hy = y.
7. kHxk2 = kxk2
8. Producto matriz vector
t 2uut
2uut x
2u x
Hx = In − t
x=x− t =x−
u = x − βu,
uu
uu
ut u
donde β =
2ut x
ut u
A continuación se enuncia un Lema que será de utilidad para emplear las
matrices de Householder para obtener la factorización QR de una matriz dada.
LEMA
Sean a, b ∈ Rn , tales que kak2 = kbk2 . El vector u = a − b
genera una matriz de Householder H tal que Ha = b. La última página
de este material contiene una explicación gráfica de este Lema.
Para la factorización QR mediante matrices de Householder se require la
aplicación de este Lema en un caso particular muy especial: Considere
al vector b = αe1 donde e1 es el canónico de orden n y el vector a es
cualquiera, es decir, queremos aplicar el Lema para hallar H tal que
Ha = αe1 .
Para satisfacer la hipótesis del Lema debe ocurrir que kak = kαe1 k, es
decir α debe ser tal que,
kak = kαe1 k = |α|ke1 k = |α|,
(2)
entonces u = a − αe1 . De (2) se desprende que α bien puede ser igual a
kak o igual a −kak, con lo cual el vector u puede definirse de dos formas
u = a − kake1
u = a + kake1
si se usa
si se usa
α = kak
α = −kak.
(3)
(4)
Note que si la primera componente de a es negativa conviene usar el u
definido por (3) para ası́ evitar una resta que necesariamente ocurrirı́a
si se usa la ecuación (4) para obtener u. Mientras que si la primera
componente de a es positiva conviene usar el u definido por (4), pues si
se usase (3) estarı́amos realizando una resta: Recuerde que siempre es
una buena práctica evitar las restas.
De lo anterior se concluye que, dependiendo del signo de la primera
componente de a, se puede escoger una expresión para u que evite las
restas. Dicha expresión es:
u = a + signo(a1 )kake1 ,
(5)
donde a1 es la primera componente del vector a.
Matrices de Householder y Factorización QR
Las matrices ortogonales Qi con i = 1, 2, · · · (n − 1) requeridas en la expresión
(1) serán matrices de Householder. Es por ello que en esta sección la ecuación
(1) se reescribirá como
Hn−1 Hn−2 · · · H2 H1 A = R,
pues recordemos que las Hi además de ser ortogonales son simétricas.
Como se mencionó anteriormente, es fácil ver que este proceso de factorización, requiere de n − 1 pasos para completarse. Veamos algunos de ellos.
Primer paso:
Es necesario hallar H1 tal que

α1
0


H1 A = H1 [a1 a1 · · · an ] = [H1 a1 H1 a2 · · · H1 an ] =  0
 ..
.
0

... ∗
. . . ∗

. . . ∗
 = A1
. . .. 
. .
∗ ∗ ... ∗
∗
∗
∗
..
.
∗
∗
∗
..
.
donde ai con i = 1, 2, · · · n representan las columnas de la matriz A.
Importante!!
b1 ∈ R(n−1)×(n−1) a aquella submatriz
Voy a denotar por A
de A1 que se obtiene al eliminar la primera fila y la primera columna de
b1 se denotarán por b
A1 . Las columnas de A
ai . Esto será de utilidad en
el segundo paso.
Observe que H1 debe ser construida con un objetivo muy especial, H1 debe
ser tal que
 
α1
0
 
 
H1 a1 =  0 
 .. 
.
0 n×n
o lo que es lo mismo H1 debe ser tal que
H1 a1 = α1 e1 ,
donde e1 es el primer canónico de tamaño n. Aquı́ podemos aplicar el Lema
anteriormente descrito. Para lograr lo anterior sencillamente debemos tomar
u1 = a1 + signo(a11 )ka1 k2 e1 . Recuerde que a11 denota la primera componente
de a1 .
Importante!!
Para no recargar la notación renombremos a ai := H1 ai
con i = 1, 2, . . . , n. Es decir, ai hará referencia a H1 ai y NO a la columna
ai de la matriz A original.
Segundo paso:
Es necesario hallar H2 ∈ Rn×n tal que

α1 ∗
 0 α2


H2 A1 = H2 [a1 a2 · · · an ] = [H2 a1 H2 a2 · · · H2 an ] =  0 0
|{z}
 ..
..
.
paso1
.
0 0

... ∗
. . . ∗

. . . ∗
 = A2
. . .. 
. .
∗ ... ∗
∗
∗
∗
..
.
donde ai con i = 1, 2, · · · n representan las columnas de la matriz A1 . Note que
a1 = (α1 , 0, · · · , 0)T , con lo cual H2 debe diseñarse tal que NO modifique la
primera columna de A1 para no perder los ceros colocados en el primer paso.
Más aún, si H2 tampoco modifica la primera fila de A1 , entonces es posible
b 2 ∈ R(n−1)×(n−1) tal que
hallar H
 
α2
0
 
 
b
H2b
a1 =  0 
,
 .. 
.
0 (n−1)×(n−1)
b1 (Ver Paso 1, para recordar la definición
donde b
a1 es la primera columna de A
b1 ). Dicho de otra forma, es posible usar el procedimiento usado en el Paso
de A
b 2 tal que
1 para hallar H
b 2b
H
a1 = α 2 e 1 ,
b2
donde e1 es el primer canónico de tamaño n − 1. Para ello basta formar H
usando el vector u2 = b
a1 +signo(b
a11 )kb
a1 ke1 . Finalmente, la matriz H2 buscada
es de la forma


1 0 0 ... 0
0




 = A2
b
H2 = 0
H2



0
Es importante resaltar que H2 es una matriz de Householder que se obtiene
mediante el vector u = [0, 0, uT2 ]T
Importante!!
Nuevamente, para no recargar la notación renombremos
a ai := H2 ai con i = 2, . . . , n. Es decir, ai hará referencia a H2 ai y NO
a la columna ai de la matriz A original.
Paso k-ésimo:
Observe que de los pasos anteriores se tienen H1 , H2 , . . . Hk−1 tales que
Hk−1 Hk−2 · · · H1 , H2 = Ak−1 ,
donde Ak−1 tiene la siguiente

α1
0

0
.
.
.
Ak−1 = 
0

0
.
 ..
0
forma
∗ ∗
α2 ∗
0 α3
..
..
.
.
0 0
0 0
..
..
.
.
0
0
...
...
...
..
.
∗
∗
∗
..
.
...
...
αk−1
0
..
.
∗ ...
∗ ...
∗ ...
.. ..
. .
∗ ...
∗ ...
..
. ...
0
∗ ...
...
...

∗
∗

∗
.. 

.

∗

∗
.. 
.
∗
bk−1 ∈ Rq×q aquella submatriz de Ak−1 que no posee
Sea q = n − (k − 1) y sea A
las (k − 1) primeras filas ni las (k − 1) primeras columnas de Ak−1 . Ası́ mismo,
bk−1 se denotarán por b
las columnas de A
ai . Note que b
ai ∈ Rq . El objetivo es
hallar una matriz de Householder Hk tal que


α1 ∗ ∗ . . .
∗
∗ ... ∗
 0 α2 ∗ . . .
∗
∗ . . . ∗


 0 0 α3 . . .

∗
∗
.
.
.
∗
.
..
.. . .
..
..
.. .. 
.

.
.
.
.
.
. .
.
Hk Ak−1 = 

 0 0 0 . . . αk−1 ∗ . . . ∗


0
αk . . . ∗ 
 0 0 0 ...
.
..
..
..
..
.
 ..
.
. . . . .. 
.
. ...
0 0 0 ...
0
0 ... ∗
Siguiendo con la filosofı́a de que Hk no debe modificar los ceros colocados en
los (k − 1) pasos anteriores, Hk debe ser de la forma
I(k−1) 0(k−1)×q
Hk =
,
bk
0q×(k−1)
H
b k ∈ Rq×q es tal que
donde H
bkb
H
a1 = αk e1 ,
bk−1 .
y el vector b
a1 es la primera columna de A
Al finalizar este paso, y recordando lo discutido en relación a la factorización QR se tiene que
Hn−1 Hn−2 · · · H2 H1 A = R
{z
}
|
Q−1
Q−1 A = R
A = QR
Note que Q−1 = Hn−1 Hn−2 · · · H2 H1 es una matriz ortogonal pues ella es el
producto de n − 1 matrices ortogonales de Householder. Más aún
Q =
=
=
=
(Hn−1 Hn−2 · · · H2 H1 )−1
−1
−1
Hn−1
H1−1 H2−1 · · · Hn−2
T
T
H1T H2T · · · Hn−2
Hn−1
H1 H2 · · · Hn−2 Hn−1 ya que cada Hi es simétrica
Note que el vector u es el vector x−y. Por lo tanto,
usando u = x − y se puede hallar una matriz de
Householder tal que Hx = y
Inicialmente se tienen dos vectores x e y de igual
tamaño, es decir kxk2 = kyk2
Dados esos vectores es posible definir un plano P
(plano azul) tal que x sea el reflejo de y a través
de P (y viceversa).
Una vez definido el plano P , se puede encontrar
un vector u (vector verde) ortogonal al plano P .
Ejemplo


−2 5
7 4
 7 1 −10 1

A=
 4 8 −4 9
3 12 1 8
Primer paso:
a1 = [−2, 7, 4, 3]T .
ka1 k = 8.8318.
u1 = a1 − ka1 k[1, 0, 0, 0]T = [−10.83, 7, 4, 3]T


−0.2265 0.7926
0.4529
0.3397
 0.7926
2u1 uT
0.4878 −0.2927 −0.2195

H1 = I4 − T 1 = 

0.4529 −0.2927 0.8327 −0.1254
u1 u1
0.3397 −0.2195 −0.1254 0.9059


ka1 k 7.3598 −10.9831 6.6804
 0
−0.5250 1.6215 −0.7322

A1 = H1 A = 
 0
7.1286
2.6409
8.0102 
0
11.3464
5.9807
7.2576
Segundo paso:


−0.5250 1.6215 −0.7322
b1 =  7.1286 2.6409 8.0102 
A
11.3464 5.9807 7.2576
b
a1 = [−0.5250, 7.1286, 11.3464]T .
kb
a1 k = 13.4102.
u2 = b
a1 − kb
a1 k[1, 0, 0, ]T = [−13.9352, 7.1286, 11.3464]T
b 2 = I3 −
H

1
0
H2 = 
0
0


−0.0392 0.5316
0.8461
0.7281 −0.4328
=  0.5316
0.8461 −0.4328 0.3111

0
0
0
−0.0392 0.5316
0.8461 

0.5316
0.7281 −0.4328
0.8461 −0.4328 0.3111
2u2 uT2
uT2 u2


ka1 k 7.3598 −10.9831 6.6804
 0
kb
a1 k
6.4006
10.4274 

A2 = H2 A1 = H2 H1 A = 
 0
0
0.1961
2.3015 
0
0
2.0894 −1.8288
Tercer paso:
0.1961
2.3015
b2 =
A
2.0894 −1.8288
e
a1 = [0.1961, 2.0894]T .
ke
a1 k = 2.0986.
u3 = e
a1 + ke
a1 k[1, 0, ]T = [2.2947, 2.0894]T
2u3 uT3
−0.0935 −0.9956
b
=
H3 = I2 − T
−0.9956 0.0935
u3 u3

1
0
H3 = 
0
0

0
0
0

1
0
0

0 −0.0935 −0.9956
0 −0.9956 0.0935


ka1 k 7.3598 −10.9831 6.6804
 0
kb
a1 k
6.4006
10.4274 
=R
A3 = H3 A2 = H3 H2 H1 A = 
 0
0
−ke
a1 k
1.6057 
0
0
0
−2.4623
Matriz Q


−0.2265 0.4971 −0.6342 −0.5472
 0.7926 −0.3604 −0.4823 −0.0966

H1 H2 H3 = Q = 
 0.4529
0.3480
0.5971 −0.5633
0.3397
0.7084 −0.0936 0.6116
Descargar