Cap´ıtulo 6 Proyecciones y bases ortonormales

Anuncio
Capı́tulo 6
Proyecciones y bases ortonormales
6.1.
Introducción
Este es el primero de los dos capı́tulos dedicados a la factorización QR y a
la solución del problema de mı́nimos cuadrados. La factorización QR es una manera matricial de presentar el ya conocido procedimiento de ortonormalización de
Gram-Schmidt. No perseguimos volver a presentar este procedimiento sino mostrar
que hay varias formas de conseguir bases ortonormales que producen algoritmos
con distintas propiedades. En este capı́tulo nos centraremos en algoritmos ligados
al método de Gram-Schmidt y en el siguiente estudiaremos las reflexiones de Householder. Veremos que los principios que fundamentan ambos tipos de algoritmos
son completamente diferentes.
Debemos recordar que, básicamente, el método de ortonormalización de GramSchmidt consiste en lo siguiente: Dado un subespacio del que se conoce una base
ortonormal y un vector que no está en el subespacio, se proyecta éste sobre el ortogonal de aquél a fin de conseguir una base ortonormal para un subespacio de
dimensión una unidad mayor. Procediendo recursivamente desde un vector dado se
puede conseguir una base ortonormal de todo el espacio. Todo este procedimiento
121
122
Proyecciones y bases ortonormales
está basado en el concepto de proyección ortogonal que repasamos brevemente a
continuación, para volver luego sobre dos algoritmos diferentes ligados, ambos, al
método de Gram-Schmidt.
6.2.
Proyecciones
Comenzamos definiendo lo que entendemos por proyección:
Definición 6.1 Una matriz P P Cnn se dice que es una proyección si es una
matriz idempotente. Es decir, si P 2 P .
Algunas consecuencias inmediatas de esta definición son las siguientes
Proposición 6.2 Si P P Cnn es una proyección también lo es In P . A ésta se
le llama proyección complemetaria de P y cumple que Ker P ImpIn P q y
KerpIn P q Im P .
Demostración.- En primer lugar pIn P q2
P P . Ası́ pues, In P es una proyección.
2
In 2P
P2
In P
porque
Además, y P ImpIn P q ô pIn P qx y para algún x. Y de aquı́, P y P pIn P qx pP P 2 qx pP P qx 0, lo que indica que y P Ker P . Recı́procamente,
y P Ker P ñ P y 0 ñ pIn P qy y ñ y P ImpIn P q.
La identidad KerpIn P q Im P se demuestra cambiando los papeles de In P
y P.
Proposición 6.3 Si P
P Cnn es una proyección entonces Im P ` Ker P Cn
Demostración.- En primer lugar, la suma Im P Ker P es directa porque, de
acuerdo con la Proposición anterior, Im P KerpIn P q y si x P KerpIn P qX Ker P
entonces pIn P qx 0 y P x 0. De aquı́, x 0.
6.3 Proyecciones ortogonales
123
Por otra parte Im P Ker P „ Cn . Y si x P Cn es un vector cualquiera entonces
x P x pIn P qx. Pero P x P Im P y pIn P qx P ImpIn P q Ker P .
Esta simple Proposición tiene una consecuencia importante: si P es una proyección, ésta determina dos subespacios mutuamente suplementarios: Im P y Ker P . El
recı́proco también es cierto. Si S1 y S2 son subespacios de Cn tales que S1 ` S2 Cn
entonces hay una proyección P tal que S1 Im P y S2 Ker P . En efecto, siendo
S1 ` S2 Cn , cualquier matriz queda completamente determinada por su acción
sobre los vectores de S1 y S2 . En concreto, si definimos P P Cnn como la matriz
que cumple
"
x si x P S1
Px 0 si x P S2
resulta que en cualquier base de Cn obtenida como reunión de bases de S1 y S2 , la
matriz de P , como aplicación lineal, es
P
Ip 0
0 0
siendo p dim S1 . En cualquier otra base de Cn , la matriz serı́a semejante a ésta.
Es claro que P es una proyección y que Im P S1 y Ker P S2 . Es la proyección
sobre S1 a lo largo de (o paralelamente a) S2 . Ası́ pues
Conclusión: Si P es una proyección, proyecta Cn sobre Im P a lo largo de
Ker P .
6.3.
Proyecciones ortogonales
Como su nombre indica las proyecciones ortogonales son las que proyectan a lo
largo del ortogonal.
Definición 6.4 Una proyección P
P Cnn es ortogonal si Ker P pIm P qK.
Es fácil demostrar que para cualquier matriz A P Cmn , pIm AqK Ker A . En
efecto, x P Ker A ô A x 0 ô x A 0 ô x Ay 0 para todo y P Cn ô x K z
para todo z P Im A ô x P pIm AqK .
124
Proyecciones y bases ortonormales
Proposición 6.5 Una proyección P es ortogonal si y sólo si P
hermı́tica).
P (i.e., es
Demostración.- En primer lugar, si P es proyección también P lo es. Ahora,
si P es una proyección ortogonal entonces Ker P pIm P qK KerpP q. También se
cumple que Im P ImpP q. Ası́ es,
pIm P qK KerpP q Ker P pIm P qK,
por definición de proyección ortogonal. Como para cualquier subespacio de Cn ,
pS KqK S, conlcuı́mos que Im P Im P .
Ahora bien, dos aplicaciones lineales que coinciden sobre dos subespacios suplementarios son la misma. Como P x P x x para x P Im P ImpP q y
P x P x 0 para x P Ker P KerpP q, tenemos que P P .
Resultará más útil la siguiente caracterización de las proyecciones ortogonales.
Proposición 6.6 Una matriz P P Cnn de rango r es una proyección ortogonal si
y sólo si existe una matriz Q P Cnr , con columnas ortonormales, tal que P QQ .
Demostración.- Supongamos primero que P
nr
C
con columnas ortonormales. Entonces
P2
QQ para alguna matriz Q P
QQQQ QpQQqQ QQ,
porque Q Q Ir por tener Q las columnas ortonormales. Por lo tanto P 2
decir, P es una proyección. Además
P
P ; es
pQQq pQqQ QQ P.
Ası́ que, por la Porposición anterior P es una proyección ortogonal.
Supongamos ahora que P es una proyección
ortogonal
y sea tq1 , . . . , qr u una base
ortonormal de Im P . Pongamos Q q1 q2 qr . Veamos que P QQ . Para
ello probaremos que P x QQ x para todo x P Cnn .
Sea x un vector cualquiera de Cn . Como P es una proyección Cn Ker P ` Im P .
Por lo tanto existen unos únicos vectores x1 P Im P y x2 P Ker P tales que x x1 x2 . Entonces P x P x1 x1 y P x2 0. Es decir, P x x1 . Calculemos QQ x.
6.3 Proyecciones ortogonales
Por una parte
125
q1 x
r
q x ¸
2 QQ x Q .. pqi xqqi .
. qr x
Ahora bien, como qi
P Im P
y x2
P Ker P pIm P qK
qi x qi x1
Pero, Im P q1 , . . . , qr
yendo en (6.1)
(6.1)
i 1
qi x2
qix1.
¡, por lo que x1 a1q1 ar qr y qi x1
ai. Sustitu-
r
¸
QQ x ai q i x 1 .
j 1
En conclusión P x QQ x para todo x P Cn y P
QQ.
Observaciones 6.7
1. Si Q tiene columnas ortonormales entonces P QQ es
la proyección ortogonal sobre Im P a lo largo de Ker P pIm P qK Ker P .
Ahora bien, como P QQ y Q es de rango completo, Im P Im Q y
Ker P Ker Q . En conclusión QQ es la proyección ortogonal sobre Im Q a
lo largo de Ker Q pIm QqK .
2. In QQ también es una proyección, la complementaria de QQ . Y también
es ortogonal porque pIn QQ q In QQ . Por la Porposición 6.2, ImpIn QQ q KerpQQ q Ker Q pIm QqK y KerppIn QQ q ImpQQ q Im Q. Por lo tanto, es la proyección ortogonal sobre pIm QqK a lo largo de
Im Q.
3. Nos interesan muy especialmente las proyecciones ortogonales de rango 1. Son
las de la forma
Pq qq siendo q un vector unitario. Por lo dicho anteriormente, qq es la proyección
ortogonal sobre Im q q ¡ a lo largo de pIm q qK q ¡K .
De la misma forma In qq es una proyección de rango n 1: es la proyección
ortogonal sobre q ¡K a lo largo de q ¡.
126
Proyecciones y bases ortonormales
6.4.
El algoritmo clásico de Gram-Schmidt
Recordemos que el método de ortonormalización de Gram-Schmidt consiste, a
grandes rasgos, en lo siguiente: Dado un sistema de vectores a1 , . . . , an P Cm , que
supondremos linealmente independientes, se trata de conseguir una base ortonormal
tq1, . . . , qnu del subespacio a1, . . . , an ¡ de modo que
q1, . . . , qj ¡ a1, . . . , aj ¡,
j
1, . . . , n.
Para ello se procede de la siguiente forma:
1. q1
}aa1}
1 2
2. Para j 2, 3, . . ., qj es la proyección ortogonal de aj sobre el subespacio
a1, . . . , aj1 ¡K q1, . . . , qj1 ¡K dividido por su norma.
Ahora bien, hemos visto en la Observación 6.7 que si
Qj 1
q1
q j 1
entonces la proyección ortogonal sobre q1 , . . . , qj 1 ¡K es Im Qj 1 Qj 1 . Por lo
tanto,
vj pIm Qj 1 Qj 1 qaj
q1, . . . , qj1 ¡K, y ası́
pIm Qj1Qj1qaj
vj
qj }vj }2 }pIm Qj1Qj1qaj }2 .
es la proyección ortogonal de aj sobre
Dado que esta construcción es inductiva puede implementarse algorı́tmicamente.
En primer lugar
vj pIm Qj 1 Qj 1 qaj
aj Qj1Qj1aj
y
qj
aj }vvj}
j 2
.
Qj 1 q1 aj
q2 aj
..
.
qj1 aj
j¸1
aj pqiaj qqi.
i 1
6.4 El algoritmo clásico de Gram-Schmidt
127
Por lo tanto, si ponemos
v1 a1
rjj }vj }2
rij qi aj
tenemos que para j
1, 2, . . . , n
aj
vj
j°1
i 1
}vj }2qj
j
°
rij qi
i 1
q1 q2
rij qi
j°1
i 1
rij qi
r1j
r2j qj .. . rjj
Si construı́mos una matriz con los vectores ai , A
entonces A tiene rango completo y
A a1 a2
an
q1 q2
a1 a2
r11 r12
0 r22
qj ..
..
.
.
0
0
...
an
P
Cmn ,
r1n
r2n .. .
. rnn
Es decir, A QR con Q P Cmn una matriz con columnas ortonormales y R rrij s P Cnn una matriz triangular superior con rii ¡ 0. A esta forma de expresar
A se le llama factorización QR reducida de A. Y, tal y como hemos visto, el
método de ortonormalización de Gram-Scmidt nos proporciona un algoritmo par
obtener esta factorización:
128
Proyecciones y bases ortonormales
Algoritmo clásico de Gram-Schmidt
Dada A a1 a2
an
P Fmn, m ¥ n, rangpAq n, (F R o C)
R=zeros(n,n)
Q=A
for j 1:n
for i 1:j 1
rij qi aj
qj qj rij qi
end for
rjj }qj }2
qj
qj rjj
end for
La salida de este algoritmo debe ser una matriz triangular superior R con rii
y una matriz Q con columnas ortonormales.
6.5.
¡0
El algoritmo modificado de Gram-Schmidt
Hay otro procedimiento teórico que produce también una base ortonormal como
la del método de Gram-Schmidt. Partimos de la siguiente observación: Si Q P Cmn
tiene columnas ortonormales la proyección ortogonal QQ es suma de n proyecciones
ortogonales de rango 1. En efecto
QQ
q 1 q2
q1
q 2 qn .. .
q1q1
q2 q2
qn qna st.
qn
Ahora recordemos que en el método clásico de Gram-Schmidt cada qj se obtiene
proyectando aj sobre q1 , . . . , qj 1 ¡K , y después normalizando. Es decir,
qj
pI Q Q qa
}pI m Q j1Qj1qa j}
m
j 1
j 1
j 2
.
6.5 El algoritmo modificado de Gram-Schmidt
129
De acuerdo con lo que acabamos de ver
j¸
1
qi qi .
Im Qj 1 Qj 1 Im i1
Pero si hacemos el producto
pIm qj1qj1qpIm qj2qj2q . . . pIm q1q1q
y tenemos en cuenta que qi qj 0 si i j, resulta que este producto es
Im qj 1 qj1 qj 2 qj2 . . . q1 q1 I Qj 1 Qj 1 .
Im qiqi entonces
Im Qj 1 Qj 1 Pj 1 Pj 2 . . . P1 .
En definitiva, si ponemos Pi
(6.2)
¿Cuál es la interpretación geométrica de esta igualdad?. En primer lugar, Im Qj 1 Qj 1 es la proyección ortogonal sobre pIm Qj 1 qK q1 , . . . , qj 1 ¡K . En segundo lugar, Pi Im qi qi es la proyección sobre qi ¡K . Por lo tanto, para un
vector x P Cn cualquiera, pIm Qj 1 Qj 1 qx es la proyección ortogonal de x sobre
q1, . . . , qj1 ¡K y Pix es la proyección ortogonal de x sobre qi ¡K. Ası́ pues,
Pj 1 Pj 2 . . . P1 x es el vector resultante de hacer lo siguiente:
1. Proyectamos x ortogonalmente sobre
q1 ¡K. Esto es P1x
2. El vector obtenido, P1 x, lo proyectamos ortogonalemnte sobre
es P2 P1 x.
q2 ¡K. Esto
3. El vector obtenido, P2 P1 x lo proyectamos ortogonalmente sobre q3
es P3 P2 P1 x.
4. Ası́ sucesivamente hasta proyectar Pj 2 . . . P2 P1 x sobre
¡K. Esto
qj1 ¡K.
La identidad (6.2) nos dice que es lo mismo hacer este proceso de proyecciones
sucesivas que hacer directamente la proyección de x sobre q1 , . . . , qj 1 ¡K . Esto
segundo es lo que hace el método clásico de Gram-Schmidt. Pero el resultado teórico
es el mismo si se hacen las proyecciones sucesivas de rango n 1. La implementación
130
Proyecciones y bases ortonormales
de este procedimiento es lo que denominaremos algoritmo modificado de GramSchmidt.
La implementación práctica del algoritmo difiere muy poco de la del algoritmo
clásico. De hecho sólo hay que cambiar una lı́nea:
Algoritmo modificado de Gram-Schmidt
Dada A a1 a2
an
P Fmn, m ¥ n, rangpAq n, (F R o C)
R=zeros(n,n)
Q=A
for j 1:n
for i 1:j 1
rij qi qj (Método Clásico: rij
qj qj rij qi
end for
rjj }qj }2
qj
qj rjj
end for
qiaj )
Puede no ser evidente por qué la simple sustitución de rij qi aj por rij qi qj
produce el mismo resultado en aritmética exacta, y puede que tampoco sea evidente
por qué este algoritmo produce
qj
pIn qj1qj1q pIn q1q1qaj .
Para comprenderlo analicemos con detalle el progreso de las operaciones rij qi qj
seguida de qj qj rij qi para un j fijo y para i 1, . . . , j 1. La notación
que usaremos es la del ordenador; es decir, las variables no lo son en el sentido
matemático sino en el del ordenador (lugares fı́sicos en la memoria del mismo) y
“iguladad”significa “asignación”. Ası́, para la expresión:
qj
qj r1j q1
se debe entender que a la variable qj se le asigna el valor de restar al valor previo
de qj el producto r1j q1 .
Supongamos entonces fijado j
P t1, . . . , nu y procedamos con el bucle:
6.6 Número de operaciones
131
for i 1:j 1
rij qi qj
qj qj rij qi
end for
recordando que el valor de qj al comienzo del mismo es aj . Para i 1
r1j q1 qj q1 aj
qj qj r1j q1 aj
Para i 2
pq1aj qq1 aj pq1q1qaj pIn q1q1qaj .
q2qj q2pIn q1q1qaj
qj r2j q2 pIn q1q1qaj q2pIn q1q1qaj q2 pIn q1q1qaj q2q2pIn q1q1qaj pI q2q2qpIn q1q1qaj .
Siguiendo ası́ sucesivamente obtendrı́amos para i j 1
qj pI qj 1 qj1 q pI q2 q2 qpIn q1 q1 qaj .
r2j
qj
Por (6.2) resulta que
qj
pIn Qj1Qj1qaj
de modo que el valor de qj , en aritmética exacta, obtenido por los procedimientos
clásico y modificado de Gram-Schmidt es el mismo.
Debe notarse que con ambos métodos, los elementos diagonales de R son números reales positivos independientemente de si la matriz original es de números reales
o complejos.
Observaciones 6.8 Cuando el tamaño de la matriz A es muy grande y puede
haber problemas para alojar en memoria las matrices Q y R, en vez de asignar
Q=A, se pueden ir sustituyendo las columnas de A por las de Q a medida que ésta
se va construyendo. Con los ordenadores actuales éste es un problema menor, pero
todavı́a hay algoritmos que contemplan esta posibilidad.
6.6.
Número de operaciones
Al igual que con el algoritmo LU , para los algoritmos que estudiemos en este
curso iremos calculando su coste operacional; es decir, una estimación del número
132
Proyecciones y bases ortonormales
de flops (“floating point operations”) que conlleva la implementación práctica del
mismo. Para ambos algoritmos de Gram–Schmidt tenemos el siguiente resultado:
Teorema 6.9 Los algoritmos clásico y modificado de Gram–Schmidt requieren
2mn2 flops para calcular la factorización QR de una matriz m n.
Recordemos que el número de flops es un polinomio en el tamaño de la matriz
y que de este polinomio sólo se suele destacar el término de grado mayor dado que
el resto son poco significativos salvo que n y m sean pequeños. Ası́, el Teorema 7.5
nos dice que el coste de los algoritmos de Gram–Schmidt es del orden 2mn2 o
Op2mn2 q; teniendo estos sı́mbolos el habitual significado asintótico:
número de flops
m,nÑ8
2mn2
lı́m
1.
Demstración. El Teorema puede demostrarse de la siguiente forma: Cuando m
y n son grandes, el mayor número de operaciones se encuentran en las dos siguiente
sentencias:
rij qi qj (Método Clásico: rij qi aj )
qj qj rij qi
La imera lı́nea calcula el product escalar qi qj y requiere m multiplicaciones y m 1
sumas. Y la segunda fila calcula qj qj rij qi precisando m multiplicaciones y n
restas. As’ı pues, el trabajo que se hace en cada iteración es del orden de 4m.
Como hay que hacer i 1 : j 1 iteraciones para j 1 : n, el número total de flops
necesarios es asintótico a
1
n j¸
¸
j 1i 1
6.7.
4m 4m
n
¸
pj 1q 4m
j 1
n¸1
j 1
j
4m pn 2 1qn 2mn2
Opmnq.
Existencia y unicidad de la factorización QR
Hemos exigido que los vectores a1 , . . . , an sean linealmente
independientes. En
estas circunstancias la descomposición QR de A a1 an es única. En efecto,
ambos métodos utilizan proyecciones ortogonales, y éstas son únicas. Por ejemplo,
a1
el método clásico, empieza construyendo q1 }a1}2 , de modo que está definido
6.7 Existencia y unicidad de la factorización QR
133
de forma única; y para j 2, . . . , n , qj es la proyección ortogonal de aj sobre el
subespacio a1 , . . . , aj 1 ¡K y luego normalizado. La proyección ortogonal de aj
sobre un subespacio fijo es única; y, por supuesto, la norma del vector obtenido
también. Ası́ pues, la matriz Q obtenida es única.
Por su parte, los elementos de R son las componentes de cada aj en la base
q1, . . . , qn ¡, que son únicos.
Estos argumentos prueban
Teorema 6.10 Si A
factorización QR.
P
Cmn (m
¥
n) tiene rango completo admite una única
No obstante, debe notarse que hay varias formas de escribir A QR con Q una
matriz con columnas ortonormales y R triangular superior. Por ejemplo, si A QR
también A peiθ Qqpeiθ Rq. cumple que Q̃ peiθ Qq tiene columnas ortonormales y
R̃ eiθ R es triangular superior. Pero la condición rii P R exige que θ 0.
Analizamos ahora el caso en que rangpAq no es completo. En este caso, habrı́a
una columna, digamos aj , que serı́a combinación lineal de a1 , . . . , aj 1 . Es decir,
aj
P a1, . . . , aj1 ¡ q1, . . . , qj1 ¡ .
Como qj es la proyección ortogonal de aj sobre el subespacio a1 , . . . , aj 1 ¡K
una vez normalizado, y aj P q1 , . . . , qj 1 ¡ tenemos que qj 0. Mejor dicho, la
proyección ortogonal, vj , de aj sobre a1 , . . . , aj 1 ¡K es el vector cero y ası́ rjj }vj }2 0. Esto imposibilita construir el vector unitario y continuar el algoritmo en
el punto en que se hace la división
qj
rqj .
jj
Este hecho parecerı́a indicar que no existe factorización QR. Sin embargo, teóricamente, podrı́amos escoger para qj un vector unitario en q1 , . . . .qj 1 ¡K y proseguir con el proceso de Gram-Schmidt; y hacerlo tantas veces cuantas sea necesario.
En la práctica no hay posibilidad de escoger de manera adecuada el vector qj ortonormal a q1 , . . . , qj 1 ¡. Esto sólo es una posibilidad teórica que nos permite asegurar
que, incluso cuando A no es de rango completo, siempre admite una factorización
QR.
134
Proyecciones y bases ortonormales
Teorema 6.11 Toda matriz A P Cmn (m ¥ n) admite una factorización QR.
Debe observarse que si A no tiene rango completo entonces habrı́a factorización
QR de A, pero no se cumplirı́a que Im Q Im A.
En la práctica, difı́cilmente el valor calculado por el ordenador será exactamente
rjj 0, debido al redondeo. Muchos programas, como MATLAB, si el número por
el que se va a dividir es muy pequeño, emiten un aviso de división por cero. Pero
los errores de redondeo pueden ser de tal magnitud que MATLAB no detecte que
tal división por cero se ha producido y nos devuelva un resultado. Por ejemplo
>> A=ones(3);
>> [Q,R]=clgs(A)
Q =
5.7735e-01 -5.7735e-01
5.7735e-01 -5.7735e-01
5.7735e-01 -5.7735e-01
R =
1.7321e+00
1.7321e+00
0
3.8459e-16
0
0
5.7735e-01
5.7735e-01
5.7735e-01
1.7321e+00
3.8459e-16
8.5397e-32
Claramente rangpAq 1 pero MATLAB lleva a cabo el algoritmo sin ningún tipo
de aviso. Vemos, enseguida, que las dos últimas filas de R son casi cero. Esto nos
indica que algo raro sucede. Si hacemos
>> Q’*Q
ans =
1.0000e+00
-1.0000e+00
1.0000e+00
>> Q*R
ans =
1
1
1
1
1
1
-1.0000e+00
1.0000e+00
-1.0000e+00
1
1
1
1.0000e+00
-1.0000e+00
1.0000e+00
6.8 Factorización QR reducida y completa
135
observamos que Q no es unitaria. El algoritmo nos devuelve una factorización de A
en dos matrices Q y R. R es triangular superior con rii ¡ 0 pero Q no es unitaria.
Por lo tanto, no se trata de una factorización QR de A. Este fenómeno es bastante
frecuente con los algoritmos de Gram-Schmidt y lo analizaremos con más detalle en
la última sección de este Tema.
6.8.
Factorización QR reducida y completa
Al igual que con los valores singulares existe una factorización reducida y una
factorización completa de cualquier matriz A P Cmn (m ¥ n). La reducida ya hemos
visto lo que es: una descomposición de A en dos factores Q P Cmn y R P Cnn , con
Q una matriz cuyas columnas son ortonormales y R una matriz triangular superior
con elementos diagonales números reales positivos (si A es de rango completo) o
cero (si A no es de rango completo).
Para obtener una factorización QR completa de A se añaden a Q m n columnas
ortonormales para formar una matriz Q̃ P Cmm que sea unitaria. Y se añaden a R
m n filas de ceros para obtener la matriz
R̃ R
0pmnqn
Claramente A Q̃R̃, pero esta factorización no tiene por qué ser única, debido
a la arbitrariedad de la elección de las última m n columnas de Q̃. A cualquier
descomposición de A en dos factores Q̃ y R̃ con estas propiedades (i.e. Q̃ unitaria y
R̃ P Cmn con rij 0 para i ¡ j y rjj ¥ 0) se le llama factorización QR completa
de A.
Los algoritmos de Gram-Schmidt proporcionan factorizaciones reducidas. En la
próxima lección estudiaremos otro algoritmo que da una factorización completa. Ya
hemos dicho cómo pasar de una factorización reducida a una completa. El recı́proco
es obvio: si A Q̃R̃ es una factorización completa de A P Cmn y m ¥ n, entonces
se obtiene una factorización reducida eliminando de Q̃ sus últimas m n columnas
y de R̃ sus últimas m n filas de ceros.
136
6.9.
Proyecciones y bases ortonormales
Un análisis experimetal de la estabilidad de
los algoritmos de Gram-Schmidt
El experimento que se expone a continuación, hecho con MATLAB, tiene como
finalidad explorar la diferencia en la estabilidad numérica entre los algoritmos clásico
y modificado de Gram-Schmidt.
Primero construı́mos una matriz A de tamaño 80 80 con vectores singulares
aleatorios y valores singulares en progresión geométrica desde 21 hasta 280 de
razón 21 :
disp(’Escogidas U y V matrices ortogonales 80x80 aleatorias’)
S=diag(2.^(-1:-1:-80));
A=U*S*V’;
Y usamos los algoritmos clásico y modificado de Gram-Schmidt para calcular factorizaciones QR de A:
[QC,RC]=clgs(A);
[QM,RM]=mgs(A);
Finalmente, dibujamos los elementos diagonales rjj de R producidos por ambos
algoritmos con una escala logarı́tmica:
axis([1 80 10^(-25) 10^0])
semilogy(1:80, diag(RC),’*’)
hold on
semilogy(1:80,diag(RM),’o’);
semilogy(1:80, 2.^(-1:-1:-80),’r.-’);
plot(1:80,sqrt(eps).*ones(80),1:80,eps.*ones(80))
Esto, más algunas sentencias para presentar la gráfica con el texto apropiado,
proporciona la Figura 6.1, que interpretamos a continuación.
Por una parte rjj }vj }2 con vj pIm Qj Qj qaj , de modo que rjj nos da una
idea del tamaño del vector proyección de aj sobre a1 , . . . , aj 1 ¡K . Salta a la vista
6.9 Un análisis experimetal de la estabilidad de los algoritmos de Gram-Schmidt137
0
10
−5
10
eps1/2
−10
rjj
10
−15
10
eps
−20
10
2
−j
−25
10
10
20
30
40
j
50
60
70
80
Figura 6.1: Elementos diagonales de R en la descomposición QR de A calculados
con MATLAB mediante los algoritmos clásico y modificado de G-S. El algoritmo
clásico produce los números representados por y el modificado, los representados
por .
en la figura que rjj es una función decreciente de j y que este decrecimiento se hace,
sobre todo al principio, a lo largo de la recta 2j . Esto es bastante razonable porque
A U SV
T
80
¸
si ui viT
21u1v1T
22 u2 v2T
T
s80 u80 v80
,
i 1
y la j-ésima columna de A es
aj
21vj1u1
22 vj2 u2
280 vj,80 u80 .
Ahora bien, las filas de V son ortonormales ası́ que
}vj }2 80
¸
|vji|2 1,
i 1
y, como V es aleatoria, podemos suponer que todos los |vji | son, aproximadamente,
de la misma magnitud. Es decir,
|vji| 1
80
1{2
801{2 0,1.
138
Proyecciones y bases ortonormales
Ası́ pues
aj
801{2
21 u1
22 u2
280 u80 .
Todos los ui son vectores unitarios por lo que la componente de aj en la dirección de
ui es el doble que su componente en la dirección de ui 1 . En particular, la componente
más fuerte de aj es en la dirección de u1 . Pero al hacer la descomposición QR de A,
q1 tiene la dirección de a1 , que es, aproximadamente, la de u1 . Es decir, q1 u1 y,
por lo tanto, r11 21 801{2 .
En el segundo paso,
v2
a2 pq1a2qq1 a2 pu1 a2qu1 801{2
22 u2
280 u80
801{222u2,
ası́ que q2 u2 y r22 801{2 22 . Y ası́ sucesivamente. Esto justifica por qué los rjj
decrecen aproximadamente pegados a la recta 2j .
Lo segundo que llama la atención es que este comportamiento de rjj de ir pe?
gado a la recta 2j se detiene en un cierto punto. Aproximadamente en eps para
el algotitmo clásico de Gram-Schmidt y en eps para el modificado. Esto es una
consecuencia del redondeo. Con el algoritmo clásico los rjj nunca son menores de
108 mientras que con el modificado se reducen del orden de 8 dı́gitos decimales
más, hasta, aproximadamente, 1016 ; el orden del épsilon de la máquina, eps. Nada
mejor es esperable.
Algunos algoritmos son más sensibles que otros a los errores de redondeo. Es
conocido que al algoritmo clásico le pueden afectar mucho. Por ello rara vez se usa.
6.10.
Pérdida numérica de ortogonalidad
Hay otro tipo de inestabilidad que afecta a ambos algoritmos del que ya hemos
visto un ejemplo más arriba: ambos pueden calcular matrices Q que están lejos de
tener columnas ortonormales. Una medida de la ortogonalidad de las columnas de
una matriz nos la da el siguiente procedimiento: Si las columnas de Q P Cmn son
ortonormales entonces Q Q In . Si las columnas de Q son “casi” ortonormales
entonces Q Q es “casi” In ; es decir, los elementos de la matriz Q Q In son casi
cero. O equivalentemente
}QQ In}2 0.
6.10 Pérdida numérica de ortogonalidad
139
La pérdida de ortogonalidad ocurre cuando A está próxima a no tener rango
completo; es decir, cuando σn 0. Y como en la mayor parte de los fenómenos
de inestabilidad, ésta aparece incluso en matrices de dimensión pequeña. Vamos a
presentar dos ejemplos, uno para hacer a mano y otro con MATLAB.
Consideremos la siguiente matriz
A
0,70000 0,70711
0,70001 0,70711
en un hipotético ordenador que redondea los resultados a 5 dı́gitos de exactitud
relativa. Los algoritmos clásico y modificado de Gram-Schmidt son idénticos para
matrices de dos columnas. Observemos, en primer lugar, que σ2 pAq 5,0252 106
es la distancia de A a las matrices de rango 1. Calculemos la descomposición QR que
se obtendrı́a en esta situación (recordemosque lo hacemos redondeando a 5 dı́gitos
significativos). En el primer paso del algoritmo
a1
0,70000
0,70001
ñ r11 }a1}2 ñ q1 a1{r11 a
0,72
0,700012
0,98996 ñ
0,70710
0,70711
En el segundo paso
0,70711
r12 q1 a2 0,70710 0,70711
0,70711
0,70711
v2 a2 pq a2 qq1 1
1,0000p045 . . .q
0,70710
1
0,70711
0,70711
0,00001
0,00000
Los errores de redondeo en este cálculo de v2 son determinantes. De hecho q2
y la matriz Q obtenida es
Q
1
0
0,70710 1
,
0,70711 0
que
es una matriz lejos de ser ortogonal. Para serlo la primera columna deberı́a ser
0
, muy lejos de q1 . De hecho
1
}QQ In}2 0,70710,
140
Proyecciones y bases ortonormales
un número muy grande.
En un ordenador con 16 dı́gitos de precisión como los habituales y usando
MATLAB con esta misma matriz:
>> A=[ 0.70000 0.70711; 0.70001 0.707111];
>> [Q,R]=mgs(A);
>> norm(Q’*Q-eye(2))
produce
ans=
2.3014e-11
un número pequeño pero muy grande comparado con el épsilon de la máquina,
eps, que es del orden de 2.2204e-16. Si hacemos lo mismo con el algoritmo QR
implementado por MATLAB y que estudiaremos en la próxima lección obtenemos
>> [Q,R]=qr(A);
>> norm(Q’*Q-eye(2))
ans =
2.3514e-16
que es del orden del épsilon de la máquina.
Descargar