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 1: SISTEMAS DE ECUACIONES LINEALES Índice 1. Eliminación gaussiana 1.1. 1.2. 1.3. 1.4. Método de eliminación gaussiana . . . . . Costo operativo . . . . . . . . . . . . . . . Comandos de Matlab . . . . . . . . . . . Normas matriciales y número de condición . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1 8 9 10 2. Problemas sobredeterminados 12 3. Matrices de rango deciente: Descomposición en valores singulares 19 4. Cuestiones y problemas 24 2.1. Problemas sobredeterminados: Solución de mínimos cuadrados . . . . . . . . . . . . 2.2. Descomposición QR de una matriz . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.3. Método de Householder para la descomposición QR . . . . . . . . . . . . . . . . . . 12 14 16 1. Eliminación gaussiana Introducción. Los sistemas de ecuaciones lineales aparecen en una gran variedad de áreas cientícas, pero también indirectamente en la solución numérica de diferentes problemas matemáticos. Por ejemplo, estos sistemas aparecen como etapas intermedias en la resolución de problemas numéricos en optimización, aproximación de funciones, ecuaciones diferenciales ordinarias, ecuaciones en derivadas parciales, ecuaciones integrales,... Por esta razón, el estudio de métodos numéricos para la resolución de los sistemas de ecuaciones lineales es uno de los pilares del Análisis Numérico. Nos centraremos primero en el caso en que la matriz de coecientes del sistema es cuadrada e invertible, en cuyo caso, como bien sabemos, la solución del sistema es única. Posteriormente se tratarán los casos de matrices rectangulares y de matrices cuadradas no invertibles. 1.1. Método de eliminación gaussiana Nos centramos en esta sección en sistemas de ecuaciones lineales con n ecuaciones y n incógnitas. Un ejemplo es el siguiente. x1 +2x3 = 3, −2x1 +2x2 −3x3 = −2, −3x1 +2x2 −4x3 = −3. Recordemos que el proceso de eliminación gaussiana para su resolución consiste en restar múltiplos de la primera ecuación a las demás para hacer desaparecer (eliminar) la primera incógnita de las 1 restantes ecuaciones, y, una vez hecho esto, se repite el proceso con la segunda incógnita, y así hasta que la última incógnita aparece sola en una ecuación, esto es, está despejada. En el caso que nos ocupa, x1 +2x3 = 3, e2 ← e2 + 2e1 x1 +2x3 = 3, −2x1 +2x2 −3x3 = −2, −→ 2x2 +x3 = 4, → −3x1 +2x2 −4x3 = −3. e3 ← e3 + 3e1 2x2 +2x3 = 6. e3 ← e3 − e2 −→ x1 2x2 +2x3 = 3, +x3 = 4, x3 = 2. Este último sistema se resuelve fácilmente por sustitución regresiva. x1 +2x3 = 3, 2x2 +x3 = 4, ⇒ x2 = (4 − x3 )/2 = (4 − 2)/2 = 1, x3 = 2. ⇒ x1 = 3 − 2x3 = 3 − 4 = −1. Recuerde que en primer curso vimos que este proceso tenía una escritura matricial. El sistema se escribe como Ax = b, donde A es la matriz de coecientes, x el vector de incógnitas y b el vector dato, 1 0 2 x1 3 A = −2 2 −3 , x = x2 , b = −2 . −3 2 −4 x3 −3 Recuerde así mismo que si A es invertible, entonces la única solución de Ax = b es x = A−1 b. En la práctica, sin embargo, nunca se calcula A−1 y después se efectúa x = A−1 b por dos razones. Calcular A−1 es más costoso que resolver el sistema Ax = b por eliminación gaussiana. Calcular A−1 y multiplicar A−1 b es un proceso más sensible a errores de redondeo que resolver Ax = b por eliminación gaussiana. Por tanto, debe aprender bién estas dos razones y no olvidar la primera regla del Cálculo Numérico: Para multiplicar por A−1 se resuelve un sistema con matriz de coecientes A. Matricialmente, el proceso de eliminación gaussiana es como sigue. 1 0 2 3 x1 e2 ← e2 + 2e1 1 0 2 3 x1 −2 2 −3 x2 = −2 −→ 0 2 1 x2 = 4 → x3 −3 2 −4 −3 e3 ← e3 + 3e1 x3 0 2 2 6 1 0 2 3 x1 e3 ← e3 − e2 0 2 1 x2 = 4 . −→ x3 0 0 1 2 En este último sistema, U x = b0 , la matriz de coecientes es triangular superior. Observe que en este proceso el vector de incógnitas no se ve afectado. 2 Recuerde así mismo que las operaciones por las efectuadas tienen una interpretación matricial en términos de multiplicaciones por matrices elementales. Así por ejemplo, el primer paso del proceso de eliminación gassiana consiste en multiplicar Ax = b por M1 para obtener M1 Ax = M1 b, donde M1 es la matriz que, al multiplicar por ella, resta múltiplos de la primera la a las demás, dejando ceros en la primera columna por debajo de la diagonal. En nuestro ejemplo, 1 0 0 M1 = 2 1 0 , 3 0 1 pues, 1 0 0 1 0 2 1 0 2 M1 A = 2 1 0 −2 2 −3 = 0 2 1 , 3 0 1 −3 2 −4 0 2 2 Abreviadamente escribiremos M1 A = A(2) , 1 0 0 3 3 M1 b = 2 1 0 −2 = 4 . 3 0 1 −3 6 M1 b = b(2) . Recuerde que la matriz M1 es como la identidad excepto que en la primera columna aparecen los opuestos −lj1 de los multiplicadores lj1 , siendo éstos lj1 = aj1 /a11 . 1 0 0 l21 = a21 /a11 = −2/1 = −2, M1 = −l21 1 0 , l31 = a31 /a11 = −3/1 = −3. −l31 0 1 El segundo paso de la eliminación consiste en multiplicar el sistema A(1) x = b(1) obtenido anteriormente por la matriz M2 , que es como la identidad excepto que en la segunda columna (2) (2) aparecen los opuestos −lj2 de los multiplicadores lj2 , siendo éstos lj2 = aj2 /a22 , 1 0 0 M2 = 0 1 0 , 0 −l32 1 (2) (2) l32 = a32 /a22 = 2/2 = 1, pues M2 A(2) 1 0 0 1 0 2 1 0 2 1 0 0 2 1 = 0 2 1 , = 0 0 −1 1 0 2 2 0 0 1 M2 b(2) 1 0 0 3 3 1 0 4 = 4 . = 0 0 −1 1 6 2 Resumiendo todo el proceso de eliminación, M2 M1 A = A(3) = U triangular superior, M2 M1 b = b(3) = b0 , con lo que, deshaciendo los cambios, obtenemos A = M1−1 M2−1 U. b = M1−1 M2−1 b0 . 3 (1) Observe que puesto que las matrices de transformación elemental M1 y M2 efectúan cambios por las cuando se multiplican por la izquierda, sus inversas consistirán en deshacer dichos cambios. −1 1 0 0 1 0 0 1 0 0 M1−1 = −l21 1 0 = l21 1 0 = −2 1 0 , −l31 0 1 l31 0 1 −3 0 1 −1 1 0 0 1 0 0 1 0 0 = 0 1 0 = 0 1 0 = 0 1 0 . 0 −l32 1 0 l32 1 0 1 1 M2−1 Debido a que mulitiplicar por la izquierda por la matriz M1−1 es sumar a las las segunda y tercera múltiplos de la primera, y la primera la de la matriz M2−1 es la de la identidad, la matriz M1−1 M2−1 contiene en sus columnas por debajo de la diagonal los divisiores correspondientes, 1 0 0 1 0 0 1 0 0 M1−1 M2−1 = l21 1 0 0 1 0 = l21 1 0 = L. l31 0 1 0 l32 1 l31 l32 1 Esto es, M1−1 M2−1 = L es una matriz triangular inferior con unos en la diagonal , y con los multiplicadores calculados en el proceso de eliminación gaussiana en sus lugares correspondientes. Por ello, de la igualdad (1) obtenemos que Lb0 = b. A = LU, Este proceso se generaliza fácilmente para sistemas de n ecuaciones con n incógnitas. a11 x1 + a12 x2 + . . . + a1n xn = b1 , a21 x1 + a22 x2 + . . . + a2n xn = b2 , .. .. . . an1 x1 + an2 x2 + . . . + ann xn = bn , que escrito matricialmente es a11 a12 . . . a1n a21 a22 . . . a2n .. .. . . . . . .. . an1 an2 . . . ann x1 b1 x2 b2 .. = .. , . . xn abreviadamente, Ax = b. bn En cada paso, restamos múltiplos de una ecuación a las siguientes (empezando por la primera, siguiendo con la segunda, tercera, etc) para eliminar del resto de las ecuaciones la correspondiente incógnita, hasta terminar con el sistema triangular superior equivalente b01 x1 u11 u12 . . . u1n 0 u22 . . . u2n x2 b0 2 abreviadamente, U x = b0 , .. . . . . .. .. = .. , . . . . . . 0 ... 0 unn xn b0n 4 que resolvemos por el algoritmo de sustitución regresiva, xn = b0n /unn , para j = n − 1, . . . , 1: xj = (b0j − uj,j+1 xj+1 − . . . − ujn xn )/ujj . (2) Igual que en el ejemplo anterior podemos ver el proceso de eliminación gaussiana como la generación de sistemas equivalentes Ax = b → A(2) x = b(2) → ... → A(n−1) x = b(n−1) → U x = b0 , donde, A(n) = U , b(n) = b0 y A(k+1) = Mk A(k) , b(k+1) = Mk b(k) , k = 1, . . . , n − 1, A(1) = A, b(1) = b, y siendo las matrices A(k) de la forma A(k) (k) a11 0 .. . = 0 . .. 0 (k) (k) (k) a12 . . . a1k (k) (k) a22 . . . a2k .. .. .. . . . (k) . . . 0 akk .. .. . . (k) . . . 0 ank . . . a1n (k) . . . a2n .. . (k) . . . akn .. .. . . (k) . . . ann , k = 2, . . . , n (A(k) tiene nulos sus elementos por debajo de la diagonal en las k − 1 primeras columnas) y Mk es la identidad pero con los opuestos de los multiplicadores por debajo de la diagonal en su columna k ésima, 1 0 ... 0 0 0 ... 0 .. .. .. .. 0 1 ... . . . . . . ... ... 0 0 0 ... 0 . (k) (k) 1 0 0 ... 0 0 ... 0 lk+1,k = ak+1,k /ak,k , Mk = , 0 . . . 0 −lk+1,k 1 0 . . . 0 (k) (k) lk+2,k = ak+2,k /ak,k , . . .. 0 . . . 0 −l . . 1 .. .. k+2,k 0 . . .. .. .. .. . . . . . . . 0 (k) (k) . . . ln,k = an,k /ak,k . 0 ... 0 −ln,k 0 . . . 0 1 Llegamos pues a que b0 = Mn−1 . . . M1 b, U = Mn−1 . . . M1 A, y por tanto, −1 A = M1−1 . . . , Mn−1 U, −1 0 b = M1−1 . . . , Mn−1 b. 5 (3) Igual que en el caso de matrices 3 × 3, la inversa de una matriz de transformación elemental Mk es ella misma pero con los elementos que aparecen por debajo de la diagonal cambiados de signo, 1 0 ... 0 0 0 ... 0 .. .. .. .. 0 1 ... . . . . . . . . .. .. 0 0 0 ... 0 . 1 0 0 ... 0 0 ... 0 −1 Mk = , 0 . . . 0 lk+1,k 1 0 . . . 0 . . .. 0 ... 0 l . . 0 1 k+2,k .. .. .. .. . . . . . . . 0 . . . 0 ... 0 ln,k 0 . . . 0 1 y razonando como hicimos en el caso de matrices 3 × 3 vemos que 1 0 ... 0 .. .. . . l21 1 −1 −1 M1 . . . Mn−1 = . . = L, . .. .. 0 .. ln1 . . . ln,n−1 1 matriz triangular inferior con unos en la diagonal , y con los multiplicadores calculados en el proceso de eliminación gaussiana en sus lugares correspondientes. Por tanto, de (3) deducimos que Lb0 = b. A = LU, Para poder llevar a cabo el proceso de eliminación gaussiana descrito es necesario que los ele(k) mentos diagonales akk , también llamados pivotes, que vayamos obteniendo sean todos distintos de cero, (k) akk 6= 0, k = 1, . . . , n. (De hecho, sólo hace falta que sea cierta la armación anterior hasta k = n − 1.) Si en algún paso (k) de la eliminación se obtiene algún akk nulo, sabemos que debemos permutar la ecuación k -ésima con alguna posterior. Este intercambio de las se denomina pivotaje . En tal caso, lo que obtenemos es que el producto LU no es igual a la matriz A, sino a ésta tras permutar sus las, esto es, Lb0 = P b P A = LU, (4) donde la matriz P es la correspondiente matriz de permutación, que se obtiene haciendo sobre la identidad los mismos cambios de las que se hacen en el proceso de eliminación gaussiana. Observe que en P , los elementos de cada la (o de cada columna) son todos cero salvo uno de ellos que es uno. Por tanto, al hacer el producto P T P , dichos unos sólo coincidirán unos con otros cuando una la de P T coincida con ella misma como columna de P , y por tanto, P T P = I, o (k) P −1 = P T . Por otro lado, si algún elemento diagonal akk es nulo, y también son nulos todos los elementos (k) (k) que quedan por debajo del mismo, ak+1,k , . . . , ank , sabemos entonces que la matriz A no es invertible, 6 pues todas las operaciones que hemos hecho hasta ahora no alteran el valor del determinante de A (det(A) = . . . = det(A(k) )) y A(k) tiene determinante nulo. Podemos resumir todo lo anterior en el siguiente resultado, al que añadimos un último enunciado que explicaremos en la sección siguiente. Teorema 1 Sea A una matriz n × n invertible y b ∈ Rn . Se verican los siguientes enunciados: 1. El proceso de eliminación gaussiana con pivotaje reduce el sistema Ax = b a otro equivalente U x = b0 , siendo U una matriz triangular superior. 2. Existe una matriz P de permutación de modo que P A = LU, con L triangular inferior y diagonal de unos. 3. El vector b0 se puede obtener resolviendo el sistema Lb0 = P b. 4. El costo de obtener la factorización P A = LU es de n3 − n 3 = O( n3 ) ops, 3 y el costo total de resolver el sistema Ax = b es de n3 + 3n2 − n 3 = O( n3 ) ops, 3 entendiéndose por op multiplicación o división. Debemos añadir que el proceso de intercambio de las es también signicativo desde el punto de vista de la estabilidad numérica. En general, la eliminación gaussiana es inestable numéricamente si los pivotes son muy pequeños o, equivalentemente, los multiplicadores son muy grandes. Para evitar esta situación se introducen las estrategias de pivotaje parcial y de pivotaje total: Pivotaje parcial: En el paso k -ésimo de la eliminación gaussiana, se determina (k) ck = máx{|ai,k | : k ≤ i ≤ n}, (5) y se elige el menor índice ik donde se alcanza el máximo. Posteriormente, se intercambian las las k e ik y se realiza la eliminación. Conviene observar que en este caso los multiplicadores verican |mk,i | ≤ 1, i = k + 1, ..., n. (k) Pivotaje total: En el paso k -ésimo de la eliminación gaussiana, se determina ck = máx{|ai,j | : k ≤ i, j ≤ n} y se elige un par de índices (ik , jk ) donde se alcanza el máximo. Posteriormente, se intercambian las y columnas para que el par (ik , jk ) ocupe la posición (k, k) y se realiza la eliminación. Los resultados teóricos indican que el pivotaje total es mejor que el parcial desde el punto de vista de la propagación de errores de redondeo. Sin embargo, para la mayoría de las matrices que aparecen en la práctica, el comportamiento del pivotaje parcial es más que aceptable. Puesto que el coste computacional del pivotaje total es muy superior al del parcial, es este último el que suele utilizarse en el diseño de los algoritmos de eliminación gaussiana. En resumen, un algoritmo de amplia aplicabilidad y estable para la eliminación gaussiana debe incorporar estrategias de pivotaje. 7 1.2. Costo operativo Aclaramos aquí el último enunciado del teorema anterior. Observe que una vez obtenida la factorización A = LU (o P A = LU ) de la matriz A, para resolver el sistema Ax = b nos basta con resolver U x = b0 . En vista de (4), para obtener b0 basta resolver el sistema Lb0 = b, (o Lb0 = P b) (en caso de ser el sistema Lb0 = P b, observe que el producto P b no conlleva multiplicaciones, pues se trata de reordenar las componentes del vector b). Dado que L es triangular inferior con diagonal de unos, la resolución de Lb0 = b se realiza con el siguiente algoritmo, conocido como alroritmo de sustitución progresiva : b01 = b1 , para j = 2, . . . , n, b0j = bj − (lj1 x1 + · · · + lj,j−1 xj−1 ). (6) Su costo en ops es n(n − 1) ops. 2 Una vez obtenido b0 , el algoritmo de sustitución regresiva (2) requiere una división más por paso, el correspondiente a dividir por el elemento diagonal ujj , por tanto su costo es 0 + 1 + 2 + . . . + (n − 1) = 1 + 2 + 3 + ... + n = n(n + 1) 2 ops. Así, una vez obtenida la factorización LU de A, el costo de obtener x es n2 ops. El costo de obtener la factorización LU de A es también fácil de deducir. Basta contar el número de ops que se requieren en el primer paso de de la eliminación gaussiana, a11 a12 . . . a1n a11 a12 . . . a1n a21 a22 . . . a2n 0 a(2) . . . a(2) 22 2n .. .. . . .. → .. .. .. . .. . . . . . . . . an1 an2 . . . ann 0 (2) (2) an2 . . . ann Vemos que se deben calcular los n − 1 multiplicadores l21 = a21 /a11 .. .. . . que son n − 1 ops. ln1 = an1 /a11 A continuación, para cada j = 2, . . . , n, debemos escalar [a12 , . . . , a1n ] → [lj1 · a12 , . . . , lj1 · a1n ], que son n − 1 ops, para restar el resultado a la la j -ésima de A, contando desde la segunda columna hasta n. Como este proceso lo debemos hacer para n − 1 las, el resultado es que el primer paso de la eliminación gaussiana requiere (n − 1) + (n − 1)2 ops. 8 El segundo paso será repetir el primero con la submatriz de orden n − 1 (2) (2) a22 . . . a2n .. . . .. . . . . (2) (2) an2 . . . ann Luego costará (n − 2) + (n − 2)2 ops. El tercer paso, el cuarto, etc, consistirá en repetir este proceso con matrices de orden más pequeño, con lo que vemos que el coste de reducir A a matriz triangular superior es n−1 X j=1 2 (j + j) = n−1 X 2 j + j=1 1.3. Comandos de n−1 X j= j=1 (2n − 1)n(n − 1) n(n − 1) n3 − n 3 + = = O( n3 ). 6 2 3 Matlab Sabemos que para resolver el sistema Ax = b, en Matlab basta ejecutar x=A\b. Si la matriz A no tiene características especiales de las que posteriormente estudiaremos algunos casos, el operador \ resuelve el sistema Ax = b mediante eliminación gaussiana con pivotaje parcial de las. El comando lu, proporciona la descomposición LU de una matriz, llevada a cabo por eliminación gaussiana con pivotaje parcial de las, esto es P A = LU . Debe saber lo siguiente: El comando [L,U]=lu(A), asociado a la descomposición P A = LU , devuelve en U la matriz U , y en L la matriz P T L, pues, teniendo en cuenta que P −1 = P T , de P A = LU se obtiene A = P T LU . Luego, en general, [L,U]=lu(A) no devuelve en L una matriz triangular inferior. El comando [L,U,P]=lu(A) devuelve las tres matrices de la descomposición P A = LU . Otros aspectos a destacar. En general, las rutinas o procedimientos para resolver un sistema lineal Ax = b, actúan como hemos señalado anterioremente: 1. Se factoriza P A = LU . 2. Se resuelve Lb0 = P b. 3. Se resuelve U x = b0 . En otros lenguajes de programación (FORTRAN, lineales sobreescriben A con LU = P A, de la forma u11 . . . u1,n−1 .. . . l21 . . . . . . un−1,n−1 .. ln1 . . . ln−1,n C, etc) las rutinas para resolver sistemas u1n .. . . un−1,n unn (los unos de la diagonal de L no se guardan), pues en general los argumentos A, b y x, a diferencia de Matlab, se pasan por referencia y no por valor (es decir, los parámetros de la función no copían el valor del argumento, sino que comparten su valor). Así mismo proporcionan un vector entero (cuyos valores son enteros) con los cambios de las que se han llevado a cabo. El propósito es que si se debe volver a resolver otro sistema Ay = c con la misma matriz de coecientes, no sea necesario 9 factorizar de nuevo la matriz, que, como hemos visto, es el proceso más costoso (O(n3 /3) ops, frente a O(n2 ) ops que cuesta resolver Lb0 = b, U x = b0 ). Si en Matlab se nos presentase esta necesidad de resolver varios sistemas con la misma matriz de coecientes, debemos ejecutar primero [L,U]=lu(A), y, posteriormente, para cada segundo miembro b, ejecutar x=U\(L\b). (Observe la disposición de los paréntesis.) 1.4. Normas matriciales y número de condición Para el análisis matemático de los sistemas de ecuaciones lineales es útil el manejo de normas matriciales, que desempeñan un papel similar al concepto de módulo en los números reales. La principal norma matricial es, sin duda, la norma euclídea que, para una matriz A m × n, se dene como kAk := máx{kAxk : kxk = 1}, donde, para x = [x1 , . . . , xn ]T ∈ Rn , kxk = (x21 + · · · + x2n )1/2 es la norma euclídea estándar en IRn . Debido a cómo se dene, la norma matricial kAk de una matriz m×n satisface las tres siguientes propiedades para todo x de Rm y toda matriz B de n las: 1) 2) 3) kAxk ≤ kAk kxk . kABk ≤ kAk kBk . kA + Bk ≤ kAk + kBk . La primera de estas propiedades es cierta ya que, teniendo en cuenta que x/ kxk es de norma 1, y que x x x por tanto kA kxk k ≤ kAk, se tiene que kAxk = kA kxk kxk k = kA kxk k kxk ≤ kAk kxk. La segunda propiedad es cierta porque, para cualquier x de norma unidad y llamando y = Bx, en virtud de la propiedad anterior se tiene que kABxk = kAyk ≤ kAk kyk = kAk kBxk ≤ kAk kBk kxk = kAk kBk, de donde, tomando el supremo en todos los x de norma 1 se sigue el resultado. La tercera propiedad es consecuencia de que ky + zk ≤ kyk + kzk para cualesquiera dos vectores y, z ∈ Rb . Dado que √ p kAxk = (Ax)T (Ax) = xT AT Ax no es difícil ver, utilizando por ejemplo el teorema de los multiplicadores de Lagrange, que el máximo máx{kAxk2 : kxk = 1} se alcanza en la dirección del autovector v asociado al autovalor λ de módulo máximo de AT A, esto es, λ = ρ(AT A) y que p kAk = ρ(AT A) Notese que al ser AT A semidenida positiva, todos sus autovalores son no negativos y por tanto ρ(AT A) es un autovalor. Vea también los ejercicios 38. Condicionamiento de un sistema de ecuaciones lineales. El condicionamiento de un sistema de ecuaciones lineales Ax = b puede enfocarse respecto a perturbaciones en el vector b o bien respecto a perturbaciones en la matriz A. En ambos casos, una misma expresión de la norma matricial de A sirve ecazmente como número de condición. Consideremos inicialmente una perturbación b + δb en el segundo miembro de Ax = b, donde A es invertible y x es la solución del sistema. Sea x + δx la solución del sistema perturbado, esto es Ax = b, A(x + δx) = b + δb, de donde, restando, se obtiene 10 Aδx = δb. Tomando normas obtenemos que (se supone b no nulo) y Por tanto, b = Ax ⇒ kbk ≤ kAk kxk ⇒ 1 kAk ≤ , kxk kbk Aδx = δb ⇒ δx = A−1 δb ⇒ ° ° kδxk ≤ °A−1 ° kδbk . ° kδbk ° kδxk ≤ kAk °A−1 ° . kxk kbk A tenor de esta acotación de los errores relativos, es lógico denir el número de condición de una matriz invertible A como ° ° cond(A) = °A−1 ° kAk . Puesto que 1 = kIn k ≤ kA−1 k kAk. se tiene que cond(A) ≥ 1. Un caso en el que se entiende bien el signicado del número de condición se da cuando A es una matriz 2 × 2 cuyas las son casi proporcionales, como es el caso del sistema ¾ 9 x + x = 1,9 1 2 10 , (7) x1 + 11 x = 2,1 10 2 cuya solución es x1 = x2 = 1, y donde un sencillo cálculo demuestra que √ cond(A) = 201 + 20 101 ≥ 400. Ocurre que al ser las las de A casi proporcionales, las rectas dadas por las ecuaciones del sistema Ax = b son casi paralelas, δx1 δx2 δb por lo que un pequeño desplazamiento δb en una de ellas da lugar a un cambio mucho mayor δx, en el punto de corte del nuevo par de rectas. Así, por ejemplo, cambiando el segundo miembro de la segunda ecuación de (7) de 2.1 a 2 (un cambio de magnitud inferior al 5 %) la solución cambia de x = [1, 1]T a x = [−9, 10]T , esto es un cambio en x unas 250 veces mayor que el cambio en b, y cambiando b de [1,9, 2,1]T a [2, 2] (un cambio del orden del 5 %) se obtiene como solución x = [−20, 20]T , que supone un cambio en la solución unas 400 veces mayor que el cambio en b, esto es, del orden de cond(A) veces mayor. En el caso de sistemas de mayor dimensión, el signicado del número de condición es algo más complejo de explicar, pero esencialmente es similar al presentado en el sistema 2 × 2 en (7). 11 Dado que al resolver sistemas lineales Ax = b en el ordenador se comenten errores debido a que las operaciones se hacen con aritmética de precisión nita, puede intepretarse que la solución obtenida x + δx es en realidad solución (exacta) del sistema A(x + δx) = b + δb, aunque suele ser más fácil interpretar la solución obtenida x + δx como solución (exacta) del sistema perturbado (A + δA)(x + δx) = b. El número de condición de A forma parte de las cotas kδxk / kxk en términos de kδAk / kAk. Aunque el estudio de este tipo de cotas queda fuera del alcance de este curso, el lector interesado puede encontrar una buena introducción a este tema en las Lecciones 15 y 16 de [3]. Un estudio algo más avanzado puede encontrarse en las Lecciones 12 a 14 y 22 de [4], o en las Secciones 2.7 y 3.3 de [2]. Información más exhaustiva puede encontrarse en [1]. El mensaje más simple que podemos extraer de las citadas referencias es que, como criterio general, se puede decir que si el número de condición de A es grande, deben tomarse con cierta precaución los resultados de resolver el sistema Ax = b. Señalemos por último que el comando norm de Matlab, además de calcular la norma de un vector x, calcula también la norma de una matriz. A su vez, el comando cond calcula el número de condición de una matriz, pero dado que es un comando costoso, existe también el comando condest que estima con bastante precisión (y de modo más económico) el número de condición. 2. Problemas sobredeterminados Introducción. Hay muchas situaciones donde se plantea la obtención de un cierto modelo matemá- tico lineal que se ajuste a un conjunto de datos dados. Esto conduce usualmente a la resolución de un sistema de ecuaciones lineales con más ecuaciones que incógnitas, o problemas sobredeterminados , y casi siempre incompatibles. Para dichos sistemas se introduce un concepto nuevo de solución, concepto que coincide con el usual cuando el sistema es compatible. Este concepto nuevo de solución se denomina solución en el sentido de mínimos cuadrados puesto que busca vectores que optimicen la norma euclídea del correspondiente vector residual. 2.1. Problemas sobredeterminados: Solución de mínimos cuadrados Cuando un sistema lineal tiene más ecuaciones que incógnitas es fácil que sea incompatible, esto es que no posea solución. Por ejemplo, al proceder por el método de eliminación en el sistema x1 + 2x2 = 3, f2 ← f2 − 2f1 x1 + 2x2 = 3, 2x1 + 3x2 = 5, −→ −x2 = −1, x1 + 3x2 = 2, f3 ← f3 − f1 x2 = −1, vemos que las dos últimas ecuaciones no pueden ser ambas ciertas, luego no hay solución posible. Por otro lado, si la última ecuación hubiese sido x1 + 3x2 = 4, el sistema con las tres ecuaciones hubiese sido compatible con solución x1 = x2 = 1. En la práctica es altamente improbabable que un sistema sobredeterminado sea compatible. Por ello, como vimos en primer curso, es necesario introducir un nuevo tipo de solución. De hecho, si en Matlab introducimos la matriz A y el vector 12 b, 1 2 A = 2 3 , 1 3 3 b = 5 , 2 y ejecutamos x=A\b, obtenemos x = 3.0000 -0.2727 Qué tipo de resultado es este, cómo se obtiene y cuánto cuesta son las cuestiones que abordamos en esta seccion. Empezaremos con el tipo de solución que es. Dada una matriz A real de orden m × n (m ≥ n) y un vector b ∈ Rm , se dice que x̃ ∈ Rn es una solución en el sentido de mínimos cuadrados del sistema Ax = b si se verica que kb − Ax̃k ≤ kb − Axk , para todo x ∈ Rn , o, equivalentemente, si x̃ es un mínimo de la función real de n variables ° ° n n ° ° X X ° ° xj A(:, j)° . x ∈ Rn 7→ f (x) = (bj − (Ax)j )2 = °b − ° ° (8) j=1 j=1 De hecho, la solución proporcionada por Matlab en el ejemplo mostrado es la solución de mínimos cuadrados del sistema incompatible Ax = b. Desde un punto de vista geométrico, estamos buscando la mejor aproximación en norma euclídea al vector b por vectores del subespacio generado por las columnas de A, denotado generalmente como col(A) o R(A). Como bien sabemos, por el teorema de la mejor aproximación, el vector de col(A) que menos dista de b es la proyección ortogonal de b sobre col(A), denotada Pcol(A) b. Como este vector siempre está en col(A) y las columnas de A son un generador de col(A), el sistema Ax̃ = Pcol(A) b es compatible, y por lo tanto siempre existe la solución de mínimos cuadrados. Notemos sin embargo que si A no tiene rango máximo, aunque la proyección Pcol(A) b es única, no ocurre lo mismo con la solución de mínimos cuadrados x̃. Si A no tiene rango máximo existen vectores x ∈ Rn no nulos con Ax = 0, en cuyo caso si x̃ es solución de mínimos cuadrados también lo es x̃ + x, pues A(x̃ + x) = Ax̃ = Pcol(A) b. En esta sección nos centraremos en el caso de que A tiene rango máximo, esto es, A m × n, m > n, rg(A) = n. Notemos además que si de un vector b restamos su proyección ortogonal sobre un subespacio V , PV b, el resultado b − PV b es ortogonal al subespacio V , o, abreviadamente, b − PV b ⊥ V . Si x̃ es solución de mínimos cuadrados, notemos entonces que Ax̃ = Pcol(A) b ⇔ b − Ax̃ ⊥ col(A) ⇔ AT (b − Ax̃) = 0 ⇔ AT Ax̃ = AT b. Resumimos todo lo anterior en el siguiente resultado. Teorema 2 (Ecuaciones normales de Gauss) Sea A una matriz real de dimensiones m×n y b ∈ IRm . Las siguientes armaciones son equivalentes: 1. x̃ es una solución en el sentido de mínimos cuadrados del sistema Ax = b. 2. x̃ es solución del sistema AT Ax = AT b (ecuaciones normales de Gauss). 3. b − Ax̃ es ortogonal a col(A). 13 Además, si el rango de A es máximo, rg(A) = n, entonces la solución de mínimos cuadrados es única. Nota 1 A las ecuaciones normales de Gauss también se llega sin necesidad de argumentos geomé- tricos. De hecho, la función f en (8) de la cual la solución de mínimos cuadrados x̃ es un mínimo es f (x) = kb − Axk2 = (b−Ax)T (b−Ax) = xT AT Ax−2xT AT b+bT b ⇒ ∇f (x) = 2(AT Ax−AT b), y el mínimo se alcanza allí donde el gradiente se anula. Las ecuaciones normales de Gauss están peor condicionadas que otros sistemas que también permiten encontrar la solución de mínimos cuadrados, de hecho, cond(AT A) = cond(A)2 , por lo que no conviene usarlas en los problemas de mínimos cuadrados. Es más, las técnicas ecientes para la resolución de los problemas de mínimos cuadrados suelen basarse en transformar las ecuaciones normales mediante ciertas factorizaciones matriciales que recordamos a continuación. 2.2. Descomposición QR de una matriz Recordemos el método de ortogonalización de Gram-Schmidt Teorema 3 (Método de ortogonalización de Gram-Schmidt). Sea {a1 , a2 , . . . , an } un con- junto de vectores linealmente independientes de IRm . Consideremos los vectores {v1 , v2 , . . . , vn } obtenidos con el siguiente procedimiento: 1. Tomamos v1 = a1 . 2. Para j = 2, 3, . . . , n, vj = aj − α1j v1 − α2j v2 − . . . − αj−1j vj−1 , donde αij = viT aj , viT vi i = 1, . . . , j − 1. (9) Entonces viT vj = 0 si i 6= j , y lin{a1 , a2 , . . . , aj } = lin{v1 , v2 , . . . , vj }, para j = 1, 2, . . . , n. De (9) despejamos aj como aj = vj + α1j v1 + α2j v2 + · · · + αj−1j vj−1 , con lo que si A = [a1 , . . . , an ] es la matriz m × n cuyas columnas son los aj y V = [v1 , . . . , vn ] es la matriz cuyas columnas son los vj , tenemos la relación A = V U, 1 α1,2 . . . α1,n−1 α1,n .. .. .. . . . . . . donde U es la matriz triangular superior U = .. .. .. 1 αn−1,n 1 14 . Llamando D = diag(kv1 k , . . . , kvn k), tenemos que −1 A = V U = V D−1 DU = V DU = QR, |D {z } |{z} Q con QT Q = I y R triangular superior, R (las columnas de Q no sólo son ortogonales entre sí sino que además tienen norma 1; por eso, QT Q es la identidad de orden n). Esta expresión de A como el producto QR se conoce como descomposición QR reducida de una matriz. En la práctica (ya veremos por qué en la siguiente sección donde estudiaremos las transformaciones de Householder), siempre se completa Q como [Q, Q0 ], donde Q0 es matriz m × (m − n) cuyas columnas son una base ortonormal del ortogonal de col(Q), de modo que [Q, Q0 ] es matriz m × m ortogonal, pues ¸ · ¸ · T · T¸ Q Q QT Q 0 I O Q T = . [Q, Q0 ] [Q, Q0 ] = [Q, Q0 ] = QT0 Q QT0 Q0 O I QT0 A su vez, completando R con m − r las de ceros tenemos que · ¸ R [Q, Q0 ] = QR + Q0 O = QR = A. O Resumimos lo expuesto en el siguiente resultado. Proposición 1 (Descomposición QR) Dada una matriz real A, de dimensiones m × n y de rango n ≤ m, existen matrices Q m × m con sus columnas formando un sistema ortonormal, esto es, QT Q = I 1 y R de dimensión m × n y de rango n, con sus m − n últimas las nulas, y sus n primeras las formando una matriz cuadrada triangular superior, tales que A = QR. Si se conoce una descomposición QR de la matriz A, entonces las soluciones en el sentido de mínimos cuadrados de Ax = b se pueden calcular resolviendo (por mínimos cuadrados) el sistema Rx̃ = QT b. (10) Ello es debido a que AT Ax̃ = AT b ⇒ RT QT Q Rx̃ = RT QT b | {z } ⇒ RT Rx̃ = RT QT b. =I Dicho de otro modo, x̃ también es solución de mínimos cuadrados de (10). Llamando R̃ a la matriz n × n invertible formada por las primeras n las de R (recordemos que estamos suponiendo A de rango máximo) Qn y Qm−n a las matrices formadas por las n primeras y m − n últimas columnas de Q, respectivamente, esto es · ¸ R̃ R= , Q = [Qn , Qm−n ], O 1 Una matriz cuadrada que cumple QT Q = I se denomina ortogonal y, por tanto, sus columnas, al ser ortogonales entre sí y de norma 1, forman una base ortonormal. Pero recuerde que no hay matrices ortonormales. Vea también la Nota 2. 15 el sistema (10) se escribe como · ¸ · T ¸ · T ¸ Qn Qn b R̃ x̃ = b= . T Qm−n QTm−n b O La solución de mínimos cuadrados de este sistema es x̃ = R̃ −1 · ¸´ ³ R̃ ⊥ col R = , pues Q b − Rx̃ = T Qm−n b O QTn b, T · (11) 0 ¸ con lo cual es la solución de RT Rx̃ = RT QT b, que es el mismo sistema de ecuaciones que AT Ax̃ = AT b, esto es, las ecuaciones normales del problema de mínimos cuadrados Ax = b. El uso de la descomposición QR para resolver por mínimos cuadrados el sistema Ax = b, como hemos mencionado, presenta ventajas desde el punto de vista numérico. En la siguiente tabla mostramos los errores relativos kx̂ − x̃k / kx̃k, donde x̂ se obtuvo resolviendo las ecuaciones normales de Gauss y mediante la descomposición QR. Las matrices A se eligieron aleatoriamente de dimensiones m × m/4, modicándose su última columna para que cond(A) no fuese pequeño. m 24 48 96 192 384 768 −12 −11 −10 −08 −06 error Gauss 4,06 × 10 5,76 × 10 3,42 × 10 2,43 × 10 1,70 × 10 1,52 × 10−05 −15 −13 −14 −13 −12 error QR 7,27 × 10 1,02 × 10 2,66 × 10 5,30 × 10 3,75 × 10 1,01 × 10−11 Saque usted sus propias conclusiones. 2.3. Método de Householder para la descomposición QR Recuerde que una simetría especular es una transformación de Rm en sí mismo que transformaba cada punto en su simétrico respecto de un hiperplano (subespacio de Rm de dimensión m − 1). Si dicho hiperplano V tiene por ecuación implícita v T x = 0, para un cierto vector no nulo v de Rm , © ª V = x ∈ Rm |v T x = 0 , la simetría especular en torno a V es x 7→ (I − 2 vv T )x. vT v Recuerde que, si la ecuación implícita de V es v T x = 0, el ortogonal de V es lin(v) y el de lin(v) es V: V ⊥ = lin(v), lin(v)⊥ = V. x¡ µ © ©© ©©V © v 6 ¡ ¡ ¡ ¡ ¡ @ @ © ©© © © © @ @ vv T @ (I − 2 T )x @ R v v 16 Recuerde que la matriz de una simetría especular es ortogonal, pues multiplicando por su traspuesta se obtiene (I − 2 vv T T vv T vv T vv T vv T vv T vv T ) (I − 2 ) = (I − 2 )(I − 2 ) = I − 4 + 4 · , vT v vT v vT v vT v vT v vT v vT v y observando que v T v es un escalar, se llega a 4 vv T vv T (vv T )(vv T ) v(v T v)v T (v T v)vv T vv T = 4 = 4 = 4 · = 4 vT v vT v (v T v)2 (v T v)2 (v T v)2 vT v con lo que vv T T vv T ) (I − 2 ) = I. vT v vT v Las simetrías especulares pueden denirse para llevar un vector y1 x1 .. .. m x= . ∈R , en otro distinto y = . ∈ Rm , siempre que xm ym (I − 2 pues si para kxk = kyk , kxk = kyk , v = x − y, se tiene que vv T )x = y. vT v Las transformaciones de Householder son un caso particular de simetrías especulares del tipo anterior, pues sirven para transformar un vector cualquiera x en otro y = ± kxk e1 proporcional al primer vector coordenado e1 . La correspondiente matriz H la presentamos en el siguiente resultado. (I − 2 Teorema 4 Sea x ∈ Rm (m > 1) y x 6= 0. La matriz vv T I −2 T , v v verica que ½ donde v = x + δ kxk e1 , δ= sign(x1 ), 1 x1 = 6 0, x1 = 0. −δ kxk 0 Hx = .. . . 0 Pasemos a obtener la factorización QR de una matriz A de dimensión m × n (m ≥ n > 1) y con rango rg(A) = n. Llamemos a11 b1 = ... am1 17 a la primera columna de la matriz A. Aplicamos el teorema anterior y se determina una matriz de Householder H1 (de orden m) de modo que la primera columna de H1 A tenga las componentes nulas por debajo de la diagonal, H1 A = A(2) = (2) a11 0 .. . 0 (2) (2) a12 . . . a1n (2) (2) a22 . . . a2n .. .. . . (2) (2) am2 . . . amn , y denotamos Q(1) = H1 . Ahora nos jamos en la segunda columna de la matriz A(2) a partir de la diagonal, en concreto en el vector (2) a22 .. b2 = . . (2) am2 f2 (de orden m− 1) Volvemos a aplicar el teorema anterior y obtenemos una matriz de Householder H f2 b2 tenga las componentes nulas por debajo de la primera. Por tanto si denimos de modo que H (2) (2) (2) (2) a11 a12 a13 . . . a1n (3) (3) 0 a(3) a23 . . . a2n · ¸ 22 T 1 0 (3) (3) (2) (3) 0 0 a . . . a H2 = , tenemos que H A = A = 2 33 3n , f2 0 H .. .. .. .. . . . . 0 y denotamos 0 (3) (3) am3 . . . amn Q(2) = H2 . El resto de los pasos son completamente similares. Teorema 5 Para cualquier matriz A de dimensión m × n con 1 < rg(A) = n ≤ m, el método ¡ ¢T anterior genera una matriz ortogonal Q(= Q(1) · · · Q(m−1) = Q(m−1) · · · Q(1) ) de dimensión m × m y una matriz R(= A(m) ) de dimensión m × n cuyas m − n últimas las son nulas y cuyas n primeras forman una matriz triangular superior de rango n, y tales que A = QR. Nota 2 Una matriz Q cuadrada de orden m se dice que es ortogonal si sus columnas forman una base ortonormal de Rm . Si escribimos Q por columnas como Q = [q1 , . . . , qm ], entonces Q es ortogonal si y sólo si, qiT qj = 0 para i 6= j y qiT qi = kqk = 1. Por tanto, se tiene también que Q es ortogonal si y sólo si QT Q = I, o, equivalentemente, Q−1 = QT . El costo computacional de obtener la factorización QR por el método de Householder descrito anteriormente es de 3 (12) O(2m2 n − n3 ) ops. 18 y el de resolver el problema de mínimos cuadrados Ax = b (sin calcular explícitamente Q) es de O(mn2 − n3 ) 3 ops. (13) Es decir, para matrices cuadradas es aproximadamente el doble que el de resolver Ax = b con el método de eliminación gaussiana. 3. Matrices de rango deciente: Descomposición en valores singulares Introducción. En la sección anterior hemos tratado el caso de sistemas lineales Ax = b siendo A una matriz con más las que columnas, pero de rango máximo. Tratamos ahora el caso en que el rango no es máximo. En este caso, la matriz A de coecientes del sistema se dice que es de rango deciente. Un ejemplo de dicho sistema es por ejemplo, 1 2 1 1 1 3 4 x1 x2 = 3 2 5 5 −2 x3 3 8 9 0 Si procedemos a resolverlo como hacíamos en primero, 1 2 1 1 −→ 1 2 1 1 1 3 4 x1 3 f 2 ← f 2 − f 1 0 1 3 x1 2 2 5 5 x2 = −2 f3 ← f3 − 2f1 0 1 3 x2 = −4 x3 x3 3 8 9 0 f4 ← f4 − 3f1 0 2 6 −3 1 2 1 1 0 1 3 x1 2 −→ 0 0 0 x2 = −6 , x3 0 0 0 −7 −→ f3 ← f3 − f2 f4 ← f4 − 2f2 sistema que es claramente incompatible pues las dos últimas ecuaciones son 0x3 = −6 y 0x4 = −7, que no pueden satisfacerse. Observamos también que la matriz es de rango 2 (menor que su número de columnas). Esto signica que Ac = 0 tiene innitas soluciones. De hecho si resolvemos el sistema homogéneo Az = 0, obtemos que las soluciones z son proporcionales a −5 c = 3 , satisface que Ac = 0. −1 Si introducimos en Matlab la matriz A y el vector b y ejecutamos x=A\b, Matlab devuelve, Warning: Rank deficient, rank = 2 tol = 9.8504e-15. 19 x = 0 -0.9333 0.8667 Observamos en primer lugar que° Matlab ° nos avisa de que la matriz−15es de rango 2 o, siendo más ° preciso, que una matriz à con à − A°/ kAk ≤ tol = 9,8504 × 10 tiene rango 2. Es más, el comando rank de Matlab lo que realmente intenta estimar es el denominado rango ε-aproximado de A, es decir, el número de valores singulares de A mayores que ε. La ayuda en línea de Matlab permite conocer el valor por defecto de ε. La solucíon obtenida es (aproximación a una) solución de mínimos cuadrados, ya que se verica que AT (b − Ax) = 0 con un cierto error de redondeo. En efecto, ejecutando A'*(b-A*x), Matlab responde ans = 1.0e-13 * -0.0533 -0.1421 -0.1243 Notemos además que la solución x proporcionada por Matlab es una de las muchas posibles, ya que ¾ Ac = 0, ⇒ AT (b − A(x + λc) = 0, ∀λ ∈ R, AT (b − Ax) = 0 esto es, tenemos innitas soluciones de mínimos cuadrados de la forma x + λc. Es estándar en el caso matrices de rango deciente, aceptar como solución la que se conoce como solución optima , que se dene como aquella solución x∗ en el sentido de mínimos cuadrados tal que kx∗ k ≤ kx̃k para toda x̃ solución de mínimos cuadrados de Ax = b. En el ejemplo anterior, la solución óptima, aproximada a 5 dígitos decimales, es −0,5238 −0,6190 0,7619 Luego vemos que Matlab no necesariamente proporciona la solución optima en un problema de mínimos cuadrados. El cálculo efectivo de la solución óptima pasa por la descomposición en valores singulares de la matriz A, abreviada SVD del inglés singular value decomposition". Antes de ver cómo se calcula la solución óptima x∗ , terminamos esta introducción con un resultado de caracterización de la misma. Teorema 6 Sea A matriz de dimensiones m × n con rg(A) = r < n ≤ m y b ∈ Rn . 1. Si x̃ es una solución de mínimos cuadrados del problema Ax = b, entonces el conjunto de soluciones de mínimos cuadrados es {y = x̃ + z|z ∈ Nul(A)}, donde 20 Nul(A) = {z ∈ Rn |Az = 0}. 2. La solución óptima x∗ es la única que satisface que z T x∗ = 0, para todo z ∈ Nul(A) o, lo que es idéntico, x∗ pertenece al espacio imagen de AT . Descomposición en valores singulares (SVD). Dada un matriz A ∈ Rm×n (m ≥ n) de rango r obtenemos los autovalores de la matriz AT A (simétrica semidenida positiva) que podemos suponer λ1 ≥ . . . ≥ λr > 0 = λr+1 , . . . , λn y la correspondiente base de autovectores asociados, {v1 , . . . , vn }, (AT Avj = λj vj , j = 1, . . . , n), que sabemos que puede elegirse ortonormal (vjT vk = 0 si j 6= k , y kvj k = 1, j = 1, . . . , n). Los valores singulares de la matriz A son p σj = λj , j = 1, . . . , r. Los vectores singulares derechos (o por la derecha) son v1 , . . . , vn . Los vectores singulares izquierdos o por la izquierda son 1 1 u1 = Av1 , . . . , ur = Avr . σ1 σr (note que son solamente los correspondientes a autovalores no nulos de AT A). Puede comprobarse que {u1 , ..., ur } es un sistema ortonormal en Rm . Si dicho sistema se amplía u1 , . . . , ur , ur+1 , . . . , um hasta una base ortonormal de todo Rm y formamos las matrices U y V , que por columnas se escriben U = [u1 , . . . , um ] (m × m), V = [v1 , . . . , vn ] (n × n), es fácil ver que para la matriz Σ de dimensión m × n, σ1 0 . . . 0 0 . . . . . . 0 σ2 . . .. .. . . .. .. ... 0 0 . . . Σ= 0 . . . 0 σr 0 . . . 0 ... 0 0 0 ... . .. .. .. . . .. . . . . 0 ... 0 0 0 ... se tiene que AV = U Σ, y, por tanto, 0 .. . · ¸ 0 Σ1 O 0 = O O 0 .. . 0 A = U ΣV T . El siguiente teorema recoge la existencia y unicidad de la factorización SVD. 21 Teorema 7 Para cualquier matriz A de dimensión m × n con (m ≥ n), y de rango r ≤ n, existen dos matrices ortogonales U de dimensión m × m y V dimensión n × n y otra matriz Σ de dimensión m × n tales que σ1 0 . . . 0 · ¸ . . Σ1 O 0 σ2 . . .. T T A = U ΣV = U V , donde Σ1 = . . , O O .. ... 0 .. 0 . . . 0 σr con σ1 ≥ · · · ≥ σr > 0, estando Σ determinada de forma única. Los números σi son necesariamente las raíces cuadradas de los autovalores no nulos de la matriz AT A, y se les denomina valores singulares de A. Dada una matriz A de dimensión m × n, de rango r con la siguiente factorización SVD, · ¸ Σ1 O A=U V T, Σ1 = diag(σ1 , . . . , σr ), O O se denomina matriz inversa generalizada de Moore-Penrose (o, simplemente pseudoinversa) de A a la matriz A+ de dimensiones n × m dada por · + ¸ Σ O + A =V UT , donde Σ+ = Σ−1 1 . O O Si la matriz A es cuadrada y no singular, se verica que A+ = A−1 , lo cual justica el nombre de pseudoinversa. Por otro lado si A es de dimensión m × n con rg(A) = n ≤ m, entonces A+ = (AT A)−1 At . Es decir, la pseudoinversa permite resolver las ecuaciones normales de Gauss, AT Ax̃ = AT b, cuando éstas tienen solución única. En el caso de que la solución no sea única se tiene el siguiente resultado. Teorema 8 Sean A matriz m × n con (m ≥ n), y b ∈ Rm . Entonces el vector x∗ ∈ Rn es la solución óptima del problema de mínimos cuadrados asociado al sistema Ax = b si y sólo si x∗ = A+ b. Nota 3 El método con el que hemos obtenido aquí la SVD no se debe emplear para su cálculo efec- tivo en el ordenador. Hay otros procedimientos más ecaces (véase por ejemplo Golub & Van Loan, Matrix Computations (2nd Ed) , John Hopkins University Press, London, 1989) que no veremos este curso. Nos bastará con saber que el costo computacional es de O(2m2 n + 4mn2 + 29 n3 ) ops. (14) y que, en Matlab, se puede calcular con el comando svd. En el siguiente gráco mostramos los tiempos de ejecución en segundos que resultan de efectuar la descomposición QR y de calcular la SVD para matrices aleatorias de orden 2n × n, con n = 80, 160, 320, 640 y 1280. Corresponden a la ejecución de los comandos svd y qr de Matlab sobre una estación de trabajo SUN Ultra-60 a 450 MHz. 22 Si llamamos tn al tiempo de ejecución de un comando para un valor determinado del número de columnas n, cada par (n, tn ) está representado en el gráco con un asterisco. Los pares correspondietes a la SVD están unidos con línea de trazos, y los de QR con línea continua. Con ello, nos hacemos idea de qué hubiera ocurrido de haber probado con valores intermedios. Dado que las matrices son de orden 2n × n, en virtud de (1214), los costos deben crecer como n3 . Dado que el gáco está hecho en doble escala logarítmica (comando loglog de Matlab), los puntos se alinean en torno a rectas de pendiende aproximadamente 3. De hecho, se muestran los valores de las pendientes resultantes de ajustar sendas rectas por mínimos cuadrados a los pares (log10 (n), log10 (tn )). Como vemos, dichos valores son aproximidamente 3, pues log10 (n3 ) = 3 log10 (n). QR vs SVD: A 2nxn 4 10 3 SVD slope SVD: 3.27 10 slope QR: 2.86 2 seconds 10 mean(SVD./QR): 5.2 1 10 QR 0 10 −1 10 −2 10 1 10 2 3 10 10 4 10 n También en virtud de (1214), dado que las matrices son de orden 2n×n, el costo de la SVD debe ser aproximadamente de 41n3 /2 ops, mientras que el de la descomposición QR es de 19n3 /3 ops, esto es, la SVD debe resultar aproximadamente 3 veces más cara que la factorización QR. Calculando para cada n los cocientes entre los tiempos de ejecución tn de una y otra descomposición, y tomando la media, ésta sale de 5,2. El hecho de que no sea un valor cercano a 3 puede ser debido a que el costo mostrado en (14) es el de una de las posibles técnicas para su cálculo; en todas ellas el costo depende de los factores m2 n y mn2 , aunque los coecientes que multiplican a estas cantidades son ligeramente distintos de los mostrados en (14). Nótese también que mientras los puntos correspondientes a la SVD están relativamente bien alineandos, no ocurre lo mismo con los de la descomposición QR, pudiendo esto distorsionar el cálculo de la media. 23 4. Cuestiones y problemas CUESTIONES Ejercicio 1 Obtenga la factorización LU de la matriz 2 1 A= 2 4 4 2 3 6 0 1 2 1 1 0 . 1 2 Una vez obtenida la factorización, resuelva el sistema Ax = b donde b = [4, 2, 5, 7]T . Ejercicio 2 Deduzca que el costo en ops de calcular la inversa de una matriz A de orden n es n3 ops. Recuerde que n X j2 = j=1 (2n + 1)(n + 1)n . 6 Ejercicio 3 Si D es una matriz diagonal m × n, razone por qué kDk = máx 1≤j≤mı́n(m,n) |djj | . Ejercicio 4 Pruebe que si λ es autovalor de la matriz cuadrada A, entonces se tiene que |λ| ≤ kAk. Encuentre un ejemplo de una matriz A para la que si λ es cualquiera de sus autovalores entonces |λ| < kAk. Ejercicio 5 Sea Q de dimensiones m × n y tal que QT Q = I 1. ¾Puede ser n > m? ¾Por qué? 2. Razone por qué kQxk = kxk, para todo vector x de n componentes. 3. Encuentre un argumento (y° un ejemplo) que muestre que si Q no es cuadrada, hay ° ° entonces ° vectores x para los cuales °QT x° = kxk, y otros vectores x para los cuales °QT x° < kxk. ¾Puede este último caso darse si Q es cuadrada? ° ° 4. Pruebe que °QT x° ≤ kxk. Ejercicio 6 Basándose en el ejercicio anterior, pruebe que si Q es matriz rectangular tal que QT Q = I , entonces kQk = kQT k = 1. Ejercicio 7 Basándose en el Ejercicio 5, razone por qué si Q es cuadrada de orden m y QT Q = I , entonces para toda matriz A de dimensiones m × n se tiene que kQAk = kAk, y para toda matriz B de dimensiones k × m se tiene que kBQk = kBk. p Ejercicio 8 Pruebe que si A es matriz m × n, entonces kAk = ρ(AT A). 24 Ejercicio 9 Determine la norma euclídea de la matriz · 2 −1 1 1 ¸ . Ejercicio 10 Encuentre un argumento que muestre que para todo vector x ∈ Rn se tiene que máx |xj | ≤ kxk . 1≤j≤n ¾Sabría encontrar vectores para los que se da la igualdad en la desigualdad anterior? Ejercicio 11 Repita el ejercicio anterior pero con la desigualdad siguiente: Para todo x ∈ Rn se tiene que kxk ≤ √ n máx |xj | . 1≤j≤n Ejercicio 12 a) Si A es una matriz m × n y aT1 , . . . , aTm son sus las, razone por qué kAk ≤ √ m máx kai k . 1≤i≤m b) Basandose entonces en el Ejercicio 11, concluya entonces que √ kAk ≤ mn máx |aij | . 1≤i≤m 1≤j≤n Ejercicio 13 Determine el número de condición de matriz 1 2 1 0 −1 2 . 1 0 −1 Ejercicio 14 Determine la solución de mínimos cuadrados, vía ecuaciones normales, del sistema sobredeterminado Ejercicio 15 Idem con x1 + x2 −x1 + x2 x1 + x3 x1 + x2 =0 =1 =1 =1 . 3x1 − x2 = 0 4x1 + 2x2 = 2 . x2 = 1 Ejercicio 16 Si A es una matriz cuadrada e invertible, pruebe que la solución del problema de mínimos cuadrados Ax = b, coincide con la solución del sistema lineal Ax = b. Ejercicio 17 Aplicando el método de Gram-Schmidt, obtenga una factorización QR de la matriz 1 2 0 A = 0 1 0 . 1 4 1 25 Ejercicio 18 Idem con 1 2 0 0 1 0 . A= 1 −2 2 2 0 −1 Ejercicio 19 Siendo x el vector x = [2, 0, 1, −2]T , y e1 el primer vector coordenado de R4 , calcule la matriz de Householder H tal que Hx es proporcional a e1 . Ejercicio 20 Obtenga una factorización QR de la matriz · A= 1 −1 1 0 ¸ , utilizando transformaciones de Householder. Ejercicio 21 a) Mediante transformaciones de Householder, encuentre la descomposición QR de la matriz 4 −3 A= 0 0 3 4 0 0 5 0 . 3 4 b) Resuelva el problema de mímimos cuadrados Ax = b donde A es la matriz del apartado anterior y b = [0, 0, 9, 4]T . Ejercicio 22 Calcule el número de condición de una matriz invertible cuyas columnas sean ortogonales entre sí. Ejercicio 23 Calcule la descomposición en valores singulares de la matriz 1 1 1 0 1 . A = −1 1 −1 1 Ejercicio 24 Idem con la matriz 1 2 1 A = 2 −2 2 . 2 1 2 Ejercicio 25 Calcule la SVD de la matriz 1 5 A= 5 1 26 5 1 . 1 5 Ejercicio 26 Obtenga la SVD de 1 1 A= 1 1 1 1 1 1 1 1 . 1 1 Ejercicio 27 Aplique el resultado del ejercicio anterior para encontrar la solución óptima del problema de mínimos cuadrados Ax = b con b = [1, 2, 3, 4]T . Ejercicio 28 Repita los dos ejercicios anteriores con 1 0 A= 1 0 0 1 0 1 1 1 , 1 1 1 2 b= 3 . 4 Ejercicio 29 Pruebe que si A matriz cuadrada de orden n es invertible, entonces s λn (AT A) , λ1 (AT A) cond(A) = donde λ1 (AT A) y λn (AT A) son, respectivamente, el menor y el mayor de los autovalores de la matriz AT A. En general, si A es una matriz rectangular m × n cuyo rango es r = mı́n(m, n), el número de condición de A se dene como σ1 /σr , donde σ1 , . . . , σr son sus valores singulares. Ejercicio 30 Pruebe que efectivamente A+ b es la solución óptima del problema de mínimos cuadrados Ax = b. Ejercicio 31 Muestre que la pseudoinversa generalizada de una matriz A de dimensión n × n verica que (AA+ )T = AA+ , (AA+ )2 = AA+ . Interprete el signicado de las igualdades anteriores desde el punto de vista de la teoría de aplicaciones lineales. Ejercicio 32 Pruebe que los autovalores de toda matriz ortogonal son de módulo unidad. De- muestre que λ = −1 es siempre un autovalor de cualquier matriz de Householder. Interprete geométricamente este hecho para las matrices de orden dos. Ejercicio 33 Considere la matriz 1 1 A = −1 0 . 0 1 Calcule su descomposición en valores singulares y la solución óptima de Ax = b con b = [1, 2, 3]T . ¾Cúal es el rango de A? ¾y su norma euclídea?. 27 Ejercicio 34 Razone por qué si A = QR es una descomposición de la matriz cuadrada A, entonces A y RQ tienen los mismos autovalores. Ejercicio 35 Determine los autovalores y autovectores de la matriz de Householder que lleva [1, 2, 4, 2]T en [−5, 0, 0, 0]T . Ejercicio 36 Si A es una matriz m × n, obtenga el costo en ops de su factorización QR reducida por el método de Gram-Schmidt. Compruebe que el costo de la factorización QR por el método de Householder es el que se indica en (12). Ejercicio 37 Determine la inversa generalizada de la matriz 1 0 1 0 1 0 . 1 0 1 Ejercicio 38 Calcule la descomposición en valores singulares d la matriz de Householder que lleva el vector [1, −2, 2]T en [−3, 0, 0]T . PROBLEMAS Problema 1 Recordamos que el algoritmo de eliminación gaussiana sin pivoteo requiere, para cada k , encontrar los multiplicadores (k) (k) lik = aik /akk , con i = k + 1, ..., n, y, a continuación, restar a cada la i posterior a k , la la k -ésima multiplicada por lik . 1. Elabore una función de Matlab que, dada una matriz cuadrada A, devuelva las matrices L y U de su factorización sin pivoteo A = LU y que use tres ciclos for en su programación. Con una matriz cualquiera (por ejemplo, una matriz aleatoria obtenida con la orden rand(4)), compruebe su función viendo si el resultado de efectuar A − L ∗ U es una matriz de ceros o una matriz cuyos elementos son del orden de precisión de la máquina. 2. Repita el apartado anterior pero, esta vez, procure que el código que implementa la eliminación gaussiana sin pivoteo efectúe un único ciclo for. Para ello, observe que la multiplicación del vector columna l ∈ Rp por el vector la a ∈ Rq , da como resultado la siguiente matriz de dimensiones p × q : l1 a1 · · · l1 aq l1 ¤ £ .. . .. l ∗ a = ... a1 · · · aq = ... . . lp a1 · · · lp aq lp ¾Qué ventajas cree que pueden obtenerse con este estilo de programación? 28 3. Elabore una tabla con los errores relativos que se cometen al resolver un sistema de ecuaciones lineales con la factorización LU programada como en el punto anterior y con la orden \ de Matlab. Para ello, elija matrices de modo aleatorio An ∈ Rn×n con n = 10, 20, 40, 80, 160, 320, (use la orden rand) y tome como vectores bn = An xn donde los vectores xn ∈ Rn×1 también se eligen de modo aleatorio. Comente, compare y explique la evolución de los errores relativos, en ambos casos. 4. Modique la función del apartado dos, para diseñar otra función que implemente la factorización asociada a la eliminación con pivoteo parcial de una matriz cuadrada. Con esta función, repita el apartado anterior. ¾Qué conclusiones podemos sacar? 5. Usando la orden cputime de Matlab, obtenga una tabla con los tiempos de ejecución de la factorización asociada a la eliminación con pivoteo parcial, utilizando el código del apartado cuatro y la orden lu de Matlab. Para ello, considere nuevamente matrices aleatorias An ∈ Rn×n , con n = 10, 20, 40, 80, 160, 320; es decir, doble en cada paso la dimensión. ¾Cómo cambia el tiempo de ejecución de su programa? ¾era previsible esa evolución? ¾por qué la orden de Matlab es más rápida que su programa? Problema 2 La matriz de Hilbert de orden n se dene como µ Hn := 1 i+j−1 ¶ . i,j=1,...,n 1. Diseñe dos funciones diferentes de Matlab que proporcionen la matriz de Hilbert de orden n : una debe usar bucles for y la otra asignaciones vectoriales de Matlab. El argumento de entrada debe ser n en ambos casos. 2. Obtenga una función de Matlab que proporcione una tabla con los números de condición en norma euclídea de las n primeras matrices de Hilbert. Aplique dicha función a n = 15. 3. Para n = 5, 10 y 15, calcule los vectores w5 , w10 y w15 formados por las sumas de las las de la correspondientes matrices de Hilbert. ¾Qué ocurre al resolver con Matlab los sistemas de ecuaciones lineales H5 x = w5 , H10 x = w10 , H15 x = w15 ? Comente y justique las diferencias en precisión observadas en las tres soluciones. 4. Sean x5 , x10 y x15 las soluciones proporcionadas por Matlab en el apartado anterior. Calcule numéricamente los valores residuales Hi xi − wi . ¾Porqué no es able considerar, como solución de un sistema Ax = b, un vector cuyo valor residual sea muy pequeño? Problema 3 Considere el siguiente sistema Ax = b de ecuaciones lineales x1 + x2 + x3 + x4 εx1 εx2 εx3 εx4 29 = = = = = 1 0 0 , 0 0 ε > 0. 1. ¾Para qué valores de ε tiene el sistema anterior solución única en el sentido de los mínimos cuadrados? En su caso, obtenga la solución exacta de modo simbólico. Recuerde que si v ∈ Rn 1 es un vector columna no nulo, entonces la matriz I + λvv t es invertible siempre que λ 6= − kvk 2 y la correspondiente inversa viene dada por (I + λvv t )−1 = I − λ vv t . 1 + λv t v 2. Para los valores del parámetro ε = 10−2 , 10−4 , 10−6 y 10−8 , resuelva las ecuaciones normales de Gauss asociadas al sistema y obtenga los correspondientes errores relativos. ¾Son ables los resultados obtenidos? 3. Diseñe una función de Matlab que, dada una matriz A, devuelva la factorización QR normalizada obtenida mediante el método de Gram-Schmidt. Use dicha factorización para resolver nuevamente los problemas de mínimos cuadrados del apartado dos. ¾Qué observa? ¾son mejores estos resultados que los del apartado anterior? ¾le parecen aceptables los errores relativos obtenidos? 4. Diseñe una función de Matlab que resuelva las ecuaciones normales de Gauss mediante la orden qr de Matlab, y cuyo argumento de entrada sea el parámetro ε. Compare estos resultados con los de los apartados anteriores y describa y justique el fenómeno numérico observado. 5. Resuelva los problemas de mínimos cuadrados que venimos considerando mediante la orden barra inclinada de Matlab. Justique las similitudes y diferencias de estos nuevos resultados con los de los apartados anteriores. Problema 4 Recordamos inicialmente el método de Gramm-Schmidt que, aplicado a una matriz A de dimensiones m × n, produce una descomposición (reducida) QR. En concreto, escribiendo A 1 por columnas como A = [a1 , ..., an ] (con aj ∈ Rm ), se asignan primero r1,1 := ka1 k y q1 := a1 , y r1,1 posteriormente (para k = 2, ..., n) se realizan las siguientes operaciones r ←− [q1 , ..., qk−1 ]T ak , u ←− ak − [q1 , ..., qk−1 ]T r rk,k : = kuk , rj,k := rj , para j = 1, ..., k − 1 1 qk : = u rk,k Aunque se sabe que el procedimiento anterior de Gramm-Schmidt no es generalmente el mejor, hay veces en la práctica donde su uso es necesario. Por ejemplo, suele utilizarse cuando la matriz A no se conoce a priori y se va calculando dinámicamente a partir de las columnas de Q. 30 1. Una opción para mejorar la precisión del procedimiento de Gramm-Schmidt es efectuar, en cada etapa y bajo ciertas condiciones, reortogonalizaciones que mitiguen la posible pérdida de ortogonalidad numérica de dicho proceso. En concreto, jado previamente un valor umbral kuk tol, en cada etapa se calculan inicialmente u y r y, si ≤ tol, se vuelven a calcular u y r kak k de la siguiente forma: u ←− u − [q1 , ..., qk−1 ]T s, con s = [q1 , ..., qk−1 ]u, r ←− r + s. Diseñe una función de Matlab que implemente el descrito método de Gramm-Schmidt con reortonormalización. 2. Para ε = 1, 10−2 , 10−4 , 10−6 , 10−8 , 10−10 , determine el error relativo (en norma euclídea) cometido al resolver el problema de mínimos cuadrados x1 + x2 + x3 + x4 = 1 = 0 εx1 = 0 , εx2 ε>0 εx3 = 0 εx4 = 0 utilizando la descomposición QR reducida proporcionada por la función del apartado anterior. 3. Otro procedimiento para mejorar el método de Gramm-Schmidt es el que se conoce como 1 método de Gramm-Schmidt modicado. Se asignan inicialmente r1,1 := ka1 k y q1 := a1 y, r1,1 a continuación, para k = 1, ...n − 1, se realizan las siguientes operaciones: s ←− rk,k+j = ak+j ←− rk+1,k+1 : qk+1 : qkT [ak+1 , ..., an ], sj , para j = 1, ..., n − k ak+j − sj qk , para j = 1, ..., n − k = kak+1 k 1 ak+1 . = rk+1,k+1 Diseñe una función de Matlab que implemente este método de Gramm-Schmidt modicado. 4. Repita el apartado dos pero utilizando la descomposición QR reducida obtenida con la función desarrollada en el apartado tres. ¾Qué conclusiones saca? Problema 5 Si v y w son dos vectores de m componentes, a la hora de multiplicar una matriz A de dimensiones m × n por la matriz vwT no es necesario construir está; se puede efectuar como v(wT A). 1. Elabore una función de Matlab que dados un vector v de m componentes y una matriz A de dimensiones m × n devuelva el producto µ ¶ vv T I −2 T A v v 31 sin construir ninguna matriz de rango 1. En la expresión anterior, I es la identidad. Escriba la función, así como el resultado de aplicar su función a v = [1, 2, 3]T y A = [4, 5, 6]T . 2. Utilizando la función del apartado anterior, elabore otra función de Matlab que dada una matriz A de dimensiones m×n, devuelva la matriz R de la descomposición QR de A calculada con el método de Householder. 3. Cuando en la descomposición QR no se dispone de la matriz Q pero se puede calcular R, la solución de mínimos cuadrados de Ax = b (con A matriz m × n) se puede obtener calculando la matriz e = [R, r] , R matriz m × n, r ∈ Rm R de la descomposoción QR de la matriz B = [A, b], pues la solución x e de mínimos cuadrados de Ax = b lo es de Rx = r. Explique por qué. 4. Sepa o no responder a la pregunta anterior, calcule con ese procedimiento (y la función del apartado dos) la solución x e de mínimos cuadrados de Ax = b, donde 1 1 1 1 1 ε 0 0 0 1 , con ε = 10−10 y b = 1 . 0 ε 0 0 A= 0 0 ε 0 1 0 0 0 ε 1 Escriba el valor de x e1 − 0,25. 5. Modique la función del apartado dos para que también devuelva el factor Q de la descomposición QR. Escriba el valor q33 de Q obtenido al aplicárselo a la matriz del apartado anterior. Problema 6 Dadas N parejas de datos, (x1 , y1 ), ..., (xN , yN ), se denomina polinomio de ajuste de grado M , al polinomio (cuando exista) p(x) = c0 +c1 x+· · ·+cM xM cuyos coecientes son la solución en mínimos cuadrados del sistema de N ecuaciones con M + 1 incógnitas p(x1 ) = y1 , ..., p(xN ) = yN . 1. Diseñe una función en Matlab que proporcione los coecientes del polinomio de ajuste de grado M de una colección de parejas {(xk , yk ) : k = 1, ..., N } mediante la resolución de las ecuaciones normales de Gauss y utilizando la orden qr de Matlab. Los argumentos de entrada deben ser el vector de datos X = [x1 , ..., xN ], el correspondiente vector de datos Y = [y1 , ..., yN ] y el grado M. 2. Utilizando la función anterior, obtenga los coecientes de la parábola óptima (M = 2) que ajusta los cuatro puntos (−3, 3), (0, 1), (2, 1) y (4, 3). Asimismo, dibuje en una misma gráca la parábola y los cuatro puntos obtenidos. 3. Repita el apartado anterior pero con las siguientes parejas de datos: (−3, 3), (0, 1), (−3, 1), (0, 2). ¾Por qué los resultados obtenidos no son satisfactorios? 32 4. Considere la colección de pares F = {(1, 2), (2, 5), (3, 10), (4, 17), (5, 26)}, la cual se intenta D ajustar con una fórmula del tipo y = x+C . Para ello realice primero el cambio de variables X = xy, Y = y y posteriormente utilice la función del apartado uno para obtener los coecientes del correspondiente polinomio de ajuste lineal (M = 1). 1 y el cambio de 5. Repita el apartado anterior pero considerando ahora la fórmula y = Ax+B 1 variables X = x, Y = y . Determine cuál de las dos curvas de ajuste obtenidas es mejor y explique por qué una de las soluciones es completamente absurda. Problema 7 Considere la matriz: 1 2 3 4 5 6 7 8 A= 9 10 11 12 13 14 15 16 1. ¾Es posible realizar la descomposición A = LU sin intercambio de las? Calcule numéricamente una descomposición P A = LU con pivoteo parcial. £ ¤t 2. Considere el vector b= 1 1 1 1 . Resuelva el sistema Ax = b, directamente con la orden \ de Matlab y con la descomposición P A = LU obtenida en el apartado anterior. Calcule la norma euclídea de las dos soluciones y explique el resultado obtenido. Compruebe previamente que ambas soluciones lo son en el sentido de los mínimos cuadrados. 3. Construya una función de Matlab que devuelva la solución óptima en el sentido de los mínimos cuadrados. Los argumentos de entrada deben ser la matriz A y el vector b. Puede emplear la orden svd de Matlab. Calcule la norma euclídea de la solución Ax = b obtenida con esta función. Compárela con las del apartado dos y explique el resultado. 4. Genere matrices aleatorios An de orden n y vectores aleatorios bn ∈ Rn con n = 40, 80, 160, 320, 640 y calcule los tiempos de ejecución de An \b, usando la orden \ de Matlab y la función del apartado tres. Con los datos obtenidos, muestre una tabla de n frente al tiempo (escala logarítmica) y estime de modo aproximado el orden de los dos métodos. ¾Le parece razonable que el comando \ de Matlab no calcule la solución óptima por defecto? Referencias [1] N. J. Higham, Accuracy and Stability of Numerical Algorithms. Second edition.. SIAM, Philadelphia (PA), 2002. [2] G. H. Golub & C. F. van Loan, Matrix computations. Third edition . Johns Hopkins University Press, Baltimore, MD, 1996. [3] G. W. Stewart, Afternotes in Numerical Analaysis . SIAM, Philadelphia (PA), 1996. [4] L. N. Trefethen & D Bau III, Numerical Linear Algebra . SIAM, Philadelphia (PA), 1997. [5] C. B. Moler, Numerical Computing with Matlab. SIAM, Philadelphia (PA), 2004. 33