Notas Análisis Numérico César Carreón Otañez 9 de Noviembre de 2022 Índice general 1. Mı́nimos Cuadrados 1.1. Ecuaciones Normales. . . . . . . . . . . . . . . . . . . . 1.1.1. Condición del Problema de Mı́nimos Cuadrados . 1.2. Métodos de Ortogonalización . . . . . . . . . . . . . . . 1.2.1. Factorización Householder . . . . . . . . . . . . 1.2.2. Rotación de Givens . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 6 11 13 16 25 4 Cuadrados Capı́tulo 1 Mı́nimos Cuadrados Objetivo: Resolver Ax̄ = b̄ con A ∈ Mm×n . Ejemplo 1. Sea Ax̄ = b̄ dado 1 0 0 −1 −1 0 por 0 1 0 1 0 −1 0 −2 1 0 x1 1 x2 = −1 3 0 x3 1 1 1 −2 Anteriormente cuando A era una matriz cuadrada y no singular entonces la expresión Ax̄ = b̄ implica que b̄ ∈ span(A), es decir, el vector b̄ se puede expresar como combinación lineal de las columnas de A. Gráficamente se ve como lo muestra la Figura 1.1. Cuando A es de tamaño m × n con m > n se tiene dos casos, uno el mostrado anteriormente cuando b̄ ∈ Rm pertenece al span(A), es decir es combinación lineal de las columnas de A. En el Ejemplo 1 se puede ver que para el vector x̄ = [−2, 1, −1]t se tiene Ax̄ = b̄, es decir, b̄ ∈ span(A). El segundo caso, cuando b̄ ∈ / span(A), la Figura 1.2 muestra la idea geométrica y para el Ejemplo 1, si x̄ = [−2, 1/4, −1/4]t, Ax̄ 6= b̄, el objetivo aquı́ es hallar ȳ ∈ span(A) tal que kȳ − b̄k sea el valor mı́nimo. Veamos el siguiente ejemplo para motivar el problema a resolver con una serie de datos: Ejemplo 2. Supóngamos tenemos una colección de datos (ti , yi ), mostrados en la Figura 1.3 por los puntos y deseamos hallar la parábola que mejor se le aproxima. La ecuación de una cuadratica está dada por: φ(t) = x1 + x2 t + x3 t2 6 Cuadrados Span(A) b̄ = Ax̄ Figura 1.1: span(A) la pregunta es: ¿quiénes son los x1 , x2 , x3 tal que φ se aproxime lo mejor a los datos mostrados?. Para ello se plantea el siguiente sistema de ecuaciones φ(ti ) = yi : x1 + x2 t1 + x3 t21 = y1 x1 + x2 t2 + x3 t22 = y2 .. .. .=. x1 + x2 tm + x3 t2m = ym de forma matricial Ax̄ = b̄ 1 t1 1 t2 1 t3 .. .. . . 1 tm t21 y1 y t22 x1 2 t23 x2 = y3 .. .. x . . 3 t2m ym Al “resolver” el sistema, ya sea que tenga solución exacta o no, tendremos los valores xi para expresar φ(t). 1.1. Ecuaciones Normales. Vamos a suponer b̄ ∈ / span(A), de estarlo se tiene la solución exacta del sistema Ax̄ = b̄ y no hay nada que hacer. En la mayorı́a de los casos vamos suponer lo primero. 7 Mı́nimos b̄ Span(A) ȳ Figura 1.2: span(A) Construyamos la función Φ(ȳ) = kȳ − b̄k la cual deseamos minimizar como función de ȳ, la Figura 1.4 muestra la idea. Recordatorio. Cuando queremos hallar el mı́nimo de una función real, dı́gamos φ(t) = a + bt + ct2 se procede, derivando e igualar a cero para encontrar el punto critico, φ(t) = a + bt + ct2 φ′ (t) = b + 2ct φ′ (t) = 0 b t=− 2c Además si φ′′ (t) > 0 tenemos un mı́nimo en el punto critico. Sabemos que si ȳ ∈ span(A) ⇒ ∃ x̄ ∈ Rn tal que ȳ = Ax̄, haciendo el cambio de variable (ȳ = Ax̄) tenemos Φ(x̄) = Aȳ ası́, queremos minimizar Φ(x̄) = kb̄ − Ax̄k, aplicando las mismas ideas, derivar e igual a cero (en varias variables). 8 Cuadrados b b b b b b b b b Figura 1.3: Interpolación de datos por una Parábola. Φ(x̄) = kb̄ − Ax̄k22 = (b̄ − Ax̄)t (b̄ − Ax̄) = (b̄t − x̄t At )(b̄ − Ax̄) = b̄t b̄ − b̄t Ax̄ − x̄t At b̄ + x̄t At Ax̄ (1.1) veamos con detalle los elementos lineales b̄t Ax̄ = ((b̄t Ax̄)t )t = ((Ax̄)t b̄)t = (x̄t At b̄)t si observamos b̄t Ax̄, x̄t At b̄ ∈ R, recordando el hecho siguiente: si a ∈ R ⇒ a = at , ∀ a, ası́ tenemos la igualdad deseada b̄t Ax̄ = x̄t At b̄ la ecuación (1.1) se simplifica en Φ(x̄) = b̄t b̄ − 2x̄t At b̄ + x̄t At Ax̄ con x̄ = (x1 , x2 , · · · , xn ) Recordatorio. Gradiente Si f : U ⊂ Rn → R, la derivada de f es el gradiente, dada por ∂f ∂f ∂f ∇Φ(x̄) = , ,··· , ∂x1 ∂x2 ∂xn 9 Mı́nimos kȳ − b̄k b̄ ȳ Span(A) Figura 1.4: Minimizar la función Φ(ȳ). Igualando la derivada a cero ∇Φ(x̄) = 2At Ax̄ − 2At b̄ = 0̄ al reacomodar los términos tenemos las ecuaciones normales At Ax̄ = At b̄ (1.2) Siguiendo el proceso de hallar el mı́nimo de la función calculamos la derivada de segundo orden, dada por la matriz Hessiana ∇2 Φ(x̄) = 2At A ¿cómo pedimos positividad en matrices?, el equivalente es precisamente le concepto de ser definida positiva. Ejemplo 3. Sea Ax̄ = b̄ dado por 1 1 0 −1 0 −1 x1 1 0 x2 = 0 2 0 1 calculando 1 At A = 0 0 1 −1 0 1 0 0 1 1 0 0 −1 = 2 0 0 1 0 2 10 Cuadrados y At b̄ = 1 0 0 −1 1 1 0 −1 = 1 0 1 0 3 2 Las ecuaciones normales (1.2) están dadas por 2 0 1 x1 = 1 0 x1 2 = ⇒ 3 2 x2 3 x2 = 2 (1.3) Buscando Ax̄ = ȳ 1 0 1 0 1 2 1 0 3 − −1 2 = 2 0 3 1 1 2 2 3 2 Ahora, sabemos por el planteamiento del problema que ȳ es el vector en span(A) que minimiza la distancia a b̄. Verifiquemos 1/2 1/2 1 1/2 −1 3/2 (1.4) kb̄ − ȳk = 0 − 1/2 = −1/2 = 1 1/2 3/2 2 Para asegurar que sea factible el problema, se tiene el siguiente resultado que nos garantiza bajo qué condiciones existe la solución, antes veamos cómo calcular el rango de una matriz que no es cuadrada. Definición. Sea A ∈ Mm×n con m > n, se define el rango de A como el número de columnas linealmente independientes. Ejemplo 4. Sea A dada como se muestra 1 0 0 1 0 0 −1 1 −1 0 0 −1 a continuación: 0 0 1 0 1 1 un método práctico para verificar si tiene rango completo es diagonalizarla, al final de proceso el número de columnas distintas de cero será el rango de la 11 Mı́nimos matriz. 1 0 0 1 0 0 −1 1 −1 0 0 −1 0 1 0 0 1 0 1 ≈ 0 0 0 0 1 1 0 0 1 0 −1 0 1 0 0 1 ≈ 0 0 0 1 0 1 0 0 1 0 0 0 0 0 1 0 0 1 ≈ 0 0 0 1 0 1 0 0 1 0 0 0 0 0 0 1 0 0 0 Proposición 1. Sea A ∈ Mm×n con m > n, tal que Rango(A) = n, es decir, de rango completo, entonces la matriz At A es definida positiva. Demostración. Sea x̄t At Ax̄ para x̄ 6= 0̄, ahora x̄t At Ax̄ = kAx̄k22 ≥ 0 de lo que se tiene dos opciones, kAx̄k22 > 0 o kAx̄k22 = 0, veamos que la segunda opción no puede ser, ya que de ser cierta se tendrı́a kAx̄k22 = 0 por ser norma Ax̄ = 0̄, ya que A es de rango completo se tiene x̄ = 0̄ pero x̄ 6= 0̄ por hipótesis. Se tiene que cumplir kAx̄k22 > 0 ⇒ x̄t At Ax̄ > 0 con x̄ 6= 0. Por lo tanto t A A es definida positiva. Observemos que también se tiene que la matriz At A cumple con ser simétrica. Proposición 2. Sea At A con A ∈ Mm×n , m > n , entonces At A es simétrica. Demostración. Sea B = At A, tenemos que B t = (At A)t = At (At )t = At A, ası́ B = B t , es decir At A es simétrica. Con el último teorema tenemos las condiciones necesarias para resolver el sistema de las Ecuaciones Normales, las cuales tienen solución si Rango(A) = n, además de ser At A definida positiva con lo que se puede aplicar la factorización de Cholesky. Entre los resultados que se probaron implı́citamente esta que el sistema en 1.2 tiene solución siempre y cuando el rango de A sea completo. 1.1.1. Condición del Problema de Mı́nimos Cuadrados Si A es de rango completo implica que la matriz At A es no singular, se define la seudo inversa de A como A+ = (At A)−1 At ∞. Definimos Cond(A) = kAk2 kA+ k2 , si Rango(A) < n tenemos que Cond(A) = 12 Cuadrados La condición de una matriz A mide “lo cerca que se está de tener un rango deficiente”. Dado el problema de hallar x̄ ∈ span(A) tal que minimice la distancia a b̄, geométricamente podemos pensar, tomando θ como el ángulo que forman b̄ y ȳ, si θ ≈ 0 el vector b̄ está cerca de span(A), es decir, se tiene un problema bien condicionado. De tener θ ≈ π/2, el vector b̄ “está lejos” de span(A), se tendrı́a un problema mal condicionado. La Figura 1.5 muestra la idea geométrica. kȳ − b̄k = krk b̄ θ ȳ = Ax̄ Span(A) Figura 1.5: Ángulo formado entre kb̄k y kȳk. Sea el sistema de ecuaciones normales dado por At Ax̄ = At b̄ luego de calcular una solución para el sistema dada por x̃ se tiene a su vez b̃ las cuales cumplen At Ax̃ = At b̃ restando ambos sistemas At A(x̃ − x̄) = At (b̃ − b̄) At A(∆x̄) = At (∆b̄) multiplicando por (At A)−1 ∆x̄ = (At A)−1 At ∆b̄ ∆x̄ = A+ ∆b̄ k∆x̄k ≤ kA+ kk∆b̄k k∆x̄k k∆b̄k ≤ kA+ k kx̄k kx̄k multiplicando por 1/kx̄k 13 Mı́nimos el termino de la izquierda es el error en x̄, del lado derecho se multiplica por un 1 se tiene k∆b̄k k∆x̄k ≤ kA+ kkAk kx̄k kAkkx̄k k∆x̄k kb̄k k∆b̄k ≤ Cond(A) kx̄k kAkkx̄k kb̄k (1.5) Si observamos la Figura 1.5 podemos tomar a b̄ como la hipotenusa del triángulo que se forma y a ȳ como el cateto adyacente, por las identidades trigonométricas el coseno del ángulo que forman está dado por kȳk2 = cos(θ) kb̄k2 sustituyendo ȳ cos(θ) = kAx̄k2 kAkkx̄k2 ≤ kb̄k2 kb̄k2 en la ecuación 1.5 se tiene el recı́proco del coseno, dando la desigualdad siguiente 1 k∆b̄k k∆x̄k ≤ Cond(A) kx̄k cos(θ) kb̄k en notación de los errores Error(x̄) ≤ Cond(A) 1 Error(b̄) cos(θ) El inverso del coseno muestra que cuando el ángulo tiene a π/2 éste a infinito, por lo que la condición del problema lo vuelve inestable. 1.2. Métodos de Ortogonalización Repitiendo las estrategias usadas cuando las matrices eran cuadradas para encontrar la solución del sistema Ax̄ = b̄, podemos intentar el procedimiento, véamos el siguiente ejemplo: Ejemplo 5. Sea Ax̄ = b̄ con Si diagonalizamos 1 0 A= 1 0 0 −1 : 0 1 1 −1 b̄ = 0 2 14 Cuadrados 1 0 1 1 0 0 0 −1 −1 0 1 0 1 0 : 0 ∼ −1 0 1 0 1 2 0 0 0 1 1 0 0 0 1 0 0 1 0 0 0 −1 0 : 0 0 1 0 0 0 0 0 0 1 0 1 0 1 1 0 0 1 0 0 −1 0 1 0 : 0 1 0 −1 0 0 0 1 0 1 1 1 0 0 0 1 0 0 −1 ∼ 0 0 1 0 −1 0 0 2 1 0 1 Trabajando con el sistema resultante 1 0 1 ′ 0 −1 x′1 ′ = −1 ⇒ x′1 = 1 0 0 x2 −1 x2 = 1 0 0 1 Veamos que resultado nos da 1 0 1 0 Calculemos la distancia a b̄ 1 0 −1 0 ∼ 0 0 2 1 1 0 −1 : −1 0 −1 1 0 0 0 1 0 Ax̄′ = ȳ ′ 0 1 −1 1 −1 = 1 0 1 1 1 1 1 0 √ −1 −1 0 ′ kȳ − b̄k = 1 − 0 = 1 = 2 1 2 −1 Lo cual es más grande lo obtenido en la ecuación 1.4. Ya que el sistema de ecuaciones normales nos da la solución al problema de mı́nimos cuadrados. Entre las cosas que ocurren a partir de la trinagulación de la matriz A por una matrix M es que no se cumple necesariamente la conservación de la norma, es decir, Ax̄ = b̄ ⇒ M Ax̄ = M b̄ tomando R = M A matriz triangular superior se llega a Rx̄ = M b̄ pero no necesariamente ocurre kM b̄k = kb̄k de hecho en la mayorı́a de los casos pasa lo opuesto. Vamos trabajar con transformaciones que preserven la norma para garantizar hallar el mı́nimo. El método de las ecuaciones normales involucra la solución de un sistema a resolver que se puede evitar utilizando una clase de matrices que conservan norma y que tienen norma uno. Utilizaremos una reflexión y una rotación. 15 Mı́nimos Definición. Sea Q ∈ Mn×n (R), se dice que Q es ortogonal si sus columnas son ortogonales, es decir, QQt = I Proposición 3. Una matriz ortogonal preserva la norma: kQb̄k22 = (Qb̄)t (Qb̄) = b̄t Qt Qb̄ = b̄t b̄ = kb̄k22 Ejemplo 6. Sea Q reflexión dada por −1 0 Q= 0 −1 ası́ Q 3 −1 0 3 −3 = = 4 0 −1 4 −4 Ejemplo 7. Si a Q la vemos como sigue cos(θ) − sin(θ) Q= sin(θ) cos(θ) una matriz de rotación con θ el ángulo a rotar, ésta tiene norma uno y es ortogonal. Definición. Sea R ∈ Mm×n , con m > n una matriz, R es triangular superior si rij = 0, i > j ası́ r11 0 .. . R= 0 0 . .. 0 r12 r22 .. . ··· ··· .. . 0 0 .. . ··· ··· .. . 0 ··· r1n r2n .. . unn 0 .. . 0 Ahora nos enfocaremos a buscar factorizaciones de la forma A = QR con Q ortogonal y R triangular superior. 16 Cuadrados 1.2.1. Factorización Householder La transformación de Householder está dada por H =I −2 νν t νtν para ν 6= 0. Propiedades: 1. H = H t Demostración. νν t H = I − 2 t ⇒ Ht = ν ν νν t I −2 t ν ν t =I −2 νν t νtν 2. H = H −1 Demostración. νν t νν t HH = I − 2 t I −2 t ν ν ν ν t t t νν νν νν =I −4 t +4 t t ν ν ν νν ν νν t νtν νt = I − 4 t + 4ν t t ν ν ν νν ν νν t νν t =I −4 t +4 t ν ν ν ν =I t Dada H y ā ∈ Rn deseamos hallar ν tal que α 0 Hā = . .. 0 en otras palabras, ν ∈ Rn tiene que ser tal que anule todas las componentes debajo de la primera entrada de ā y tal que conserve la norma. Primero encontremos una expresión para ν, 1 α 0 0 Hā = . = α . = αe1 .. .. 0 0 17 Mı́nimos partiendo de esta igualdad sustituyamos el valor de H, αe1 = Hā νν t ā = I −2 t ν ν νν t = ā − 2 t ā ν ν ν t ā = ā − 2ν t ν ν ν t ā 2ν t = ā − αe1 teniendo el escalar ν ν νtν ν = t (ā − αe1 ) 2ν ā ν t ā νtν si sustituimos el valor de ν en H, tenemos t t H =I − 2 H =I − 2 ν ν ν ν t ( 2ν t ā (ā − αe1 ))( 2ν t ā (ā − αe1 )) t t ν ν t ν ν ( 2ν t ā (ā − αe1 )) ( 2ν t ā (ā − αe1 )) (ā − αe1 )(ā − αe1 )t (ā − αe1 )t (ā − αe1 ) ya que el escalar se cancela, nos basta tomar ν = ā − αe1 Como se queremos que se conserve la norma del vector ā bajo H, tenemos que pedir kHāk = kāk ⇒ kαe1 k = kāk ⇒ |α| = kāk en otras palabras α= ( − kāk si a1 < 0; kāk si a1 > 0. el signo de α lo elegiremos de tal forma que se eviten las restas, para no llegar a una cancelación numérica. Ejemplo 8. Sea ā = [2, 1, 2]t, primero calculemos la norma, kāk = 3, ya que a1 = 2 > 0 se toma α = −3, ası́ 2 −3 5 ν = ā − αe1 = 1 − 0 = 1 2 0 2 Teniendo ν se puede calcular H y luego realizar Hā 5 ν t ν = 5 1 2 1 = 30 2 18 Cuadrados y 25 νν t = 5 10 se tiene 25 5 νν t 2 5 1 H =I −2 t =I − ν ν 30 10 2 Multiplicando Hā 5 10 1 2 2 4 10 −2/3 −1/3 −2/3 2 = −1/3 14/15 −2/15 4 −2/3 −2/15 11/15 −2/3 −1/3 −2/3 2 −3 Hā = −1/3 14/15 −2/15 1 = 0 −2/3 −2/15 11/15 2 0 De manera equivalente y más sencillo Hā = ā − 2ν con ν t ā = 5 1 se tiene ν t ā νtν 2 2 1 = 15 2 5 2 −3 15 ν t ā 1 = 0 Hā = ā − 2ν t = 1 − 2 ν ν 30 2 2 0 Ejemplo 9. Ax̄ = b̄ con 1 0 0 −1 A= 1 0 : 0 1 Tomamos ā1 y |α| = kā1 k = Buscamos ν = ā1 − (−α)e1 calculamos 1 −1 b̄ = 0 2 √ 2. Como el signo de a11 > 0 elegimos −α. √ 1 1 1+ 2 0 √ 0 0 ν= 1 + 2 0 = 0 0 0 0 √ νtν = 4 + 2 2 19 Mı́nimos y finalmente √ 3+2 2 0√ νν t = 1+ 2 0 1 0 νν t H =I −2 t = 0 ν ν 0 simplificando 0 0 0 0 − 1 0 0 1 √ 1+√2 − 2+ 2 0√ H = 1+ 2 − √ 2+ 2 0 0 1 0 0 √1 − 2 0 H1 = − √1 2 0 Multiplicando H1 con A √1 − 2 0 − √12 0 1 0 H1 A = − √1 0 √1 2 2 0 0 0 √ 0 1+ 2 0 0 0 1 0 0 0 0 0 0 √ 3+2 2 1 0√ √ 1 + 2 2+ 2 0 √ 1+√2 0 − 2+ 0 2 1 0√ 0 1+√2 0 0 2+ 2 0 0 1 0 1 0 0 − √12 0 √1 2 0 0 0 0 0 √ 1+ 2 0 1 0 0 0 0 1 √ 0 1 0 − 2 0 −1 0 0 = 0 1 0 0 0 1 0 1 0 0 0 0 (1.6) 0 −1 0 1 Para continuar con el algoritmo tomamos el vector ā2 = [−1, 0, 1]t como a2 √ |α2 | = ka2 k = 2 √ y a22 < 0 tomamos α2 = ka2 k = 2. Buscamos ν2 = ā2 − α2 e1 con e1 ∈ R3 . √ −1 −(1 + 2) √ 1 ν2 = 0 − 2 0 = 0 1 0 1 calculamos y √ ν2t ν2 = 4 + 2 2 √ 3+2 2 0√ ν2 ν2t = −(1 + 2) 0 −(1 + 0 0 0 1 √ 2) 20 Cuadrados finalmente ν2 ν2t ν2t ν2 √ √ 0 −(1 + 2) 3+2 2 1 0 0 2 √ 0 0 0 H2′ = 0 1 0 − 4 + 2 2 −(1 + √2) 0 0 0 1 1 √ √ 3+2 2 1 0 0 0 −(1 + 2) 1 √ 0√ 0 0 H2′ = 0 1 0 − 2 + 2 0 0 1 −(1 + 2) 0 1 √ 3+2√√2 2) √ 0 − (1+ 1 0 0 2+ 2 2+ 2 ′ 0√ 0 0 H2 = 0 1 0 − 2) 1√ 0 0 1 √ 0 − (1+ 2+ 2 2+ 2 √ √ √ (1+√2) (1+ (1+ 2) 2) √2 √ √ √ − 1 − 3+2 0 0 2+ 2 2+ 2 2+ 2 2+ 2 ′ 0√ 1 0 0√ 1 0√ H2 = = (1+ 2) (1+ 2) 2) √ √ √ 0 1 − 2+1√2 0 (1+ 2+ 2 2+ 2 2+ 2 H2′ = I − 2 simplificando √1 − 2 H2′ = 0 0 1 0 √1 2 √1 2 0 √1 2 Encajamos H2′ en una matriz identidad para multiplicar con A y no afectar la estructura ganada en la anterior multiplicación 1 0 0 0 1 1 0 − √ 0 √2 2 H2 = 0 0 1 0 0 √12 0 √12 Multiplicando H2 con H1 A 1 0 0 − √1 2 H2 H1 A = 0 0 √1 0 2 0 0 1 0 √ − 2 0 0 0 √1 0 2 0 √1 2 Hemos triangulado A, resultando en H2 H1 A = R donde Q = H1t H2t , calculando Q √1 − 2 0 Q = H1t H2t = − √1 2 0 ⇒ √ − 2 0 0 −1 = 0 0 1 0 √0 2 0 0 A = QR tenemos 0 − √12 1 0 0 √12 0 0 0 1 0 0 0 0 1 0 0 − √12 0 √1 2 0 0 1 0 0 √1 2 0 √1 2 21 Mı́nimos ası́ 1 − √2 0 Q = √1 − 2 0 0 − √12 0 √1 2 − √12 0 √1 2 0 0 √1 2 y 0 √1 2 √ − 2 √0 0 2 R= 0 0 0 0 Ya factorizada la matriz A procedemos a resolver el sistema: ⇒ Rx̄ = Qt b̄ = b̄′ 1 0 − √12 0 −√2 0 − √2 1 √ 1 1 0 √ −1 − √2 0 x1 2 2 0 √1 x2 = 0 √1 0 0 0 0 − 2 2 2 √1 √1 0 0 0 0 2 2 √ 0 − √12 0 1 − √12 − 2 √0 1 √1 −1 0 0 − √2 0 2 2 x1 = 0 √1 0 0 0 x2 0 − √12 2 1 1 2 √ √ 0 0 0 0 QRx̄ = b̄ 2 2 ′ aplicando sustitución haci atrás resolvemos Rx̄ = b̄ 1 √ − √2 − 2 √0 0 3 √12 x1 = 2 x1 = ⇒ 0 x2 = 0 x2 − √12 0 0 √1 1 2 3 2 2 En general, si se desea hacer ceros en un vector de tamaño n debajo de la k-ésima componente, ν está dado como ν = ā − αek con α = − Signo(ak )kāk2 . Esquemáticamente veamos un ejemplo de una matriz de 5 × 3, dada por × × × × × × A= × × × × × × × × × construimos H1 con la estructura vista tal que haga cero debajo de la entrada a11 α1 × × 0 × × H1 A = 0 × × 0 × × 0 × × 22 Cuadrados una segunda H2 tal que haga cero debajo de a22 , α1 0 1 0 0 H2 (H1 A) = 0 H′ 0 0 × α1 0 × × =0 0 × × 0 × × × × × × α2 0 0 0 × × × × × una última matriz para hacer ceros debajo de a33 1 H3 (H2 H1 A) = 0 0 α1 0 0 0 1 0 0 0 H ′′ 0 0 × α2 0 0 0 × α1 0 × × =0 0 × × 0 × α2 0 0 0 × × α3 0 0 Volviendo al problema Ax̄ = b̄, si se premultiplicar por las matrices Hk para hacer ceros en la columna k-ésima de A, debajo de la componente akk , se tendrá H1 Ax̄ = H1 b̄ H2 H1 x̄ = H2 H1 b̄ .. .. .=. Hn · · · H1 Ax̄ = Hn · · · H1 b̄ si R = Hn · · · H1 A matriz triangular superior y nombrando Q−1 = Hn · · · H1 ⇒ R = Q−1 A despejando Q tenemos la descomposición QR dada por QR = A con Q = (Hn · · · H1 )−1 Q = H1−1 · · · Hn−1 ya que cada Hk es ortogonal Q = H1 · · · H n para Hk = I − 2 νk νkt νkt νk 23 Mı́nimos Interpretación Geométrica de la Transformación Householder Sea ν ∈ Rn y H dada por H =I −2 νν t νtν Si tómamos ā ∈ Rn y aplicándole H: νν t ā νtν ν t ā = ā − 2ν t ν ν = ā − 2λν Hā = ā − 2 donde ν t ā νtν la proyecci on ortogonal de ā sobre ν. La Figura 1.6 muestra gráficamente la interpretación. λ= ā ν λν Figura 1.6: Proyección Ortogonal de ā sobre ν. Tomemos b̄ vector simétrico a ā con respecto al espacio que genera ν ⊥ , Figura 1.7 muestra la gráfica. Tenemos lo siguiente: ā − λν = b̄ + λν b̄ = ā − 2λν b̄ = Hā Es decir, H transforma a ā en el simétrico con respecto al espacio generado por ν ⊥ . √ Ejemplo 10. Sea ā = [−1, 2]t , tenemos α = ±kāk = ± 5, ν está dada como: ν = ā − αe1 24 Cuadrados ν⊥ ā b̄ ν −ν −λν λν Figura 1.7: Proyección Ortogonal de ā sobre ν. es decir # " √ # " −3.23 −1 − 5 ≈ 2 2 √ 1 −1 ν= − (± 5) " # 0 2 √ # " −1 + 5 1.23 ≈ 2 2 si + α si − α En la Figura 1.8 se muestran los posibles casos. ν⊥ 3 ν 2 ν ā 1 ν⊥ −3 −2 −1 1 2 Figura 1.8: Ejemplo. Por último se tiene el Algoritmo 1 para el método de la factorización QR por la reflexión de Householder. 25 Mı́nimos Algoritmo 1: Factorización QR Householder Input: A matriz rectangular. 1 for k = 1 → n do p 2 αk = − Signo(akk ) a2kk + · · · + a2mk 3 νk = [0, · · · , 0, akk , · · · , amk ]t − αk ek 4 βk = νkt νk 5 if βk = 0 then 6 continuar con la siguiente k 7 for j = k → n do 8 γj = νkt aj 9 aj = aj − (2γj /βk )νk Output: Matriz Q 1.2.2. Rotación de Givens Una matriz de rotación está dada por: c s G= −s c con c = cos(θ), s = sin(θ), siendo θ en ángulo de rotación. Sea ā = [a1 , a2 ]t deseamos hallar la transformación tal que rote el vector al eje de las abscisas, planteando el siguiente sistema c s a1 α = −s c a2 0 vamos a dar una equivalencia para el sistema anterior, para ello observemos que c a1 c + a2 s c s a1 a a2 = = 1 a2 −a1 s −a1 s + a2 c −s c a2 cambiando el sistema a1 a2 a2 −a1 c α = s 0 diagonalizando " a1 0 a2 a22 − a1 − a 1 despejando s s=− # α c = 2 − αa s a1 αa2 a1 αa2 = 2 2 2 a1 −a2 − a1 a1 + a22 despejando de la ecuación a1 c + a2 s = α a c c= αa1 a21 + a22 26 Cuadrados para encontrar el valor de α 1 =c2 + s2 α2 a21 α2 a22 + (a21 + a22 )2 (a21 + a22 )2 α2 (a2 + a2 ) = 2 1 2 22 (a1 + a2 ) = por lo que α = p a21 + a22 , ası́ quedan determinados los valores para c y s a1 c= p 2 , a1 + a22 a2 s= p 2 a1 + a22 Observando que en todo el proceso no se requiere saber de manera explı́cita el ángulo θ. Una forma alternativa del cáculo de c y s es la siguiente, consideremos tan(θ) = s sin(θ) ⇒t= cos(θ) c manipulando algebraicamente t2 = 1 − c2 1 1 s2 = = 2 − 1 ⇒ 1 + t2 = 2 2 c c2 c c por lo tanto c= √ 1 1 + t2 con s = c ∗ t con el motivo de tener estabilidad numérica a la hora de realizar el cociente, es decir, si |a1 | > |a2 | se tiene a2 t= a1 para un vector ā = [a1 , a2 ]t . Si se cumple |a2 | > |a1 | usamos la otro identidad trigonométrica cot = cos(θ) c ⇒ τ= sin(θ) s ası́, τ2 = por lo tanto c2 1 − s2 1 1 = = 2 − 1 ⇒ 1 + τ2 = 2 s2 s2 s s 1 s= √ 1 + τ2 con c = s ∗ τ 27 Mı́nimos Propiedades de G GGt = c −s s c c s 2 −s c + s2 = c −sc + sc −sc + sc 1 0 = s2 + c2 0 1 es decir, G es ortogonal. En general para un vector ā = Rn la estructura de G es la siguiente: a1 .. 1 ··· 0 ··· 0 ··· 0 a1 .. .. .. .. .. . . 1 . . . . α 0 · · · . c · · · s · · · 0 ai .. .. .. .. .. .. = . . 1 . . . aj−1 0 · · · −s · · · c · · · 0 aj 0 . . aj+1 .. .. .. . .. . . 1 . . . . . 0 ··· 0 ··· 0 ··· 1 a n an Se hace cero la componente aj tomando como “pivote” la componente ai , donde c y s están dadas, por extensión, como: ai , c= q 2 ai + a2j aj s= q 2 ai + a2j Ejemplo 11. Sea el sistema Ax̄ = b̄ dado por: 1 1 0 −1 0 −1 A= 1 0 : b̄ = 0 2 0 1 Para la matriz A construiremos G1 rotación de Givens para que con la componente a11 como pivote haga cero en a31 ,ası́: √1 0 √12 0 2 0 1 1 1 0 0 ⇒ G1 = c= √ ; s= √ 1 √ 0 √12 0 − 2 2 2 0 0 0 1 haciendo G1 A √1 2 0 1 − √ 2 0 0 1 0 0 √1 2 0 √1 2 0 √ 0 1 0 2 0 −1 0 0 = 0 1 0 0 0 1 0 1 0 −1 0 1 28 Cuadrados Para seguir triangulando la matriz G1 A tomamos la componente (2, 2) como pivote para hacer cero en la componente (4, 2), ası́ c y s son: 1 0 0 0 √1 0 − √1 0 1 1 2 2 c = −√ ; s = √ ⇒ G2 = 0 0 1 0 2 2 0 − √12 0 − √12 calculando G2 G1 A = R 1 0 0 − √1 2 0 0 0 − √12 0 0 1 0 ası́ tenemos √ √ 2 2 0 √1 0 0 −1 2 = 0 0 0 0 − √12 0 1 0 0 √0 2 0 0 G2 G1 A = R ⇒ A = (Gt1 Gt2 )R tomando (Gt1 Gt2 ) = Q tenemos la factorización buscada A = QR 1 0 0 − √1 2 Q= 0 0 0 √12 0 0 1 0 0 √1 2 − √12 0 0 √12 − √12 0 0 1 0 0 √1 0 2 0 0 = 0 √12 1 0 − √12 0 √1 2 0 0 − √12 0 √1 2 − √12 0 √1 2 sustituyendo en el sistema QRx̄ = b̄ 1 √ √ 0 − √12 0 2 √0 1 2 1 0 − √1 −1 0 − √2 0 x1 2 2 √1 x2 = 0 √1 0 0 0 0 2 2 2 0 0 √1 0 0 − √12 2 despejando Rx̄ = Qt b̄ 1 √ √ 2 √0 2 0 0 x 2 1 = √1 0 0 x2 − 2 0 0 0 despejando tenemos √ 2 0 0 0 √1 2 0 − √12 0 √1 0 2 0 − √12 1 √ √0 √32 2 x1 = √21 0 x2 − 2 0 − √12 x1 = 1 ; 2 x2 = 3 2 0 1 √1 −1 2 0 0 2 − √12 0 0 − √12 0 − √12 29 Mı́nimos Ejemplo 12. Sea A la siguiente matriz 1 −1 3 2 A= 0 0 0 0 1 0 utilizar la transformación de Givens para volver A una matriz triangular superior. En la primera iteración se toma a1 = 1 a2 = 3 por lo que 1 c= √ , 10 √1 10 − √3 10 G1 A = 0 0 0 √3 10 √1 10 0 0 0 0 0 1 0 0 0 0 0 1 0 3 s= √ 10 √10 √5 0 1 −1 10 10 √5 0 3 2 0 10 0 0 0 = 0 0 0 0 0 0 0 1 1 0 1 0 √ a1 = 1/ 10, a5 = 1, con Para la segunda iteración tomamos r 10 1 c= , s= √ 11 11 q √10 √10 10 √5 0 0 0 √111 10 10 11 010 0 √5 1 0 0 0 0 10 0 0 0 1 0 0 G2 G1 A = = 0 0 0 0 0 0 1 0 0 0 q 1 10 0 1 0 √ 0 0 0 11 11 √5 10 √5 10 0 0 5 − √11∗10 Para el sistema Ax̄ = b̄, por cada componente que se quiera eliminar se tiene que multiplicar por una Gi , ası́ luego de p pasos el sistema Gp · · · G2 G1 Ax̄ = Gp · · · G1 b̄ donde Gp · · · G2 G1 A = R una matriz triangular superior, aplicando sustitución hacia atrás se puede resolver el sistema. Si nombramos por Q−1 = Gp · · · G2 G1 a la multiplicación de matrices tendrı́amos Q−1 A = R ⇒ A = QR es decir, la factorización QR con Q = G1 G2 · · · Gp matriz ortogonal. 30 Cuadrados Bibliografı́a [1] Burden, Richard L, J. Douglas Faires. Análisis Numérico. International Thomson Editores S.A. Sétima Edición, 2002. [2] Heath, Michael T. Scientific Computing An Introductory Survey. University of Ilinois at Urbana-Champaign. The McGraw-Hill Companies, 1997. [3] Kahaner, D. Moler, C. Nash, S. Numerical Methods and Software. Prentice Hall, Englewood Cliffs, New Jersey 07632, 1989. [4] Kincaid, David & Cheney, Ward. Numerical Analysis Mathematics of Scientific Computing. The University of Texas Austin, Brooks/ColePublishing Company, 1991. [5] Overton, Michael L. Numerical Computing with IEEE Floating Point Arithmetic. Courant Institute of Mathematical Sciences, New York University, New York, New York, 2001.