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.