Notas de Álgebra Lineal Computacional Gabriel Acosta y Santiago Laplagne Índice general Preliminares Capítulo 1. 7 Nociones básicas de álgebra lineal 9 1. Vectores y matrices 2. Sistemas lineales de ecuaciones 3. Espacios vectoriales 18 4. Operaciones con matrices 29 5. Cambio de base 39 6. Transformaciones lineales 42 7. Espacios anes 45 Capítulo 2. 9 12 Números de Máquina y Número de Condición 49 1. Cuestiones previas 49 2. Bases generales* 50 3. Números de Máquina 51 4. Condición y Estabilidad 55 Capítulo 3. Normas y Producto Interno 59 Kn 1. Normas en 2. Producto Interno 62 3. Normas de matrices 66 4. Condicion de Matrices 70 5. Proyecciones y Proyectores 73 Capítulo 4. 59 Métodos Directos Para Sistemas Lineales 1. Sistemas y Factorización de Matrices 2. Descomposición 3. Descomposición 4. Descomposición 5. Ortogonalidad en Métodos Directos Capítulo 5. LU = A LU = P A (pivoteo LDL∗ : Cholesky 79 79 79 parcial) 84 87 89 Diagonalización 91 1. Motivación: Google Page Rank 91 2. Autovalores y autovectores 92 3. Diagonalización 4. Descomposición de Schur 5. Autovalores y autovectores de matrices especiales 101 6. El método de la potencia 104 7. Norma-2 de matrices 109 8. El algoritmo QR 113 94 100 3 4 Índice general 9. Teorema de los círculos de Gershgorin 115 10. Procesos de Markov 116 11. Matrices de Markov 117 Capítulo 6. Métodos Iterativos 123 1. Un ejemplo: distribución de temperatura 123 2. Métodos Iterativos 126 3. Algunos Métodos Clásicos 128 4. Método de gradiente (o del descenso mas rápido) 133 5. Gradiente Conjugado 135 6. GC y aproximación polinomial 137 Capítulo 7. Descomposición en valores singulares 141 1. Motivación: número de condición y autovalores 2. Introducción 141 3. Construcción 143 4. Valores singulares y norma-2 145 5. Distancia a matrices de menor rango 146 6. Aplicaciones 147 Capítulo 8. 1. Cuadrados Mínimos Interpolación Polinomial Bibliografía 141 153 154 163 Preliminares En estas notas se presentan los temas de la materia Álgebra Lineal Computacional en la Facultad de Ciencias Exactas y Naturales de la UBA. bla bla bla Acerca de la notación: (esto es para amalgamar con lo demás) Usaremos letra en negrita para representar magnitudes vectoriales o matriciales, y letra común para variables escalares. Para distinguir vectores de matrices, reservamos las letras mayúsculas Los vectores sentido Con |v| Av , minúsculas para las segundas y v ∈ Rn , Cn para los primeros. se identicarán con matrices para toda matriz A ∈ Rm×n , Cm×n columna de representamos el vector con las mismas componentes de Análogamente denimos n × 1. v Por ende tendrá con valor absoluto. |A|. v1 ≤ v2 (A1 ≤ A2 ) debe <, >, ≥). vector (matriz) v (A) y una constante c, la notación v ≤ c (A ≤ c), indica componentes de v (A) son menores o iguales a c (lo mismo para <, >, ≥). Dados dos vectores (matrices) v1 , v2 (A1 , A2 ) la notación interpretarse componente a componente (lo mismo para Dados un que todas Utilizamos la notación de los dos puntos :, compatible con numerosos lenguajes de programación, para identicar rangos de índices en vectores y matrices: por ejemplo v(2 : 5) indica los elementos 2 al 5 incluidos del vector v 1 . La misma interpretación vale para matrices, por ejemplo, resulta válido para nosotros escribir 1 Estamos manejando índices al estilo Matlab, es decir que comienzan en el primer índice del arreglo es 0. 1, A(2 : 10, 7 : 25). en otros lenguajes como Python Preferimos usar en el texto la primera porque es mas natural con la notación matemática usual. 7 Capítulo 1 Nociones básicas de álgebra lineal 1. Vectores y matrices 1.1. Vectores. n ∈ N, denimos un vector de n coordenadas como una sucesión de v = (v1 , . . . , vn ). Denotamos Rn al conjunto de todos los vectores n reales de n coordenadas y C al conjunto de todos los vectores complejos de n coordenadas. Ya que la mayoría de los resultados que veremos valen tanto en R como en C, los enunciamos usando la letra K. En los casos en que debamos restringirnos a R o C lo señalaremos explícitamente. n Para números reales o complejos Solo haremos uso de deniciones y propiedades elementales de los complejos, antes de continuar recordamos algunas de ellas que aparecerán más adelante 1. 2. 3. 4. i2 = −1. Si z = a + ib el conjugado se dene como z = a − ib. ∀z, w ∈ C, zw = z w. √ El módulo de z , se dene como |z| = a2 + b2 y representa la distancia del complejo z al origen. 5. 6. 7. 8. ∀z, w ∈ C, |zw| = |z||w| |z|2 = zz , en particular se observa que si z ̸= 0, z |z|z 2 = 1. Llamamos z −1 = z . |z|2 eiθ = cos(θ) + i sen(θ), en particular |eiθ | = 1. Por otro lado, usando iθ trigonometría elemental, se ve que si |w| = 1, existe θ ∈ R tal que w = e . z Ya que si z ̸= 0 se tiene que |z| = 1, del ítem previo se observa que si z ̸= 0, puede ∀θ ∈ R, se dene escribirse z = |z|eiθ con θ ∈ R. 9. Todo polinomio a coecientes en con su multiplicidad- en C C de grado n≥1 tiene exactamente n raíces -contadas (resultado que suele llamarse Teorema Fundamental del Ál- gebra). Ejemplo 1.1. R2 R3 es el plano coordenado. es el espacio de 3 dimensiones. Ejemplo 1.2. v = (1, 2) ∈ R2 . u = (2, −1, π, 3/2) ∈ R4 . w = (1 − 2i, 3e3i ) ∈ C2 . En Python denimos vectores con el comando import numpy as np 9 array (arreglo) del paquete numpy. 10 1. NOCIONES BÁSICAS DE ÁLGEBRA LINEAL v1 = np.array([10, 5, -7, 1]) print(v1) v2 = np.array([5, 0, 3/2, 2]) print(v2) %% v1 = %% v2 = [10 [5. 5 -7 1] 0. 1.5 2. ] 1.2. Matrices. m las y en m n Denotamos Km×n las de n 1 2 3 ∈ R2×3 4 5 6 2. 1 7 ∈ R4×1 0.6 −1 Es común considerar a los vectores en (1, 2, 3) En lo pensamos como matriz Python m×n coordenadas agrupadas coordenadas. Ejemplo 1.3. 1. al espacio de matrices de números reales o complejos de columnas, que podemos considerar como un vector de 1 2 3 Kn 3. 1 5+i 7 − 2i 0 ∈ C3×2 i 3 como matrices columna. Es decir, al vector cuando trabajamos con matrices. denimos matrices usando el mismo comando tores, pero ingresando cada la como un vector, es decir para array Python que utilizamos para vecuna matriz es un arreglo de dos dimensiones, que se guarda como un arreglo de arreglos de dimensión 1. A = np.array([[1,2],[3,4]]) # Matriz de 2 x 2 print("A = \n", A) B = np.array([[1,2,3,4],[7,1,2,-1]]) # Matriz de 4 x 2 print("B = \n", B) C = np.array([[1], [7], [1/3]]) # Matriz columna de 1 x 3 print("C = \n", C) %% A = %% [[1 2] %% [3 4]] %% B = %% [[ 1 2 3 4] %% [ 7 1 2 -1]] %% C = %% [[1. ] %% [7. ] v = 1. VECTORES Y MATRICES %% 11 [0.33333333]] Podemos acceder a las casillas de un vector o matriz usando los índices de las casillas, teniendo en cuenta que en Python los índices se numeran siempre empezando en 0. v1 = np.array([1,2,5,10]) print("v1[2] = ", v1[2]) A = np.array([[1,2,3,4],[5,6,7,8],[9,10,11,12]]) print("A[2,3] = ", A[2,3]) %% v1[2] = 5 %% A[2,3] = 12 1.3. Suma y producto por escalar. Tanto en vectores como en matrices podemos rea- lizar las siguientes operaciones, que como veremos más adelante corresponden a operaciones de espacio vectorial: Suma de vectores o matrices del mismo tamaño coordenada a coordenada. Si (v1 , v2 , . . . , vn ) y v = u = (u1 , u2 , . . . , un ), v + u = (v1 + u1 , v2 + u2 , . . . , vn + un ). Producto de vectores o matrices por un escalar. Si a∈R o C y v = (v1 , v2 , . . . , vn ), av = (av1 , av2 , . . . , avn ). En Python realizamos estas operaciones con los símbolos usuales import numpy as np v1 = np.array([10, 5, -7, 1]) v2 = np.array([5, 0, 7, 2]) print("v1 + v2 = ", v1 + v2) ## [15 5 0 3] A1 = np.array([[1,2],[3,4]]) print("A1 = \n", A1) A2 = np.array([[2,7],[1,0]]) print("A2 = \n", A2) A3 = np.array([[2,7,1,0]]) print("A3 = \n", A3) print("A1 + A2 = \n", A1 + A2) # Matriz de 2 x 2 # No podemos sumar matrices de distinto tamaño + y ∗. 12 1. NOCIONES BÁSICAS DE ÁLGEBRA LINEAL #print("A1 + A3 = \n", A1 + A3) ## ## ## ## ## ## ## ## ## ## ## ## A1 = [[1 2] [3 4]] A2 = [[2 7] [1 0]] A3 = [2 7 1 0] A1 + A2 = [[3 9] [4 4]] [15 5 0 3] 2. Sistemas lineales de ecuaciones 2.1. Resolución de sistemas de ecuaciones por triangulación (eliminación gaussiana). La eliminación gaussiana es un método muy eciente para resolver sistemas de ecuaciones lineales en forma directa (es decir, sin utilizar métodos iterativos que aproximan la solución). A modo de ejemplo, resolvemos el siguiente sistema de ecuaciones. x + 5y + 5z = 2 2x + 2y − 3z = −1 −x − 9y + 2z = 9. A partir del sistema, construimos la matriz ampliada de coecientes y términos indepen- dientes: 2 1 5 5 2 2 −3 −1 . −1 −9 2 9 Triangulamos la matriz realizando operaciones de las. Las operaciones permitidas (que no afectan las soluciones del sistema) son: sumarle o restarle a una la un múltiplo de otra la, intercambiar dos las entre si. multiplicar una la por un escalar distinto de 0. El algoritmo de eliminación gaussiana consiste en triangular o escalonar la matriz obteniendo 0's abajo de los elementos de la diagonal, o más generalmente, produciendo que en cada la la cantidad de 0's iniciales sea mayor que en la la anterior. Realizamos las siguientes operaciones: 2. SISTEMAS LINEALES DE ECUACIONES 1 5 5 2 1 f2 −2f1 →f2 2 2 −3 −1 −−−−−−−→ 0 −1 −9 2 9 −1 1 5 5 2 f3 − 12 f2 →f3 f3 +f1 →f3 −−−−−−→ 0 −8 −13 −5 −−−−−−−→ 0 −4 7 11 x, y, z x = 2. La Ahora podemos obtener los valores de mos z = 1, luego y = −1 y nalmente 13 5 5 2 −8 −13 −5 → −9 2 9 1 5 5 2 0 −8 −13 −5 27 27 0 0 2 2 por "sustitución hacia atrás". Primero calculasegunda ecuación queda −8y − 13 · (1) = −5 entonces, y = −1. Ejemplo 1.4. Resolvemos escalonando el sistema x1 + 2x2 − x3 = −1 2x1 + 4x2 + 3x3 = 4 3x3 = 6. 1. Construimos la matriz ampliada 1 2 −1 −1 4 . à = 2 4 3 0 0 3 6 2. Para conseguir 0's abajo de la casilla Obtenemos (1, 1), realizamos la operación f2 − 2f1 → f2 . 1 2 −1 −1 6 . Ã1 = 0 0 3 6 0 0 3 3. Como deseamos tener en cada la más ceros que en la anterior, debemos ahora obtener un 0 abajo de la casilla la matriz (2, 3). Para eso realizamos la operación f3 − f2 → f3 . Obtenemos 1 2 −1 −1 6 , Ã2 = 0 0 3 0 0 0 0 que es una matriz escalonada, por lo que nalizamos el proceso. Observar que si bien la matriz Ã1 tiene 0's abajo de la diagonal, no es un matriz escalonada porque las las 2 y 3 tienen la misma cantidad de 0's iniciales. Ahora podemos resolver el sistema despejando las ecuaciones que obtuvimos: de donde despejamos x3 = 2 y x1 + 2x2 − x3 = −1 3x3 = 6, x1 = −1 − 2x2 + x3 = 1 − 2x2 . sistema es S = {(1 − 2x2 , x2 , 2) : x2 ∈ R}. El conjunto de soluciones del 14 1. NOCIONES BÁSICAS DE ÁLGEBRA LINEAL En los paquetes comunes de Python no existe un comando para realizar eliminación gaus- siana (aunque sí existen comandos para resolver sistemas lineales ecientemente). Más adelante, cuando avancemos con las técnicas de programación y desarrollo de algoritmos, podremos programar nuestro propio programa de eliminación gaussiana. Por el momento, utilizaremos el siguiente programa, extraido de la página https://math.stackexchange.com/ questions/3073083/how-to-reduce-matrix-into-row-echelon-form-in-python/ 3073117. El nombre de la función es row_echelon, que es el nombre en inglés para una matriz escalonada por las. Para utilizar esta función, pueden copiar y pegar el código en una celda y ejecutarlo, o grabarlo en un archivo row_echelon.py y cargarlo mediante el comando import row_echelon. def row_echelon(M): """ Return Row Echelon Form of matrix A """ A = M.astype(float) # if matrix A has no columns or rows, # it is already in REF, so we return itself r, c = A.shape if r == 0 or c == 0: return A # we search for non-zero element in the first column for i in range(len(A)): if A[i,0] != 0: break else: # if all elements in the first column are zero, # we perform REF on matrix from second column B = row_echelon(A[:,1:]) # and then add the first zero-column back return np.hstack([A[:,:1], B]) # if non-zero element happens not in the first row, # we switch rows if i > 0: ith_row = A[i].copy() A[i] = A[0] A[0] = ith_row # we A[0] # we #(it divide first row by first element in it = A[0] / A[0,0] subtract all subsequent rows with first row has 1 now as first element) 2. SISTEMAS LINEALES DE ECUACIONES 15 # multiplied by the corresponding element in the first column A[1:] -= A[0] * A[1:,0:1] # we perform REF on matrix from second row, from second column B = row_echelon(A[1:,1:]) # we add first row and first (zero) column, and return return np.vstack([A[:1], np.hstack([A[1:,:1], B]) ]) Probamos el programa en el siguiente ejemplo. A = np.array([[1,2,3,4],[5,6,7,8],[9,10,11,12]]) print(row_echelon(A)) [[1. 2. 3. 4.] [0. 1. 2. 3.] [0. 0. 0. 0.]] Si queremos armar la matriz ampliada correspondiente a un sistema de ecuaciones y tenemos A de coecientes y el vector b de términos independientes, numpy para pegar a A el vector b como última columna. la matriz c_ de Ejemplo 1.5. Resolvemos en podemos usar el comando Python el sistema x1 + 5x2 + 5x3 = −2 2x1 + 2x2 − 3x3 = −1 −x − 9x + 2x = 9. 1 2 3 A = np.array([[1,5,5],[2,2,-3],[-1,-9,2]]) b = np.array([2, -1, 9]) Ab = np.c_[A, b] # Las matrices o vectores van entre corchetes. print("Ab = \n", Ab) print("Matriz escalonada: \n", row_echelon(Ab)) %% Ab = %% [[ 1 5 5 2] %% [ 2 2 -3 -1] %% [-1 -9 2 9]] %% Matriz escalonada: %% [[1. 5. 5. 2. ] %% [0. 1. 1.625 0.625] %% [0. 0. 1. 1. ]] 16 1. NOCIONES BÁSICAS DE ÁLGEBRA LINEAL Despejando de abajo hacia arriba, obtenemos x3 = 1 x2 = 0.625 − 1.625x3 = −1 x1 = 2 − 5x2 − 5x3 = 2. 2.2. Clasicación de sistemas de ecuaciones. Estudiamos ahora cuántas soluciones puede tener un sistema de ecuaciones a partir de la forma escalonada de la matriz ampliada. Ejemplo 1.6. Resolvemos el siguiente sistema de ecuaciones: 5x1 + 3x2 = 11 15x1 + 9x2 = 33 20x + 12x = 44 1 2 Construimos la matriz ampliada 5 3 11 15 9 33 20 12 44 y escalonamos usando Python. A = np.array([[5,3,11],[15,9,33],[20,12,44]]) print(row_echelon(A)) %% [[1. %% [0. %% [0. 0.6 2.2] 0. 0. ] 0. 0. ]] Vemos que se eliminaron las últimas dos ecuaciones, y nos queda solo una ecuación: x1 + 0.6x2 = 2.2 de donde podemos despejar x1 = 2.2 − 0.6x2 . El sistema tiene innitas soluciones, S = {(2.2 − 0.6x2 , x2 ) : x2 ∈ R}. Ejemplo 1.7. Consideremos ahora el mismo sistema inicial, modicando un valor en 5x1 + 3x2 = 11 15x1 + 9x2 = 33 20x + 12x = 55 1 2 Escalonamos la matriz ampliada: A = np.array([[5,3,11],[15,9,33],[20,12,55]]) print(row_echelon(A)) b: 2. SISTEMAS LINEALES DE ECUACIONES %% [[1. %% [0. %% [0. 17 0.6 2.2] 0. 1. ] 0. 0. ]] En la segunda ecuación, obtuvimos 0x1 + 0x2 = 1. ½Absurdo! El sistema no tiene solución. Si al escalonar la matriz ampliada, llegamos a una ecuación 0x1 + · · · + 0xn = a ̸= 0 el sistema no tiene solución. Por el contrario, si en todas las las que se anulas los coecientes de las variables, obtenemos también 0 en el término independiente, el sistema admite solución (podemos ir resolviendo hacia atrás). Obtenemos los siguientes casos para un sistema de m ecuaciones y n incógnitas. Sistema incompatible. El sistema no tiene solución. Al escalonar obtuvimos una ecuación 0x1 + · · · + 0xn = a ̸= 0. Ejemplo: 5 3 2 11 0 9 −1 10 0 0 0 4 Sistema compatible determinado. El sistema tiene solución única. Al escalonar la matriz ampliada, obtenemos exactamente n ecuaciones no nulas, y podemos obtener la solución despejando las variables. 5 0 0 0 0 3 2 11 9 −1 10 0 1 2 0 0 0 0 0 0 Sistema compatible indeterminado. El sistema tiene innitas soluciones. Al escalonar la matriz ampliada obtenemos menos de n las no nulas en las primeras n columnas, y el resto de las las son nulas en todas las columnas. Ejemplo: 5 0 0 0 3 2 11 9 −1 10 0 0 0 0 0 0 Ejercicio 1.1. Escalonar las siguientes matrices y clasicar el sistema en (a) incompatible, (b) compatible determinado, (c) compatible indeterminado. 1. 3y − 2z + 3w = 9 2x + y + w = 5 x − y + z − w = −2 2. x − 2y = 2 2x + y = 1 x + 3y = −1 3. 2x + y − z = 3 x−y+z =2 5x + y − z = −5 18 1. NOCIONES BÁSICAS DE ÁLGEBRA LINEAL 3. Espacios vectoriales vectores, que pueden ser sumados escalares ). Llamamos V al conjunto Un espacio vectorial es un conjunto de elementos, llamados entre sí y multiplicados ( de vectores y K El conjunto escalados ) por números (llamados al conjunto de números. K debe ser un cuerpo. Esto es, K posee una suma + y un producto · que satisfacen un conjunto de axiomas que podemos resumir en la siguiente tabla. suma asociatividad conmutatividad propiedad distributiva elemento identidad elemento inverso En esta materia trabajaremos con 1 producto a + (b + c) = (a + b) + c (a · b) · c = a · (b · c) a+b=b+a a·b=b·a a · (b + c) = a · b + a · c 0+a=a=a+0 1·a=a=a·1 a + (−a) = 0 a · (a−1 ) = 1 K = R, el cuerpo de los números reales o K=C el cuerpo de los números complejos . Ejemplo 1.8. El conjunto Z de los números enteros no es un cuerpo, porque excepto 1 y −1, los demás números enteros no poseen un inverso entero para la multiplicación. Por ejemplo, el inverso de 2 es 1/2 que no es un número entero. Formalmente, un espacio vectorial sobre un cuerpo es un conjunto V K (también llamado K - espacio vectorial) y dos operaciones, que satisfacen ciertos axiomas. Las operaciones denidas en Suma de vectores. V son: + : V ×V → V, a cualquier par v, w de vectores le asigna un vector v+w ∈V. Producto por escalar. vector av ∈ V · : K×V → V, a un escalar a y un vector v ∈V le asigna un (no confundir con el producto escalar que dados dos vectores devuelve un escalar que veremos más adelante). Los axiomas de espacio vectorial son 1. 2. 3. Asociatividad de la suma. u + (v + w) = (u + v) + w Conmutatividad de la suma. u + v = v + u Elemento neutro de la suma. Existe un elemento 0 ∈ V tal que v+0 = v para todo v ∈V. 4. Inverso para la suma. Para todo v ∈ V , existe un elemento −v ∈ V , llamado inverso aditivo de 5. 6. 1 tal que v + (−v) = 0. Compatibilidad de la multiplicación por escalar con la la multiplicación del cuerpo. a(bv) = (ab)v. Elemento neutro de la multiplicación por escalar. 1v = v, donde 1 es el neutro de 7. v, R. Propiedad distributiva de la multiplicación por escalar respecto de la suma de vectores. a(u + v) = au + av. Existen otros ejemplos de cuerpos como los racionales Q o los enteros módulo un primo p, Zp . 3. ESPACIOS VECTORIALES 8. 19 Propiedad distributiva de la multiplicación por escalar respecto de la suma de escalares. (a + b)(v) = av + bv. Ejemplo 1.9. Los siguientes conjuntos son espacios vectoriales deniendo la suma y el producto por escalar de modo "tradicional". 1. 2. 3. 4. 5. 6. Kn , es un K espacio vectorial. Km×n , el conjunto de matrices, es un K espacio vectorial. K[x] el conjunto de todos los polinomios en una variable a coecientes reales o complejos. R[x]d , el conjunto de polinomios en una variable de grado menor o igual que d. (a1 , a2 , a3 , . . . ), el conjunto de sucesiones innitas de números reales o complejos. K es un K espacio vectorial. Pero note que C también es un R espacio vectorial. Los siguientes conjuntos no son espacios vectoriales. 1. El conjunto de matrices de cualquier tamaño. 2. Los polinomios de grado exactamente d. Aplicación 1.1. Veamos un ejercicio sencillo de aplicación de espacios vectoriales. Se quiere predecir el consumo en tarjeta de crédito que tendrán los clientes de un banco mediante un modelo lineal. Para eso, se consideran las siguientes variables explicativas de los clientes: 1. Sueldo mensual 2. Impuesto a las ganancias pagado el año anterior. 3. Cantidad de integrantes del grupo familiar 4. Puntaje otorgado a la serie "La Casa de Papel"(1 a 5 estrellas) 5. Es fumador (sí / no) 6. Marca de Celular (Samsung / Huawei / Iphone / Otro) Se quiere denir un espacio vectorial V. V donde la información de cada cliente sea un vector de ¾Qué espacio vectorial utilizaría para este modelo? (Se busca que dos personas con vectores similares tengan comportamiento similar.) Observamos que los cuatro primeros datos son datos numéricos y podemos representar cada valor con un número real. En las preguntas 3 y 4, nos gustaría utilizar números enteros para representar los valores, pero ya vimos que el conjunto de números enteros no es un cuerpo y por lo tanto no podemos denir un espacio vectorial sobre los enteros. La quinta pregunta podemos representarla con valores 0 y 1. En este caso al conjunto {0, 1} podemos asignarle estructura de cuerpo, pero dado que queremos un único espacio vectorial para representar todas las variables, debemos representar estos valores también como números reales. Finalmente, para el último dado, podríamos asignarle un valor numérico a cada respuesta: 1 = Samsung, 2 = Huawei, 3 = Iphone, 4 = Otro, sin embargo esto no cumpliría lo que buscamos en nuestro modelo que vectores similares tengan comportamiento similar. Es decir, si usamos esta representación estaríamos indicando que la respuesta Otro es muy similar a Iphone y no tan similar a Samsung, y en principio no hay razón para esa suposición. Por lo tanto es común en este caso usar las llamadas variables indicadoras, que toman valores 0-1. Utilizamos 4 variables 0-1 que valen 1 en caso de que la respuesta corresponda a esa marca. ¾Qué vector v∈V asignaría al cliente con las siguientes características? 1. Sueldo mensual: $80.000 20 1. NOCIONES BÁSICAS DE ÁLGEBRA LINEAL 2. Impuesto a las ganancias pagado el año anterior: $100.000 3. Cantidad de integrantes del grupo familiar: 4 4. Puntaje otorgado a la serie "La Casa de Papel"(1 a 5 estrellas): 4 estrellas 5. Es fumador (sí / no): sí 6. Marca de Celular (Samsung / Huawei / Iphone / Otro): Huawei En base a lo que vimos, asignamos a estas respuestas el vector v = (80000, 100000, 4, 4, 1, 0, 1, 0, 0). Esta asignación que hicimos es muy común cuando construimos modelos lineales. Vemos que la estructura de espacio vectorial es la que nos dice cómo construir el modelo. 3.1. Subespacios vectoriales. V se llama subespacio de 1. 2. 3. Dado V un K espacio vectorial, un subconjunto U ⊂V si verica 0∈U ∀u, v ∈ U u + v ∈ U ∀u ∈ U , ∀α ∈ K αu ∈ U . Notar que U es a la vez un espacio vectorial. Ejemplo 1.10. Algunos ejemplos de subespacios vectoriales son 1. El subconjunto de vectores de 5 vectorial de R . R5 tales que la primera coordenada es 0 es un subespacio 3 × 3 es un subespacio vectorial de R3×3 . n×n . El conjunto de matrices simétricas de n × n es un subespacio vectorial de R 5 El subconjunto de vectores R tales que la primera coordenada es 1 no es un subespacio 5 vectorial de R . El conjunto de todos los polinomios en R[X] que se anulan en 1. 2. El conjunto de matrices diagonales de 3. 4. 5. 3.2. Conjuntos de generadores y bases. 3.2.1. Vectores linealmente independientes. Dado un conjunto {v1 , . . . , vm } de vectores en n R , decimos que es un conjunto de vectores linealmente independientes si la única elección de coecientes para los cuales m X ai vi = 0 i=1 es ai = 0 para todo 1 ≤ i ≤ m. Ejemplo 1.11. v1 = (1, 0, 0), v2 = (0, 1, 0) y v3 = (0, 0, 1) son linealmente independientes. v1 = (1, 0, 1), v2 = (0, 1, 2) y v3 = (1, 2, 5) son linealmente dependientes, v3 = v1 + 2v2 . O equivalentemente, v1 + 2v2 − v3 = 0. Los vectores Los vectores porque 3.2.2. Espacio vectorial generado por vectores. de un espacio vectorial V, Dado un conjunto de vectores el conjunto de todas las combinaciones lineales de estos vectores ⟨v1 , . . . , vm ⟩ = {a1 v1 + · · · + am vm : ai ∈ R, i = 1, . . . , m} es un subespacio U de V {v1 , . . . , vm } llamado el espacio generado por {v1 , . . . , vm }. 3. ESPACIOS VECTORIALES {v1 , . . . , vm } Proposición 1.1. Si los vectores U = ⟨v1 , . . . , vm ⟩ {vi : i = 1, . . . , m}. mento de 21 son linealmente independientes, cualquier ele- se escribe de forma única como combinación lineal de los vectores v Demostración. Supongamos por el absurdo que v = a1 v1 + · · · + am vm = b1 v1 + · · · + bm vm , puede escribirse de dos formas distintas entonces restando obtenemos 0 = (a1 − b1 )v1 + · · · + (am − bm )vm , (a1 , . . . , am ) ̸= (b1 , . . . , bm )), {v1 , . . . , vm }. donde los coecientes no son todos 0 (porque independencia lineal de los vectores B = {v1 , . . . , vm } ⊂ V es U = ⟨v1 , . . . , vm ⟩ ⊂ U . Definición 1.1. Si que B es una base y esto contradice la □ un conjunto linealmente independiente, decimos de V A continuación veremos que si un espacio vectorial de elementos, cualquier otra base de V tienen una base con una cantidad nita tiene la misma cantidad de elementos. Comenzamos con el siguiente lema. Proposición 1.2 (Lema de intercambio). Si 1≤i≤m base de V . entonces existe siendo una B = {v1 , . . . , vm } es un base de V y w ∈ V , B a vi por w, el conjunto resultante sigue tal que reemplazando en Demostración. Como w∈V y B es una base, existen a1 , . . . , am en K tales que w = a1 v1 + · · · + am vm , y existe algún 1≤k≤m tal que ak ̸= 0. Por lo tanto, vk = y el conjunto {v1 , . . . , w, . . . , vm } 1 w− ak X ai vi , i̸=k es un sistema de generadores de V. Para ver que forman una base, veamos que son linealmente independientes. Si existe una combinación no nula b1 v1 + · · · + bk w + · · · + bm vm = 0, analizamos dos casos: Si bk = 0, encontramos una relación de dependencia lineal en B , lo cual es absurdo porque B era una base. Si bk ̸= 0, entonces despejando w obtenemos una escritura de w en la base B distinta a la anterior, lo cual también es absurdo. Concluimos que {v1 , . . . , w, . . . , vm } V. es un conjunto linealmente independiente y genera por lo tanto es una base de V, □ Ahora podemos probar el siguiente resultado. Proposición 1.3. Dado un espacio vectorial elementos, y sea B̃ otra base de V. Luego B̃ B = {v1 , . . . , vs } una exactamente s elementos. V, tiene sea base de V de s 22 1. NOCIONES BÁSICAS DE ÁLGEBRA LINEAL Demostración. Queremos usar el Lema de Intercambio e ir reemplazando uno a uno los B vectores de B̃ . por los vectores de El único cuidado que tenemos que tener es que vayamos reemplazando en cada paso un vector distinto de gamos que ya reemplazamos primeros k vectores de B k B . Para ver que esto siempre es posible, supon- vectores y, por simplicidad, supongamos que reemplazamos los por los primeros k vectores de B̃ .. Es decir, tenemos que {w1 , . . . , wk , vk+1 , . . . , vs } es una base de V. Ahora queremos reemplazar a wk+1 del Lema de Intercambio, escribimos a por algún vector wk+1 vi , i ≥ k + 1. Siguiendo la demostración como combinación no nula de los elementos de la base: wk+1 = c1 w1 + · · · + ck wk + ck+1 vk+1 + · · · + cs vs . ck+1 , . . . , cs iguales a 0, porque entonces B̃ no sería base cj ̸= 0, y siguiendo la demostración del Lema de reemplazando a vj por wk obtenemos una nueva base de V . No pueden ser todos los coecientes de V. Luego podemos elegir Intercambio, obtenemos que j > k tal que {w1 , . . . , ws } ⊂ B̃ que {w1 , . . . , ws }, y tiene s elementos. □ Aplicando este razonamiento inductivamente, concluimos que existen forman una base de Cuando V V. Por lo tanto B̃ es exactamente igual a tiene una base nita, llamamos dimensión de base, y decimos que V V a la cantidad de elementos de la es un espacio de dimensión nita. Ejemplo 1.12. 1. Rn es un espacio vectorial de dimensión el vector que tiene 1 en la entrada i y 0 n. Una base de Rn es {ei : i = 1, . . . , n}, con ei en todas las demás. Llamamos base canónica a esta base. 2. 3. R[x]d es un espacio vectorial de dimensión d+1. La base canónica de R[x]d es {1, x, x2 , . . . , xd }. R[x] es un espacio vectorial de dimensión innita. En esta materia vamos a trabajar sobre espacios de dimensión nita. Proposición 1.4. Todo R-espacio vectorial de dimensión nita n es isomorfo a Rn como espacio vectorial (es decir, si solo consideramos las operaciones de espacio vectorial). Ejemplo 1.13. 1. Las matrices de m×n podemos pensarlas como vectores de longitud 2. Los polinomios de grado d d + 1. Por ejemplo, en R[x]3 (1, 0, −3, 2). longitud En general, si B = {b1 , . . . , bn } representamos al polinomio Por ejemplo, v en la base x3 − 3x + 2 por el vector V y v ∈ V , vimos que v B , v = a1 b1 + · · · + an bn . es una base de un espacio vectorial admite una escritura única como combinación lineal de elementos de Podemos representar a m × n. podemos representarlos por sus vectores de coecientes, de B como v = (a1 , . . . , an )B . p(x) = x3 − 3x + 2 = (1, 0, −3, 2)B , con B = {x3 , x2 , x, 1}. 3. ESPACIOS VECTORIALES 3.3. Base a partir de sistema de generadores. V de dimensión nita n, V cualquier base de 23 Como vimos, para un espacio vectorial tiene la misma cantidad de elementos n. Esto implica los siguientes resultados directos, cuya demostración dejamos como ejercicio. Un conjunto Si S⊂V S⊂V con menos de n elementos no puede generar todo es un conjunto linealmente independiente de Un conjunto S⊂V n con más de n elementos, S V. es una base de V. elementos no puede ser linealmente independiente. Más aún, tenemos el siguiente resultado. V es un espacio de dimensión n y S ⊂ V es un conjunto de generadores m > n, podemos extraer de S un subconjunto B de n elementos que forma Proposición 1.5. Si de m elementos, con una base de V. m > n, podemos eliminar algún vector de S y seguir teS no puede ser un conjunto linealmente independiente, Demostración. Veamos que si niendo un sistema de generadores. Como existe una combinación lineal no nula 0 = a1 w1 + · · · + as ws , y suponemos por simplicidad as ̸= 0. Luego ws pertenece al espacio generado por {w1 , . . . , ws−1 }, y por lo tanto podemos eliminarlo. Podemos repetir este proceso inductivamente siempre que la cantidad de vectores resultantes sea mayor que n, hasta llegar a tener un subconjunto de tanto es una base de n elementos que generan V y por lo V. □ Notamos también que dado un conjunto de vectores base del espacio vectorial generado por S S = {v1 , . . . , vs }, podemos obtener una triangulando el sistema, es decir 1. Colocamos los vectores como las de una matriz. 2. Triangulamos la matriz utilizando eliminación gaussiana. 3. Tomamos los vectores correspondientes a las las no nulas de la matriz. Ejemplo 1.14. Dado el subespacio R4 , para obtener una base de S S = ⟨(1, 4, 3, −1), (1, 0, 1, 0), (3, 3, 2, 7), (2, 6, 0, 14), (2, 3, 1, 7)⟩ ⊂ construimos la matriz 1 1 A= 3 2 2 4 0 3 6 3 3 −1 1 0 2 7 0 14 1 7 y triangulamos. A = np.array([[1, 4, 3, -1,], [1, 0, 1, 0], [3, 3, 2, 7], [2, 6, 0, 14], [2, 3, 1, 7]]) print(row_echelon(A)) %% [[ 1. %% [ 0. %% [ 0. 4. 1. 0. 3. 0.5 1. -1. ] -0.25] -3.1 ] 24 1. NOCIONES BÁSICAS DE ÁLGEBRA LINEAL %% %% [ 0. [ 0. 0. 0. 0. 0. 0. 0. Obtenemos la matriz ] ]] 1 0 A′ = 0 0 0 Por lo tanto una base de S es 4 3 −1 1 1/2 −1/4 0 1 −31/10 . 0 0 0 0 0 0 B = {(1, 4, 3, −1), (0, 1, 1/2, −1/4), (0, 0, 1, −31/10)}. A partir de la Proposición 1.5, podemos deducir el siguiente resultado de extensión de una base. Proposición 1.6 (Extensión de una base). Dado un espacio vectorial base B = {v1 , . . . , vs } de un subespacio S, V n y una {w1 , . . . , wn−s } tales de dimensión es posible encontrar vectores que {v1 , . . . , vs w1 , . . . , wn−s } forman una base de V. □ Demostración. Ejercicio. 3.4. Espacios dados por ecuaciones homogéneas. Ax = 0, A ∈ Rm×n Rn . con vectorial de y b ∈ Rn , es fácil ver que el conjunto Por lo tanto, podemos encontrar una base de S Dado un sistema de ecuaciones S de soluciones es un subespacio como subespacio de Rn . Una forma de encontrar una base es triangular el sistema. Cada la no nula en la matriz escalonada impone una restricción en el espacio y reduce en uno la dimensión. Es decir, que la dimensión de n−k donde k S es es la cantidad de las no nulas en la triangulación. Ejemplo 1.15. El sistema x1 + 2x2 − x3 + x4 = 0 3x2 − 2x3 − x4 = 0, ya está escalonado. Por lo tanto el espacio de soluciones tiene dimensión 4 − 2 = 2. Para encontrar un sistema de generadores, despejamos la primera variable de cada ecuación en el sistema triangulado en función de las demas variables. Llamamos variables dependientes a las variables que aparecer como primer variable de alguna la, y variables libres o independientes a las demás. En este ejemplo, {x1 , x2 } son las variables dependientes y {x3 , x4 } las variables libres (estos conjuntos dependen del método que utilizamos para resolver el sistema, podemos obtener otros conjuntos de variables dependientes y libres, aunque la cantidad de variables en cada uno será siempre la misma). Ahora despejamos las variables dependientes en función de las variables libres, de abajo para arriba: 2x3 + x4 2 1 = x3 + x4 x2 = 3 3 3 2 1 1 5 x3 + x4 + x3 − x4 = − x3 − x4 , x1 = −2x2 + x3 − x4 = −2 3 3 3 3 3. ESPACIOS VECTORIALES 25 y podemos escribir el conjunto de soluciones en la forma 1 5 2 1 S= − x3 − x4 , x3 + x4 , x3 , x4 : x3 , x4 ∈ R . 3 3 3 3 A partir de esta escritura, es fácil obtener los generadores del subespacio vectorial: y 1 2 5 1 S= − x3 , x3 , x3 , 0 + − x4 , x4 , 0, x4 : x3 , x4 ∈ R}. : x3 , x4 ∈ R 3 3 3 3 1 2 5 1 = − , , 1, 0 x3 + − , , 0, 1 x4 : x3 , x4 ∈ R}. : x3 , x4 ∈ R , 3 3 3 3 1 2 5 1 concluimos S = ⟨ − , , 1, 0 , − , , 0, 1 ⟩. 3 3 3 3 3.5. Ecuaciones a partir de generadores. En la sección anterior, vimos cómo obtener los generadores de un subespacio vectorial dado por ecuaciones homogéneas. En ocasiones es útil realizar el proceso inverso, obtener ecuaciones homogéneas que denen un espacio vectorial dado por generadores. Veamos cómo hacerlo en un ejemplo. Ejemplo 1.16. Hallar las ecuaciones que denen el espacio generado por los vectores {(1, 0, 2, −1), (3, 1, 0, 2)}. Un vector genérico de S es (x1 , x2 , x3 , x4 ) = a1 (1, 0, 2, −1) + a2 (3, 1, 0, 2). Podemos platear esta ecuación en forma matricial: 3 x1 1 a 1 = x2 . 0 a2 x3 2 x4 1 0 2 −1 xi . Para 1 3 0 1 2 0 −1 2 Ahora buscamos relaciones entre los eso triangulamos la matriz ampliada x1 x2 . x3 x4 Al realizar la triangulación, obtenemos la matriz 1 0 0 0 x1 3 1 x2 , 0 x3 − 2x1 + 3x2 0 x4 + x1 + 5x2 de donde obtenemos las relaciones: x3 − 2x1 + 3x2 = 0 x4 + x1 + 5x2 = 0 y estas son las ecuaciones que denen nuestro espacio vectorial, es decir, S = {(x1 , x2 , x3 , x4 ) : −2x1 + 3x2 + x3 = 0, x1 + 5x2 + x4 = 0}. S = 26 1. NOCIONES BÁSICAS DE ÁLGEBRA LINEAL En general, dados generadores de un espacio vectorial S = ⟨v1 , . . . , vs ⟩ ⊂ Rn , realizamos los S. siguientes pasos para obtener ecuaciones que denen a 1. Construir la matriz ampliada correspondiente al sistema de ecuaciones (x1 , . . . , xn ) = a1 v1 + · · · + as vs . 2. Escalonar la matriz. 3. El espacio S queda denido por las ecuaiones correspondientes a los términos de la última columna de las las en las que todos los coecientes en las primeras 3.6. Suma e intersección de subespacios. s columnas son nulos. Como aplicación de las últimas dos secciones veamos cómo calcular sumas e intersecciones de subespacios vectoriales. S, T de un K espacio vectorial W , denimos = {s + t : s ∈ S, t ∈ T }, el conjunto de todas las sumas posibles entre un elemento de S y un elemento de T . Intersección. S ∩ T = {v ∈ W : v ∈ S y v ∈ T }. Definición 1.2. Dados subespacios Suma. S + T Queda como ejercicio vericar que estos dos conjuntos son subespacios vectoriales de Concentremos un poco nuestra atención en el caso en que y T W = Kn . W. Dependiendo si S vienen dados por generadores o ecuaciones puede ser más fácil o más difícil calcular estos subespacios. Podemos resumir los métodos de la siguiente forma (dejamos como ejercicio vericar la correctitud de los métodos). Si S y T S+T están dados por generadores, está generado por la unión de todos los generadores. Si S y T están dados por ecuaciones, S∩T está generado por la unión de todas las ecuaciones. Si S y/o T están dados por ecuaciones, calculamos generadores de ambos y tomamos la T están dados por generadores, calculamos ecuaciones de ambos y tomamos la unión. Si S y/o unión de las ecuaciones. Con métodos similares podemos realizar otras operaciones entre subespacios. Por ejemplo, S ⊂ T ? Ahora el caso más simple es si S está dado por generadores T por ecuaciones. En este caso, alcanza vericar si todos los generadores de S son elementos de T vericando si cumplen las ecuaciones que denen a T . ¾cómo podemos determinar si y R4 , S = ⟨(1, 0, −3, 1), (2, 0, 3, −2)⟩ y T = {(x1 , x2 , x3 , x4 ) : generadores de S + T y S ∩ T . Determinar si S ⊂ T . Ejercicio 1.2. Dados los subespacios de x1 + x2 − x4 = 0, x2 + x3 = 0}, hallar Es simple determinar la relación entre las dimensiones de los espacios S ,U , su suma y su intersección. De eso trata el siguiente resultado. Proposición 1.7. Sean U y V dos subespacios de un K espacio vectorial de dimensión nita. Entonces dim(U + V ) = dim(U ) + dim(V ) − dim(U ∩ V ). 3. ESPACIOS VECTORIALES 27 U ∩V = {0}. En ese caso, dim(U ∩V ) = 0, dim(U + V ) = dim(U ) + dim(V ). Demostración. Probemos primero el caso en que por lo cual basta ver que B = {u1 , · · · , uk } y B ′ = {v1 , · · · , vn } bases de U y V respectivamente y notemos que si tomamos un w ∈ U + V deben existir u ∈ U y v ∈ V de modo tal que w = u + v . En particular, como B y B ′ son bases de U y V , deben existir escalares {αi }1≤i≤k y {βj }1≤j≤n de modo tal que Para ello consideramos k X u= αi ui v= i1 n X βj vj , j=1 de donde concluímos que el conjunto B̃ = B ∪ B ′ = {u1 , · · · , uk , v1 , · · · , vn } U + V . Decimos que B̃ es L.I. con lo cual dim(U + V ) = #B + #B ′ = dim(U ) + dim(V ) como queríamos es un sistema de generadores de resultaría una base y por ende probar. Para ver que B̃ es L.I. suponemos que para cierta combinación lineal, se tiene k X αi u i + i1 n X βj vj = 0, j=1 y notamos que en ese caso U∋ k X αi ui = i1 n X (−βj )vj ∈ V, j=1 lo que dice que ambos miembros (que son iguales) pertenecen tanto a U ∩ V = {0}. como a V y por ende a Luego k X αi ui = 0 = i1 y resulta U n X (−βj )vj , j=1 α1 = · · · = αk = β1 = · · · = βn = 0, indicando que B̃ es L.I. U ∩ V ̸= {0}. En este caso tomamos una base B ′′ = {z1 , · · · , zr } ′′ de U ∩ V y como U ∩ V ⊂ U gracias a la Proposición 1.6, podemos extender B a una ba′′ ′ se B de U , B = {z1 , · · · , zr , ur+1 , · · · , uk }. Análogamente, B se extiende a una base B de ′ V , B = {z1 , · · · , zr , vr+1 , · · · , vn }. Notemos, antes de proseguir, que las dimensiones de los espacios involucrados son r ,k y n para U ∩ V , U y V respectivamente. Decimos que B̃ = {z1 , · · · , zr , ur+1 , · · · , uk , vr+1 , · · · , vn } es base de U + V . En efecto, es trivial ver que geneResta probar el caso en que ra y para ver que es L.I. escribimos r X n X γi zi + i=1 k X αj uj + j=r+1 βl vl = 0, l=r+1 y entonces, por un lado se tiene (1.1) U∋ r X i=1 γi zi + k X j=r+1 αj uj = n X (−βl )vl ∈ V, l=r+1 28 1. NOCIONES BÁSICAS DE ÁLGEBRA LINEAL de donde en particular · · · = βn = 0. Pn l=r+1 (−βl )vl r X i=1 y entonces ∈ U ∩ V = ⟨z1 , · · · , zr ⟩, es decir, que βr+1 = βr+2 = Volviendo a (1.1), vemos que γi zi + k X αj uj = 0, j=r+1 γ1 = γ2 = · · · = γr = αr+1 = · · · = αk = 0 porque B es base y por lo tanto L.I. Hemos probado que B̃ = {z1 , · · · , zr , ur+1 , · · · , uk , vr+1 , · · · , vn } es una base de U +V, por lo tanto dim(U + V ) = r + (k − r) + (n − r) = k + n − r = dim(U ) + dim(V ) − dim(U ∩ V ), como queríamos probar. □ 4. OPERACIONES CON MATRICES 29 4. Operaciones con matrices 4.1. Multiplicación de matrices. a11 a12 · · · a21 a22 · · · A = .. . .. . . . . am1 am2 · · · el producto C = AB es la matriz de m Dadas matrices a1n a2n . , . . amn las y p A ∈ Km×n y b11 b12 · · · b21 b22 · · · B = .. . .. . . . . bn1 bn2 · · · B ∈ Kn×p b1p b2p . . . bnp columnas c11 c12 · · · c21 c22 · · · C = .. . .. . . . . cm1 cm2 · · · c1p c2p m×p , . ∈ K . . cmp con cij = ai1 b1j + ai2 b2j + · · · + ain bnj = n X aik bkj k=1 (en la casilla (i, j) de C ponemos el producto de la la Si multiplicamos dos matrices o vectores en i Python de A con ∗ con la columna j de B) . ... A1 = np.array([[1,2],[3,4]]) A2 = np.array([[1,0],[0,1]]) print(A1) print(A2) print(A1 * A2) %% A1 = %% [[1 2] %% [3 4]] %% A2 = %% [[1 0] %% [0 1]] %% A1 * A2 = %% [[1 0] %% [0 4]] La operación ∗ en Python calcula el producto coordenada a coordenada. Esta operación se llama producto de Hadamard, y es útil en muchos casos, pero no es el producto usual de matrices. Para el producto usual de matrices usamos en Python el símbolo @. print("A1 @ A2 = \n", A1 @ A2) %% A1 @ A2 = # Producto usual de matrices 30 %% %% 1. NOCIONES BÁSICAS DE ÁLGEBRA LINEAL [[1 2] [3 4]] ½Revisar siempre que estemos usando el producto correcto en Python! Ejercicio 1.3. Realizar (a mano) los siguientes productos de matrices: 1. 2. 3. 4. 3 5 1 −1 · 2 −9 0 2 4 3 5 · −3 4 · 3 5 −3 3 5 x · 2 −9 y Observaciones: El producto de matrices es asociativo. Es decir A(BC) = (AB)C , para matrices con los tamaños apropiados para realizar los productos. El producto de matrices no es conmutativo. En general, no vale en el caso de matrices cuadradas. Lo vericamos en A = np.array([[1, 2], B = np.array([[2, 5], print("A @ B = \n", A print("B @ A = \n", B AB = BA, ni siquiera Python. [2, 3]]) [1, 4]]) @ B) @ A) A @ B = [[ 4 13] [ 7 22]] B @ A = [[12 19] [ 9 14]] Si bien vimos que el conjunto de matrices Km×n es un espacio vectorial, el producto de matrices no es una operación de espacio vectorial. 4.2. Matrices transpuesta y conjugada. es la matriz que se obtienen a partir de A intercambiando las por (aji ) ∈ Rn×m . Ejemplo 1.17. Si Si A = (aij ) ∈ Rm×n T = columnas, es decir A La matriz transpuesta de a11 a21 a11 a12 a13 T A= , A = a12 a22 . a21 a22 a23 a a 13 23 5 7 5 3 T A= , A = . 3 −1 7 −1 4. OPERACIONES CON MATRICES 31 Proposición 1.8. (AT )T = A. (AB)T = B T AT . En Python calculamos la transpuesta de una matriz con el comando transpose de numpy. A = np.array([[5,7],[3,-1]]) print(np.transpose(A)) ## [[ 5 3] ## [ 7 -1]] En lo que sigue resulta de utilidad denir lo siguiente: consideremos v∈ Kn (resp. que v (resp. A∈ A) v ∈ Kn , A ∈ Kn×n , con Kn×n ), denotamos el vector (resp. matrix) que tiene los mismos elementos pero conjugados. Obviamente si K = R, v = v , A = A . La siguiente denición generaliza a la traspuesta en las matrices y a la conjugación en los escalares. Dada A ∈ Kn×m , Notar que si la matriz conjugada a ∈ K1×1 de A, ( o sea, es un escalar, denotada con a ∈ K) A∗ entonces se dene como a∗ = a. A∗ = AT . La conjugación hereda las propiedades de la traspuesta: (A∗ )∗ = A ∗ T Si K = R, A = A . (AB)∗ = B ∗ A∗ (aA + bB)∗ = aA∗ + bB ∗ . 4.3. Sistemas lineales y ecuaciones matriciales. Observando el producto del punto 4 del Ejercicio 1.3, vemos que podemos plantear el sistema de ecuaciones lineales 3x + 5y = 4 2x − 9y = 15. en forma matricial 3 5 x 4 · = , 2 −9 y 15 m×n es la matriz de coecientes, x o en general, Ax = b, donde A ∈ R n columna de incógnitas y b ∈ R es el vector de términos constantes. es un vector o matriz Pregunta: ¾cuántas incógnitas y cuántas ecuaciones tiene el sistema Ax = b con los tamaños dados? Para resolver sistemas de ecuaciones en volver a esto más adelante). A = np.array([[3,2],[5,-4]]) b = np.array([22, -11]) print(np.linalg.solve(A, b)) Python podemos usar el comando solve (vamos a 32 1. NOCIONES BÁSICAS DE ÁLGEBRA LINEAL ## [3. 6.5] 4.4. Rango de una matriz. Para saber si un sistema de ecuaciones puede tener solución única, innitas soluciones o ninguna solución, calculamos el rango de la matriz A. Pensando las las de una matriz como ecuaciones, el rango de la matriz nos indica cuantas ecuaciones ïndependientes"tenemos. El rango de una matriz es la máxima cantidad de las o columnas linealmente independientes que posee la matriz. Proposición 1.9. La máxima cantidad de las linealmente independientes de una matriz coin- cide con la máxima cantidad de columnas linealmente independientes. Por lo tanto, no es necesario distinguir rango-la de rango-columna, y hablamos simplemente de rango. Ejemplo 1.18. 1. 2. 1 0 1 rango 0 1 rango 4 2 0 1 2 7 =2 6 1 2 = 1 5 4.4.1. ¾Cómo calcular el rango? Para calcular el rango de una matriz, triangulamos la matriz y contamos cuántas las no nulas quedan. Proposición 1.10. El espacio vectorial generado por las las de una matriz antes o después de triangular es el mismo. En Python, calculamos el rango de una matriz con el comando matrix_rank de numpy.linalg. A = np.array([[1,0,1],[0,1,2],[1,2,5]]) print("Rango de A = ", np.linalg.matrix_rank(A)) B = np.array([[1,2,3],[4,5,6],[7,8,9]]) print("Rango de B = ", np.linalg.matrix_rank(B)) ## Rango de A = ## Rango de B = 2 2 4.4.2. Sistemas de ecuaciones y rango de matrices. las, el sistema Si la matriz Si rango(A) es igual a la cantidad de Ax = b siempre tiene solución. Todas las ecuaciones son independientes entre sí. A es cuadrada y rango(A) es igual a la cantidad de las, decimos Ax = b tiene solución única para todo b. que rango máximo. En este caso, el sistema 4.4.3. Rango de un producto de matrices. 1. Dadas matrices rango(A) = rango(AT ) = rango(AT A) = rango(AAT ) A ∈ Rm×n y B ∈ Rn×p , A tiene 4. OPERACIONES CON MATRICES 2. 33 rango(AB) ≤ mı́n{rango(A), rango(B)}. rango(B) = n, entonces rango(AB) = rango(A). n×n , y B tiene rango máximo, entonces rango(AB) = rango(A). Si B ∈ R 3. Si 4. Idea de las demostración: las las de de AB AB son combinaciones de las las de son combinaciones de las columnas de B y las columnas A. 4.5. Matrices especiales. 4.5.1. Matriz diagonal. Una matriz A ∈ Rn×n se dice diagonal si aij = 0 es decir: a11 0 · · · 0 a22 · · · A = .. . .. . . . . 0 0 ··· 0 0 . . . ann Ejercicio 1.4. Calcular a mano pero sin hacer muchas cuentas: 1. 2. 3. 1 0 0 1 0 0 1 2 3 0 2 0 0 2 0 1 2 3 3 0 0 , 3 0 1 0 · 2 3 3 1 1 2 · 0 3 0 1 2 3 0 2 0 1 2 , 3 0 0. 3 # Usamos el comando diag para definir matrices diagonales D = np.diag(np.array([1,2,3])) print("D = \n", D) print("D^2 = \n", D @ D) %% D = %% [[1 0 0] %% [0 2 0] %% [0 0 3]] %% D^2 = %% [[1 0 0] %% [0 4 0] %% [0 0 9]] para todo i ̸= j , 34 1. NOCIONES BÁSICAS DE ÁLGEBRA LINEAL 4.5.2. Matriz identidad. aii = 1 para todo 1≤i≤n y n ∈ N, la matriz In ∈ Rn×n aij = 0 para i ̸= j , es decir: Para cada 0 0 . . . 1 1 0 ··· 0 1 · · · In = .. .. . . . . . 0 0 ··· Proposición 1.11. Para toda Podemos usar el comando es la matriz diagonal con B ∈ Rn×n , In · B = B · In = B . eye de numpy para denir una matriz identidad. id = np.eye(3) # Creamos una matriz de 3 x 3 con números aleatorios entre 0 y 1 A = np.random.rand(3,3) print("A = \n", A) print("id * A = \n", id @ A) %% A = %% [[0.91836939 0.31101594 0.48474114] %% [0.00093026 0.37622722 0.91214465] %% [0.6293026 0.20801675 0.6855896 ]] %% id * A = %% [[0.91836939 0.31101594 0.48474114] %% [0.00093026 0.37622722 0.91214465] %% [0.6293026 0.20801675 0.6855896 ]] 4.5.3. Mas Matrices especiales. Triangular superior: para todo i>j Una matriz U ∈ Rn×n Triangular inferior: Una matriz L ∈ Rn×n todo i>j Matriz Matriz Matriz Matriz se llama triangular superior si aij = 0 (es decir, todas las entradas abajo de la diagonal son 0). se llama triangular inferior si aij = 0 para (es decir, para todas las entradas arriba de la diagonal son 0). simétrica: A ∈ Rn×n es simétrica si AT = A. Hermitiana: A ∈ Cn×n es Hermitiana si A∗ = A. ortogonal: A es ortogonal si AAT = AT A = In . unitaria: A ∈ Cn×n es unitaria si AA∗ = A∗ A = In . 4.5.4. Inversa de una matriz. Dada una matriz A ∈ Rn×n , si existe una matriz B ∈ Rn×n tal que AB = In = BA, A es inversible y B es la inversa de A. Si A es inversible, A−1 . Si A no es inversible, decimos que A es singular. decimos que notamos la inversa es única y la 4. OPERACIONES CON MATRICES 35 Para calcular la inversa de una matriz podemos aplicar eliminación gaussiana, observando que encontrar una matriz B tal que AB = In es equivalente a resolver los n sistemas de ecuaciones b1j b2j A .. = ej , . bnj donde ej es el j -ésimo vector canónico, que coinicide con la j -ésima columna de la matriz In . Ejemplo 1.19. Calculamos la inversa de la matriz 2 0 −2 A = 1 −1 1 . 0 2 1 Podemos resolver los sistemas ampliada con los 3 vectores Abj = ej , 1 ≤ j ≤ 3, ej simultáneamente considerando una matriz a la derecha: 2 0 −2 1 0 0 1 −1 1 0 1 0 . 0 2 1 0 0 1 A = np.array([[1, 4, 3, -1,], [1, 0, 1, 0], [3, 3, 2, 7], [2, 6, 0, 14], [2, 3, 1, 7]]) print(row_echelon(A)) %% [[ 2. 0. -2. 1. 0. 0.] %% [ 1. -1. 1. 0. 1. 0.] %% [ 0. 2. 1. 0. 0. 1.]] %% Matriz escalonada: %% [[ 1. 0. -1. 0.5 0. 0. ] %% [ 0. 1. -2. 0.5 -1. -0. ] %% [ 0. 0. 1. -0.2 0.4 0.2]] La función row_echelon que estamos utilizando coloca 1's como primer elemento no nulo de cada la, dividiendo cada la por el escalar apropiado. A partir de la matriz escalonada podemos ahora encontrar fácilmente las casillas Por ejemplo, la última la será [−0.20.40.2]. bij de B. Para las las anteriores, podemos realizar ahora la triangulación hacia arriba: f2 +2f3 →f2 1. 0. −1. 0.5 0. 0. 1. 0. 0. 0.5 0.4 0.2 f1 +f3 →f1 0. 1. −2. 0.5 −1. 0. −− −−−−−→ 0. 1. 0. 0.5 0.2 0.4. . 0. 0. 1. −0.2 0.4 0.2 0. 0. 1. −0.2 0.4 0.2 Ahora la matriz que estamos buscando es exactamente la matriz formada por las últimas 3 columnas de la matriz ampliada. 0.3 0.4 0.2 B = 0.1 0.2 0.4. . −0.2 0.4 0.2 36 1. NOCIONES BÁSICAS DE ÁLGEBRA LINEAL Lo vericamos en Python. B = np.array([[0.3, 0.4, 0.2], [0.1, -0.2, 0.4], [-0.2, 0.4, 0.2]]) print(A @ B) %% [[ 1.00000000e+00 %% [-2.77555756e-17 %% [ 0.00000000e+00 Aplicación 1.2. Si 0.00000000e+00 1.00000000e+00 0.00000000e+00 A ∈ Rn×n 0.00000000e+00] 0.00000000e+00] 1.00000000e+00]] es inversible, la solución del sistema Ax = b es x = A−1 b. Para calcular la inversa en (o podemos usar el comando Python usamos el comando inv del paquete numpy.linalg solve del mismo paquete para resolver la ecuación matricial AX = In ). # Probando... A = np.array([[1,7],[2,3]]) print("A = \n", A) A_inv = np.linalg.inv(A) print("A^(-1) = \n", A_inv) print("A * A^(-1) = \n", A @ A_inv) print("La solución de AX = Id_2 es") print(np.linalg.solve(A, np.eye(2))) ## ## ## ## ## ## ## ## ## ## ## ## A = [[1 7] [2 3]] A^(-1) = [[-0.27272727 0.63636364] [ 0.18181818 -0.09090909]] A * A^(-1) = [[1. 0.] [0. 1.]] La solución de AX = Id_2 es [[-0.27272727 0.63636364] [ 0.18181818 -0.09090909]] Nota: En la práctica, es mejor resolver un sistema por eliminación gaussiana que invirtiendo la matriz. 4. OPERACIONES CON MATRICES 4.5.5. Traza de una matriz. La traza de una matriz 37 cuadrada es la suma de los elementos de la diagonal. Si A = (aij ) ∈ Rn×n , tr(A) = a11 + a22 + · · · + ann = Proposición 1.12. Si A, B ∈ Pn i=1 aii . Rn×n : tr(AT ) = tr(A) tr(A + B) = tr(A) + tr(B). Calculamos la traza en Python con el comando trace de numpy. A = np.array([[1,5,1],[-6,7,8],[0,9,-2]]) print("A = \n", A) print("Traza de A = ", tr(A) %% A = %% [[ 1 5 1] %% [-6 7 8] %% [ 0 9 -2]] %% Traza de A = 6 4.6. Determinante de una matriz. El determinante de una matriz cuadrada se puede denir recursivamente por la siguiente fórmula ( a11 det(A) = Pn si i+j a ij j=1 (−1) donde de Mij es la matrix de (n − 1) × (n − 1) det(Mij ) si n=1 n > 1, que se obtiene al eliminar la la i y la columna j A. Ejemplo 1.20. 1. 2. a b det = ad − bc c d 1 2 3 0 7 2 3 3 0 7 det = det − 3 det = 7 − 3 · 11 = −26 −1 4 −1 4 0 −1 4 Proposición 1.13. Si A ∈ Rn×n y fi , 1 ≤ i ≤ n, en la matriz modican el determinante: transponer la matriz: det(AT ) = det(A) son las las de A, las siguientes operaciones 38 1. NOCIONES BÁSICAS DE ÁLGEBRA LINEAL multiplicar una la por un escalar: f1 . . . fi−1 det αfi fi+1 . . . = α det(A) fn f1 sumar un múltiplo de una la a otra la: . . . fi−1 det fi + βfj fi+1 . . . fn f1 . . . fj . = − det . . fi . . . intercambiar dos las: f1 . . . fi . . det . f j . . . fn = det(A) fn n multiplicar toda la matriz por un escalar: det(kA) = k det(A), para n multiplicar toda la matriz por (−1): det(−A) = (−1) det(A). k ∈ R. En base a esta propiedad podemos demostrar fácilmente las siguientes propiedades. Corolario 1.1. A tiene dos las iguales, det(A) = 0. A tiene una la de ceros, det(A) = 0. det(A) = 0 si y solo si A es singular. Si Si Proposición 1.14. Si A, B ∈ Rn×n , det(AB) = det(A) det(B). Calculamos determinantes en Python con el comando det de A = np.array([[1,5,0],[-1,-3,8],[0,1,-2]]) B = np.array([[0,4,2],[2,6,1],[1,5,-1]]) print("det(A) = ", np.linalg.det(A)); print("det(B) = ", np.linalg.det(B)); print("det(AB) = ", np.linalg.det(A @ B)); # No hay relación con los determinantes de A y B numpy.linalg. 5. CAMBIO DE BASE 39 print("det(A + B) = ", np.linalg.det(A + B)); M = np.array([[1,2,3],[4,5,6],[7,8,9]]) print("det(M) = ", np.linalg.det(M)); %% %% %% %% %% det(A) = -12.0 det(B) = 19.999999999999996 det(AB) = -240.0000000000002 det(A + B) = 51.0 det(M) = -9.51619735392994e-16 3 2 −1 0 7 , probar Ejercicio 1.5. Para A = 3 0 −1 4 3 para todo b ∈ R que el sistema Ax = b 4.6.1. Determinante de una matriz triangular superior o inferior. Si tiene solución única A ∈ Rn×n es triangular inferior o superior su determinante es igual al producto de los elementos de la diagonal. a11 a12 · · · 0 a22 · · · det .. . .. . . . . 0 0 ··· a1n a11 0 · · · a21 a22 · · · a2n . = det . . .. . . .. . . . ann an1 an2 · · · 0 n 0 Y = aii . . . i=1 ann 5. Cambio de base Dado un espacio vectorial {e1 , . . . , en } del vector V de dimensión ( de vectores canónicos, ei (j) = 1 0 n llamamos base canónica de si si i=j , i ̸= j donde ei (j) es la V al conjunto j -ésima E= coordenada ei . Dada otra base B de V, queremos saber cómo escribir en la base conocemos sus coordenadas en la base E. vector del cual conocemos sus coordenadas en la base 5.0.1. Cambio de base de B a E . B a un vector v del cual Y viceversa, cómo escribir en la base canónica a un B. Analizamos un ejemplo. Consideramos la base de R3 B = {(1, 2, 5), (0, 1, 7), (0, 0, −1)} y el vector v = (3, −2, 1)B . Para averiguar las coordenadas de v en la base canónica, hacemos la cuenta v = 3(1, 2, 5) + (−2)(0, 1, 7) + 1(0, 0, −1) = (3, 4, 0) (en general omitimos el subíndice canónica). E cuando escribimos un vector en las coordenadas de la base 40 1. NOCIONES BÁSICAS DE ÁLGEBRA LINEAL Podemos escribirlo matricialmente: Observamos que que nos permite CBE 1 0 0 3 3 v = 2 1 0 −2 = 4 . 5 7 −1 −1 0 1 0 0 2 1 0 posee los vectores de B como columnas y es la matriz la matriz 5 7 −1 pasar un vector en coordenadas de una base B a la base canónica. Llamamos a esta matriz. Obtenemos vE = CBE vB . Ejercicio 1.6. B = {(1, 3, 7), (4, 0, 1), (5, −7, 0)} de R3 y el vector v de R3 de coordenadas (1, 2, −5) en la base B , hallar las coordenadas de v en la base canónica. 2 Dada la base B = {1, (x − 1), (x − 1) } de R[x]2 y el polinomio p(x) de coordenadas (7, −2, 1) en la base B , hallar las coordenadas de p en la base canónica de R[x]2 . Observar que esto equivale a escribir como suma de potencias de x a un polinomio que viene dado como suma de potencias de (x − 1). 1. Dada la base 2. 5.0.2. Cambio de base de B a E . Ahora queremos escribir a v = (3, 7, −1)E en la base B. Para esto, necesitamos resolver el sistema de ecuaciones (3, 7, −1) = 3 X ai bi = a1 (1, 2, 5) + a2 (0, 1, 7) + a3 (0, 0, −1) i=1 Esto nos da un sistema de 3 ecuaciones y 3 incógnitas, que podemos plantear en forma matricial: Observamos que la matriz nas, es decir, es la matriz 0 0 a1 3 1 0 a2 = 7 . 7 −1 a3 −1 0 0 de coecientes posee los vectores de B como colum−1 Como B es una base, la matriz CBE es inversible (¾por qué?). 1 2 5 1 0 2 1 5 7 CBE . Por lo tanto, −1 a1 1 0 0 3 3 a2 = 2 1 0 7 = (CBE )−1 7 . a3 5 7 −1 −1 −1 Obtenemos que la matriz de cambio de base de la base canónica E a una base B es CEB = CBE . En resumen: Tenemos una base B = {b1 , . . . , bn } de un espacio vectorial V n. 1. 2. | | | bn . Construimos la matriz CBE = b1 b2 · · · | | | Para pasar un vector en base B a base canónica, usamos vE = CBE vB . de dimensión 5. CAMBIO DE BASE 3. Para pasar un vector en base base canónica a la base usamos vB = CEB vE . 41 B, denimos CEB = (CBE )−1 y 42 1. NOCIONES BÁSICAS DE ÁLGEBRA LINEAL 6. Transformaciones lineales 6.1. Matrices y transformaciones lineales. TA : Rn → Una matriz Rm dada por A ∈ Rm×n dene una función TA (v) = Av. (tomando a v como matriz columna). Ejemplo 1.21. Si 1 3 0 A= ∈ R2×3 2 −1 −4 y v = (1, 0, −2), entonces 1 1 3 0 1 0 TA (v) = = 2 −1 −4 10 −2 Si multiplicamos la matriz A por un vector genérico v = (x1 , x2 , x3 ) ∈ R3 , obtenemos x1 1 3 0 1x1 + 3x2 + 0x3 x2 = TA (v) = . 2 −1 −4 2x1 − x2 − 4x3 x3 Entonces podemos escribir TA (x1 , x2 , x3 ) = (x1 + 3x2 , 2x1 − x2 − 4x3 ). Ejercicio. Escribir a la función f (x1 , x2 ) = (3x1 , x2 − x1 , x2 + 2x1 ) de R2 R3 en forma f : V → W se llama en matricial. transformaciones lineales. Estas funciones reciben el nombre de Definición 1.3. Dados dos espacios vectoriales transformación lineal si cumple: 1. 2. V W, y una función f (v + v ′ ) = f (v) + f (v ′ ) para todos v, v ′ ∈ V . f (a · v) = a · f (v) para todos a ∈ R y v ∈ V . El producto de matrices verica A(v + w) = Av + Aw y A(av) = a(Av), por lo tanto se cumplen los axiomas de transformación lineal. Ejemplo 1.22. La función 2 lineal de R en f (x1 , x2 ) = (3x1 + 1, x2 − x1 , x2 + 3x1 ) no es una transformación f (2 · (1, 1)) = f (2, 2) = (7, 0, 8) y 2f (1, 1) = 2(4, 0, 4) = (8, 0, 8). R3 . Por ejemplo, Observación. Las columnas de A son las imágenes de los vectores canónicos ei , 1 ≤ i ≤ n. Proposición 1.15. Si B = {v1 , . . . , vn } es una base de V, podemos denir una transformación lineal deniendo la imagen de cada elemento de la base. Para un elemento si v = a1 v1 + · · · + an vn , entonces 2 es una base de R . Si B = {(1, 2), (2, −1)} f (1, 2) = (0, 1) y f (2, −1) = (1, 3), Ejemplo 1.23. lineal, v ∈V, f (v) = a1 f (v1 ) + · · · + an f (vn ). f : R2 → R2 es una transformación entonces f (3, 1) = f ((1, 2) + (2, −1)) = f (1, 2) + f (2, −1) = (0, 1) + (1, 3) = (1, 4). 6. TRANSFORMACIONES LINEALES 43 6.2. Imagen y núcleo de matrices y transformaciones lineales. En base a esto, hacemos las siguientes deniciones Definición 1.4. El subespacio de Km im(A) = {b ∈ Km : b = Ax para algún x ∈ Kn } A (o rango de A, pero trae confusión con el rango que A está generada por las columnas de A (¾por qué?). es la imagen de de una matriz El subespacio de ya denimos). La imagen Kn ker(A) = {x ∈ Kn : Ax = 0} A. Podemos calcular el núcleo de A resolviendo es el núcleo o kernel de el sistema homogéneo Ax = 0. Propiedad. rango(A) = dim(im(A)). Teorema 1.1 (Teorema de la dimensión.). Dada una matriz A ∈ Km×n , n = dim(ker(A)) + dim(im(A)) Demostración. Utilizamos la Proposición 1.6 de extensión de bases. Suponemos que el núcleo de A tiene dimensión t y consideramos una base n Extendemos dicha base a una base de R : {u1 , . . . , ut } ⊂ Kn del núcleo de A. B = {u1 , . . . , ut , w1 , . . . , wn−t }. Veamos que {Aw1 , . . . , Awn−t } forman una base de im(A). Dado un vector v ∈ Rn , podemos escribirlo como combinación de elementos de la base: v = a1 u1 + · · · + at ut + b1 w1 + · · · + bn−t wn−t . Como Aui = 0 para 1 ≤ i ≤ t, obtenemos que Av = +b1 Aw1 + · · · + bn−t Awn−t , y por lo tanto {Aw1 , . . . , Awn−t } es un conjunto de generadores de im(A). Solo falta ver que es un conjunto linealmente independiente. Supongamos c1 Aw1 + · · · + cn−t Awn−t = 0. Luego A(c1 w1 + · · · + cn−t wn−t ) = 0, es decir c1 w1 + · · · + cn−t wn−t ∈ ker(A). Por lo tanto, existen di , 1 ≤ i ≤ t tales que c1 w1 + · · · + cn−t wn−t = d1 u1 + · · · + dt ut . B forman una base de Rn , por lo tanto debe ser ci = 0 para todo 1 ≤ i ≤ n−t, y concluimos que los vectores Aw1 , . . . , Awn−t son linealmente independientes. □ 1 0 −2 1 0 2 −1 −2, Ejemplo 1.24. Dada la matriz A = 2 1 1 1 Pero los vectores de 44 1. NOCIONES BÁSICAS DE ÁLGEBRA LINEAL 1. los conjuntos im(A) ker(A), ¾son subespacios de qué im(A) y calcular dim(im(A)). ker(A) y calcular dim(ker(A)). y 2. hallar generadores de 3. hallar generadores de espacios vectoriales? 4. vericar si se cumple el teorema de la dimensión. Respuestas 1. 2. im(A) ⊂ R3 y ker(A) ⊂ R4 . im(A) = ⟨(1, 0, 2), (0, 2, 1), (−2, −1, 1), (1, −2, 1)⟩. Para calcular la dimensión, triangula- mos. A = np.array([[1, 0, -2, 1], [0, 2, -1, -2], [2, 1, 1, 1]]) At = np.transpose(A) print(At) At_echelon = row_echelon(At) print("Matriz A transpuesta escalonada:\n", At_echelon) %% [[ 1 0 2] %% [ 0 2 1] %% [-2 -1 1] %% [ 1 -2 1]] %% Matriz A transpuesta escalonada: %% [[1. 0. 2. ] %% [0. 1. 0.5] %% [0. 0. 1. ] %% [0. 0. 0. ]] dim(im(A)) = 3, porque quedan sistema Ax = 0, triangulamos A: Obtenemos que 3. Para resolver el 3 las no nulas. A = np.array([[1, 0, -2, 1], [0, 2, -1, -2], [2, 1, 1, 1]]) A_echelon = row_echelon(A) print("Matriz A escalonada:\n", A_echelon) Matriz A escalonada: [[ 1. 0. -2. 1. ] [ 0. 1. -0.5 -1. ] [ 0. 0. 1. 0. ]] Obtenemos x1 , x2 y x3 x3 = 0, x2 − x4 = 0 x4 : y x1 + x4 = 0. en función de x1 = −x4 x2 = x4 x3 = 0 Podemos despejar todas las variables 7. ESPACIOS AFINES Luego, las soluciones del sistema son x4 ∈ R}. 45 {(−x4 , x4 , 0, x4 ) : x4 ∈ R} = {x4 (−1, 1, 0, 1) : Obtenemos ker(A) = ⟨(−1, 1, 0, 1)⟩ dim(ker(A)) = 1. En Python podemos calcular una base del núcleo de una matriz con el comando null_space del paquete scipy.linalg. Para calcular una solución particular usamos y eliminación gaussiana. 4. Tenemos dim(ker(A)) + dim(im(A)) = 1 + 3 = 4, se cumple el teorema. 7. Espacios anes Dada A ∈ Km×n , ya vimos que las soluciones de un sistema homogéneo de ecuaciones Ax = 0 forman un subespacio de Kn . Veamos qué pasa para un sistema no-homogéneo Ax = b, con b ∈ Kn . Ejemplo 1.25. Resolvemos el siguiente sistema de ecuaciones: 5x1 + 3x2 = 11 15x1 + 9x2 = 33 20x + 12x = 44 1 2 Construimos la matriz ampliada 5 3 11 15 9 33 20 12 44 y escalonamos usando Python. A = np.array([[5,3,11],[15,9,33],[20,12,44]]) print(row_echelon(A)) %% [[1. %% [0. %% [0. 0.6 2.2] 0. 0. ] 0. 0. ]] Vemos que se eliminaron las últimas dos ecuaciones, y nos queda solo una ecuación: x1 + 0.6x2 = 2.2 de donde podemos despejar x1 = 2.2 − 0.6x2 . 46 1. NOCIONES BÁSICAS DE ÁLGEBRA LINEAL Podemos entonces escribir el conjunto de soluciones en función de x2 : S = {(2.2 − 0.6x2 , x2 ) : x2 ∈ R} = {(2.2, 0) + (−0.6x2 , x2 ) : x2 ∈ R} = {(2.2, 0) + (−0.6, 1)x2 : x2 ∈ R} Esto no es un subespacio de R2 (por ejemplo, (0, 0) ̸∈ S ), pero es un subespacio corrido: el conjunto {(−0.6, 1)x2 : x2 ∈ R} = ⟨(−0.6, 1)⟩, es un subespacio de punto de ⟨(−0.6, 1)⟩, R2 y los puntos de S se obtienen sumandole el vector (2.2, 0) a cualquier es decir, S = (2.2, 0) + ⟨(−0.6, 1)⟩ Estos conjuntos se llaman espacios lineales anes, se obtienen trasladando un subespacio vectorial en la dirección de un vector del espacio. El espacio vectorial podría estar generado por varios vectores, es decir, puede tener cualquier dimensión. Observamos: (2.2, 0) es una solución del sistema no-homogéneo El subespacio ⟨(−0.6, 1)⟩ Ax = b. es el conjunto de soluciones del sistema homogéneo Ax = 0. y esto vale en general: Proposición 1.16. Dado el sistema Ax = b, si x̃ es una solución particular del sistema, el conjunto de todas las soluciones del sistema es S = {x̃ + v : v una solución cualquiera del sistema homogéneo Ax = 0}. Idea de la demostración: si x, y son soluciones del sistema no homogéneo, entonces Ax − Ay = b − b = 0, Por lo tanto z =x−y es solución del sistema homogéneo y x = y + z. Ejemplo 1.26. Resolver el sistema de ecuaciones 3x + 2y + 6z = 12 x − 3y + z = 10. En Python podemos calcular una base del núcleo de una matriz con el comando null_space scipy.linalg. Para calcular una solución particular usamos eliminación gaussia- del paquete na. import scipy.linalg A = np.array([[3, 2, 6],[1, -2, 1]]) print("Núcleo de A: \n", scipy.linalg.null_space(A)) 7. ESPACIOS AFINES 47 Núcleo de A: [[-0.85359507] [-0.18291323] [ 0.48776861]] b = np.array([12, 10]) Ab = np.c_[A,b] print("Matriz ampliada escalonada: \n", row_echelon(Ab)) %% Matriz ampliada escalonada: %% [[ 1. 0.66666667 2. %% [ 0. 1. 0.375 Obtenemos las ecuaciones y tomando z=1 obtenemos la 4. -2.25 ] ]] x + 2/3y + 2z = 4 y + 0.375z = −2.25, solución (x, y, z) = (3.75, −2.625, 1). Concluimos que el conjunto de soluciones es S = (3.75, −2.625, 1) + ⟨(−0.8535951, −0.1829132, 0.4877686)⟩. Capítulo 2 Números de Máquina y Número de Condición 1. Cuestiones previas En el álgebra lineal computacional (o en el análisis numérico en general) interesan no solo los conabilidad y su costo computacional. La primera cuestión aparece porque algoritmos sino su en la práctica no es posible en general trabajar con precisión innita (lo que hace imprescindible el estudio de los errores numéricos y su propagación). La segunda cuestión tiene que ver con el número de operaciones involucradas en el algoritmo ( 1 complejidad del algoritmo ) cuestión que impacta en el tiempo de ejecución . Comenzamos entonces deniendo de manera informal los números de máquina. Los números de máquina, son los que la máquina puede representar de forma exacta. Notemos que -por su propia denición- podemos sospechar que los números de máquina son nitos y en consecuencia la mayoría de los números reales no podrán almacenarse sin cometer errores. Vamos a tratar de precisar este punto en lo que sigue. Vamos a asumir que trabajaremos con número reales o complejos, sin embargo como para almacenar un número complejo basta almacenar su parte real e imaginaria podemos enfocarnos en el caso real. Consideremos un número cualquiera, por ejemplo en base 10 lo que signica que estamos pensando a x x = 125.4. Estamos habituados a trabajar en la forma x = 1 102 + 2 101 + 5 100 + 4 10−1 . Para número real (positivo) diferente, la escritura b̃k b̃k−1 ...b̃0 .b̃−1 b̃−2 ... con 0 ≤ b̃i ≤ 9 y b̃k ̸= 0, la asociamos con x= k X b̃i 10i . −∞ La escritura hecha de este modo es única, salvo desarrollos periódicos del número 9 como ocurre en el caso 0.999... = 1, en el que el mismo número, en este caso contexto, el número 10 x = 1, puede escribirse de dos modos distintos. En este se denomina la base y los 1 b̃i los dígitos del desarrollo. Otras consideraciones son posibles: por ejemplo si puede o no paralelizarse. 49 50 2. NÚMEROS DE MÁQUINA Y NÚMERO DE CONDICIÓN 2. Bases generales* En general todo número 2 x ∈ R x ̸= 0, puede representarse en una base b ∈ N, b ≥ 2, de la forma (x)b = sg(x)b̃k b̃k−1 ...b̃0 .b̃−1 b̃−2 ... (2.1) donde los dígitos verican 0 ≤ b̃i ≤ b−1, sg(x) el signo de x y donde por convención numeramos b̃0 y b̃−1 . los índices para que el punto -o coma- se ubique entre Asumamos que de la escritura de x x es positivo para no lidiar con el signo. La representación (2.1) se obtiene como x = b̃k bk + b̃k−1 bk−1 + ... + b̃0 b0 + b̃−1 b−1 + b̃−2 b−2 + ... que es única si descartamos los desarrollos innitos de la forma l∈Z b̃j = b − 1 para todo j≤l con jo. Para aclarar este punto recordemos la expresión cerrada de la geométrica m X βj = j=0 válida para β ̸= 1. β m+1 − 1 , β−1 Notemos que en caso de tener un l X x= x con un desarrollo de la forma (b − 1)bi , i=−∞ podemos reescribirlo como l x = (b − 1)b 0 X ! i b = (b − 1)bl i=−∞ b = bl+1 , b−1 lo que indica dos representaciones alternativas para el mismo x. Como ejemplo si l=0 tenemos 10 = (x)b = (b − 1).(b − 1)(b − 1)(b − 1) · · · su Continuemos asumiendo que x > 0. El uso del punto jo en (2.1) determina la división entre parte entera 3 [x] ∈ Z y la diferencia 0 ≤ x − [x] < 1. En efecto, por un lado, para todo m ∈ N m X b̃i bi ∈ Z 0 y 0≤ −1 X b̃i bi < −∞ −1 X b̃i (b − 1) = (b − 1) −∞ 1 = 1. b−1 Por otro lado, esta representación tradicional no da una idea rápida del orden de magnitud de un número. Por esta razón se suele trabajar con una versión justo a la izquierda de b̃k (i.e. el primer dígito no nulo de normalizada x). Así, un eligiendo ubicar el punto 0 ̸= x ∈ R, (renombramos los dígitos eliminando el tilde y los índices) 2 (x)b 3 se lee x en la base La parte entera de x, b. denotada [x] se dene como el mayor entero menor o igual a x. puede escribirse 3. NÚMEROS DE MÁQUINA (x)b = sg(x) 0.b0 b1 b2 ... be (2.2) donde, como antes, que 51 b0 ̸= 0, 0 ≤ bi ≤ b−1 y e ∈ Z. Una vez más, esta representación es única si asumimos bi = b − 1 para i ≤ l, bi+1 < b − 1 convenimos en tomar y que en el caso (x)b = sg(x) 0.b0 b1 ...(bi−1 + 1) be+1 . 0.b0 b1 b2 ... be < x ≤ be+1 . Suele llamarse notación cientíca normalizada a la escritura (2.2). La expresión llama mantisa y e exponente. Con esta normalización se ve a simple vista que se Observemos que el exponente es un entero que admite asimismo una representación en la misma base b donde una vez mas cl ̸= 0 y e = sg(e) cl cl−1 ...c0 P e = sg(e) l0 ci bi . 3. Números de Máquina En una máquina, la memoria dedicada para el almacenamiento de los números es limitada dedicando cierta cantidad de dígitos, digamos E ≥ 1, m ≥ 1, para la mantisa y cierta cantidad, digamos para el exponente. Los números que pueden representarse de forma exacta con esas limitaciones se denominan números de máquina. La cantidad de números de máquina es obviamente nita. De hecho podemos calcular fácil- b0 ̸= 0 tenemos b − 1 posibilidades para la elección del b0 , y b posibilidades para cada uno de los restantes bi , 1 ≤ i ≤ m−1. La cantidad diferente de mantisas m−1 (para el número cero se utiliza un símbolo especial). Análogamente hay es entonces (b − 1)b bE distintos exponentes. Considerando los respectivos signos de la mantisa y el exponente, habrá 4(b − 1)bm+E−1 diferentes números de máquina. mente su cantidad: considerando que El mayor exponente para una máquina dada es el número Emax = E−1 X (b − 1)bj = j=0 bE − 1 (b − 1) = bE − 1 b−1 y la mayor mantisa Mmax = m X −j (b − 1)b j=1 m−1 (b − 1) X −j (b − 1) (b−m − 1)b b = = 1 − b−m , = b b 1−b j=0 lo que da E Emax Mmax = 1 − b−m bb −1 , como mayor número de máquina (análogamente se obtiene el menor como Cualquier número mayor a Emax Mmax producirá un desborde −Emax −1 . Todo número de máquina es obviamente b debajo underow. Emax ). −Mmax overow. El menor x, 0 < x < número positivo b−Emax −1 genera un desborde por 52 2. NÚMEROS DE MÁQUINA Y NÚMERO DE CONDICIÓN Figura 1. Algunos números positivos de máquina con b = 2 y m = 4. Notar que 2, y que los números son equiespaciados únicamente entre potencias sucesivas de la cantidad de números de máquina en esos rangos se mantiene constante. Escalas de los números de máquina: En las máquinas que utilizamos habitualmente b = 2 y m = 52 y E = 10. Esto es, se trabaja en base 2 y se utilizan 64 bits para almacenar doble precisión a). un número (esta formato se denomina binario (admite solo dos caracteres: El término bit signica dígito 0 y 1). De los 64 bits disponibles, dos se reservan para los signos de la mantisa y el exponente. En este caso, considerando que 210 = 1024 ∼ 103 : 10 −1 Emax = (1 − 2−52 )22 Mmax ∼ 21000 ∼ (210 )100 ∼ 10300 . 10300 sin overow. −Emax −1 ) con para b Esta máquina puede trabajar con números del orden de En la escala pequeña puede trabajar (haciendo una cuenta similar números del orden 10−300 . Estas cantidades son razonables para describir las mayoría de las magnitu- des que aparecen en las disciplinas cientícas. Notemos que la mayor y menor escala se deciden básicamente en términos del tamaño del exponente y no del tamaño de la mantisa. Aumentar los bits de la mantisa no mejora las escalas (i.e. no aumenta el rango de valores extremales de nuestra máquina). aEn precisión simple Si un número x∈R para representarlo ( real x se usan 32 bits, con E=7 y m = 23. no es de máquina, se puede elegir el número de máquina mas cercano redondeo ) o, por ejemplo, el inmediato inferior (truncado ). Dado un número denominamos f l(x) al número de máquina elegido para representarlo. Se utiliza indicar que estamos trabajando en punto otante. fl para El hecho de mover el punto de acuerdo a (2.2) acarrea una consecuencia muy importante a la hora de truncar o redondear el número y es la de mantener uniforme el error relativo a la hora de almacenar x a lo largo de todas la escalas. Esta idea es central y no podría lograrse eligiendo números de máquina equiespaciados. Errores Relativos y Absolutos En una magnitud escalar xv , el error absoluto se dene como donde xa es el valor aproximado de eabs = |xa − xv |, xv . En general (y en el error relativo erel = para xv ̸= 0) estaremos interesados |xa − xv | , |xv | es decir en el tamaño del error absoluto respecto del tamaño del valor exacto magnitudes vectoriales o matriciales reemplazamos el módulo por una norma. xv . Para 3. NÚMEROS DE MÁQUINA Distribución de los números de máquina: 53 Los números de máquina no se distri- buyen de manera uniforme. Describamos dos números de máquina consecutivos asumiendo, para simplicar, que 0 < x1 x1 < x2 y que se escribe: (x1 )b = 0.b0 b1 b2 ...bm−1 be . Un momento de reexión nos dice que el próximo número de máquina (salvo que haya overow) será (x2 )b = 0.b0 b1 b2 ...(bm−1 + 1) be salvo que bm−1 = b − 1 en cuyo caso (x2 )b = 0.b0 b1 b2 ...(bm−2 + 1)0 be salvo que también bm−2 = b − 1 en cuyo caso habrá que repetir bi = b − 1 para todo 0 ≤ i ≤ m − 1 el argumento y eventual- mente -en caso de que (x2 )b = 0.1be+1 . En cualquier caso observamos que x2 − x1 = b−m be no es constante al variar el exponente e, pero sí lo es para cada exponente jo dado. La consecuencia mas notable de la distribución de los números de máquina es que si y existen x1 < x 2 números de máquina tales que x1 ≤ x ≤ x2 (i.e. x x ∈ R, esta dentro de las escalas manejadas por la máquina) entonces 1 |x − f lredond (x)| ≤ be−m 2 |x − f ltrunc (x)| ≤ be−m para los casos de redondeo y truncado respectivamente. Error relativo y precisión de la máquina: Nos concentraremos en el caso de redondeo, por lo que asumiremos de aquí en mas que al almacenar un número x ̸= 0. f l = f lredond . Queremos acotar el error relativo Observando que be−1 = |0.1 be | ≤ |x|, resulta | x − f l(x) 1 | ≤ b1−m . x 2 Notar que el error relativo depende m = 52 del tamaño de la mantisa. En el caso de base b = 2 y mencionado antes resulta: | x − f l(x) | ≤ 2−52 ∼ 10−16 . x este número, propio de cada máquina, se denomina: precisión de la máquina o épsilon de la máquina y se denota con ε. En el caso del ejemplo, en terminos simples, dice que nuestra máquina almacena 16 dígitos exactos (en base 10). Naturalemente sería ideal conservar esta precisión a lo largo de las operaciones que debamos realizar a partir de es posible en general. f l(x). Eso, como veremos a continuación, no 54 2. NÚMEROS DE MÁQUINA Y NÚMERO DE CONDICIÓN Como acabamos de ver, en general ocurre que x ̸= f l(x)4. . Sin embargo podemos garantizar que la diferencia verica x − f l(x) = µx x, con |x − f l(x)| = |µx | ≤ ε. |x| Veamos entonces que ocurre con estos errores al efectuar alguna operación sencilla como por ejemplo sumar. Vamos a distinguir la operación realizada por la máquina con el símbolo Pretendemos calcular x + y, ⊕. de modo simplicado la máquina realiza las siguientes operacio- nes: primero x → f l(x) luego suma f l(x) + f l(y) y → f l(y) y nalmente almacena el resultado f l(x) + f l(y) → f l(f l(x) + f l(y)). Cómo se comportará el error resultante?. Por una lado tenemos: f l(x) = x(1 + µx ), f l(y) = y(1 + µy y), por lo que f l(f l(x) + f l(y)) = (f l(x) + f l(y))(1 + µz ) y en denitiva x ⊕ y = f l(f l(x) + f l(y)) = (x(1 + µx ) + y(1 + µy y))(1 + µz ). Vemos entonces que si 0 < x, y es posible acotar |x ⊕ y − (x + y)| ≤ (x + y)2µ + O(ε2 ) con |µ| ≤ ε. Es decir que hemos de algún modo preservado el tamaño del error relativo5 Como es bien sabido, eso no es posible si restamos números similares6. Un ejemplo elemental es el siguiente: b = 10, m = 4, la precisión es ε = 21 10−3 = 0.0005. Si x = 125, 49 e y = 125, 31 tenemos respectivamente x − y = 0.18 x ⊖ y = 0.2 por lo que el error relativo es x−y−x⊖y 0.02 | |= ∼ 0.11, x−y 0.18 tomemos es decir que a pesar de que ε ∼ 10−3 el error en la cuenta anterior es del 11 %. El ejemplo anterior muestra que en una simple operación podemos perder dígitos signicativos (de hecho nuestra máquina no ha acertado ningún dígito de la solución). Como regla general deben evitarse restas de números similares 7 para evitar la denominada Es fácil construir ejemplos de números de máquina sino que, por ejemplo, x ⊕ y = y. cancelación catastróca. 0 < x < y en los cuales no solo x+y ̸= x⊕y En particular es fácil ver que (2.3) 1 ⊕ ε > 1, y 1 ⊕ ε/2 = 1 4 1 Notemos que incluso números muy sencillos como 10 no son de máquina y la introducción de un error de redondeo es inevitable. Evalúe en Python la expresión 0.1 + 0.1 + 0.1! = 0.3, qué obtiene?. 5 Cuando los errores se acumulan de forma aditiva, como en este caso, estamos en un buen escenario porque harían falta una enorme cantidad de operaciones para deteriorar el error inicial. 6 Verique que la cuenta anterior no puede repetirse si los signos de 7 Ver la guía de ejercicios para mas ejemplos x e y dieren. 4. CONDICIÓN Y ESTABILIDAD lo que da una posible denición alternativa del ϵ 55 como el menor número de máquina con la propiedad (2.3). Otras cuestión que aparece entonces en la aritmética de la máquina es la pérdida de la propiedad asociativa, ya que usando los comentarios previos vemos que por ejemplo (1 ⊕ ε/2) ⊕ ε/2 = 1 ̸= 1 ⊕ (ε/2 + ε/2). Hay diversas fuentes de errores computacionales que pueden estropear completamente el resultado de los algoritmos. En este sentido hay dos conceptos que nombraremos tangencialmente ya que no son objeto central de este curso: la condición y la estabilidad. 4. Condición y Estabilidad De manera muy general, un problema bien condicionado es aquél que reacciona benignamen- te con los errores en los datos. Es decir, que sus soluciones no varían demasiado al no variar demasiado los datos. Por el contrario, si un problema está muy mal condicionado, no lograremos resolverlo con mucha precisión aunque limitemos los errores en los datos (salvo que trabajemos con precisión innita). La noción de condición es algo intrínseco del problema y está mas allá de nuestro algoritmo de resolución. Por otra parte, cuando los problemas están bien condicionados tenemos esperanza de resolverlos con precisión siempre que nuestro algoritmo no incremente desproporcionadamente los errores inherentes a los datos. En este caso hablaramos de estables algoritmos inestables entonces es algo intrínseco del algoritmo. y por el contrario, de algoritmos si no cumplen con este criterio. La estabilidad Es posible dar una expresión precisa para la noción de condición, a través del llamado número de condición. Consideremos el problema de evaluar una función en el valor x0 ̸= 0. Si por alguna razón (error de medición o redondeo) modicamos el dato a evaluar una cierta magnitud pequeña h x0 en un entonces el error relativo que cometeremos es (asumiendo que la función es de continuamente diferenciable) para cierto η intermedio hf ′ (η) f (x0 + h) − f (x0 ) = , f (x0 ) f (x0 ) entre x0 y x0 + h. Esto indica que hf ′ (η) x0 f ′ (x0 ) h ∼ f (x0 ) f (x0 ) x0 el error relativo en los datos llamado el vemos que para h∼0 h x0 se magnica en nuestro problema en un factor |x0 ||f ′ (x0 )| , |f (x0 )| número de condición de evaluar f en x0 . Siguiendo un razonamiento similar n m puede denirse el número de condición de este para la versión f : R → R a problema de la forma aUn ejemplo concreto y elemental de mal condicionamiento es, como hemos visto, la resta de números f : R2 → R, f (x, y) = x − y , se tiene Df (x0 , y0 ) = (1, −1), ∥(1, −1)∥∞ = 2, ∥∥Df (x0 )∥ 1 ∥(x0 , y0 )∥∞ = max{|x0 |, |y0 |}, luego ∥x0∥f ∼ ∥x0 −y . (x0 )∥ 0∥ similares: si escribimos 56 2. NÚMEROS DE MÁQUINA Y NÚMERO DE CONDICIÓN Como ejemplo de lo anterior si queremos evaluar el número de condición tg(x) en un x0 < π/2, x0 ∼ π/2 vemos que x0 , sen(x0 )cos(x0 ) cumple que lı́m x0 →π/2− En particular si elegimos x0 tal que signicativo en nuestro cálculo de x0 = +∞. sen(x0 )cos(x0 ) x0 sen(x0 )cos(x0 ) ∼ 1016 no esperamos tener ningún dígito tg(x0 ). En los años 50, Wilkinson experimentaba con las primeras computadoras y rápidamente 8 comenzó a observar fenomenos de inestabilidades y mal condicionamiento . Una cosa que notó, al probar un algoritmo de aproximación de raices, es que si al polinomio p(x) = 20 Y (x − i) i=1 210 ) en 2−23 las raíces mayores a 7 sufren considerables modicaciones. En particular las raices 10, 11, . . . 19 se transforman en 5 pares complejos conjugados. Las 18 y 19 en complejos de la forma 19.5 · · · ± 19.5 . . . i, es decir −23 genera variaciones de orden 1. 9 Mostrando que el problema que una perturbación de orden 2 19 (cuyo valor es se le perturba el coeciente que acompaña a x de calcular raices está muy mal condicionado. Ejemplos de algoritmos inestables abundan. La inestabilidad es muy frecuente y se hace notar muy rápidamente porque los resultados obtenidos dieren notoriamente de lo esperado. Los casos mas extremos aparecen en procesos que deben iterarse en los cuales el error se acumula exponencialmente en vez de aditivamente. Sin embargo hay casos muy simples que pueden ejemplicarse. Mas arriba vimos que restar números similares es un problema mal condicionado y por eso debe evitarse o tratarse con cautela. Supongamos que queremos evaluar e−12 . Usando lo explicado mas arriba, podemos ver que se trata de un problema bien condicionado. Si utilizamos un algoritmo basado en la serie convergente e−x = 1 − x + para una evaluación directa en x = −12 1 2 1 x − x3 · · · 2! 3! obtenemos, sumando los primeros 50 términos de la serie: e−12 ∼ 6.144189436702122 · 10−6 . 12 sumando los primeros 50 terminos Si por otro lado modicamos el algoritmo calculado primero e de la serie ex = 1 + x + y luego invirtiendo 1/e12 1 2 1 x + x3 · · · 2! 3! obtenemos e−12 ∼ 6.144212353328213 · 10−6 . 8 En sus propias palabras: The cosy relationship that mathematics enjoyed with polynomials suered a severe setback in the early ties where electronic computers came into general use. Speaking for myself I regard it as 7 the most traumatic experience in my carrer as a numerical analyst [ ] 9 A pesar de esto, se puede probar que las raíces dependen de forma continua respecto de los coecientes. 4. CONDICIÓN Y ESTABILIDAD Figura 2. Grácos de 57 p(x) La pregunta es a priori, cuál de las dos respuestas es mas conable. Sin duda el segundo método es mas estable. La razón es que en el cómputo de la serie alternada, muchos terminos grandes deben cancelarse mágicamente para producir el resultado pequeño e−12 . Los errores relativos pequeños son proporcionalmente grandes en términos del resultado nal. De hecho e−12 ∼ 6.1442123533282097586823081788055323112239893148882529755... · 10−6 es decir que solo obtuvimos 4 dígitos correctos con nuestro primero algoritmo pero 14 con el segundo. El segundo método es mucho mas estable que el primero. Puede probar los calculos previos con el algoritmo: import numpy as np import math v=np.arange(0,50) resulI=0.0 resulE=0.0 for i in v: resulI=resulI+1/math.factorial(i)*(-12.0)**i resulE=resulE+1/math.factorial(i)*(12.0)**i resulE=1/resulE print(resulInes) print(resulEs) Los problemas que emergen debido a la precisión limitada de las máquinas dan lugar a muchos comportamientos inesperados. El ejemplo que damos a continuación, debido a Cleve Moler, es particularmente sencillo y sigue las consideraciones del ejemplo previo. Queremos evaluar p(x) = (x − 1)7 para posteriormente gracarlo. En 7 cerrada (x − 1) y en el segundo método la expresión el primer algoritmo usamos la expresión equivalente p(x) = x7 − 7x6 + 21x5 − 35x4 + 35x3 − 21x2 + 7x − 1. En la Figura 2 a la izquierda vemos ambos grácos perfectamente superpuestos (azul para el primer método tapado por el rojo del segundo método). Sin embargo en la misma gura a la derecha se muestra un zoom cerca de la raíz del polinomio. 58 2. NÚMEROS DE MÁQUINA Y NÚMERO DE CONDICIÓN import numpy as np import matplotlib.pyplot as plt x=np.linspace(0,2,200) plt.plot(x,x**7-7*x**6+21*x**5-35*x**4+35*x**3-21*x**2+7*x-1,’b’, x,( x-1)**7,’r’) plt.show() # Sin embargo a la derecha vemos el resultado de samplear en una #escala mas fina alrededor de la raíz x=np.linspace(0.988,1.012,10000) plt.plot(x,x**7-7*x**6+21*x**5-35*x**4+35*x**3-21*x**2+7*x-1,’b’, x,( x-1)**7,’r’) plt.show() Las nociones de condición y estabilidad que hemos comentado de modo supercial son temas transversales a toda el área del análisis numérico. Como nos restringiremos a cuestiones de álgebra lineal solo hemos pretendido dar una idea somera de sus implicaciones generales. En el capítulo siguiente retomaremos la cuestión de la condición en el ámbito matricial. Capítulo 3 Normas y Producto Interno 1. Normas en La distancia del punto (x, y) ∈ R2 Kn al origen puede calcularse por el teorema de Pitágoras z= p x2 + y 2 . Generalizando esa fórmula a espacios de cualquier dimensión, denimos una norma vectorial: ∥v∥2 = q v12 + · · · + vn2 , Esta norma suele llamarse norma-2 o norma euclídea. Esta norma, a su vez, puede escribirse equivalentemente como ∥v∥2 = p |v1 |2 + · · · + |vn |2 , lo cual nos da una expresión aplicable a los complejos. Definición 3.1. Una norma de un K -espacio vectorial es una función ∥ · ∥ : V → R≥0 que cumple las siguientes propiedades: 1. 2. 3. ∥av∥ = |a|∥v∥, para a ∈ K y v ∈ V . Si ∥v∥ = 0, entonces v = 0. ∥u + v∥ ≤ ∥u∥ + ∥v∥, para todo u, v ∈ V (desigualdad triangular) Es fácil ver que la norma-2 cumple las primeras dos propiedades. La tercera propiedad puede probarse usando la siguiente desigualdad clásica. Proposición 3.1 (Desigualdad de Cauchy-Schwarz). Dados n X u, v ∈ Kn , ui vi ≤ ∥u∥2 ∥v∥2 . i=1 Demostración. Asumamos primero que grado 2 en la variable K = R. Consideremos el siguiente polinomio de x 2 2 p(x) = (u1 x + v1 ) + · · · + (un x + vn ) = n X ! u2i 2 x +2 i=1 Como p n X i=1 ui vi x+ n X vi2 . i=1 p(x) ≥ 0 para todo x ∈ R tiene o bien un raiz real doble p(x) = ax2 + bx + c vemos que debe ser entonces b2 − 4ac ≤ 0. es una suma de cuadrados, o raíces complejas. Escribiendo Es decir, !2 4 ! X i ui vi ! −4 X i 59 u2i ! X i vi2 ≤ 0, 60 3. NORMAS Y PRODUCTO INTERNO y eliminando el factor 4 y despejando, obtenemos la desigualdad buscada. Si K=C 1 notamos, por la desigualdad triangular en los complejos X ui vi ≤ i X X |ui ||vi | = i |ui ||vi |, i y la desigualdad sale ahora usando el caso real con los vectores (|u1 |, · · · , |un |),(|v1 |, · · · , |vn |). □ Observación 3.1. Notar que la desigualdad de Cauchy-Schwarz vale también tomando a la izquierda P i ui vi , puesto que P i ui vi = P i ui vi y el módulo de un complejo es igual al de su conjugado. Corolario 3.1. Para todo u, v ∈ Kn Demostración. La hacemos en ∥u + v∥22 = ∥u + v∥2 ≤ ∥u∥2 + ∥v∥2 . vale, C n X y en R sale como caso particular. 2 |ui + vi | = i=1 = n X ui ui + i=1 n X (ui + vi )(ui + vi ) i=1 n n n X X X (ui vi + vi ui ) + vi vi = ∥u∥22 + (ui vi + vi ui ) + ∥v∥22 , i=1 i=1 i=1 los términos entre paréntesis son reales (un número complejo -eventualmente complejo- mas su conjugado), luego n n n n X X X X (ui vi + vi ui ) ≤ (ui vi + vi ui ) ≤ ui vi + vi ui ≤ 2∥u∥2 ∥v∥2 , i=1 i=1 i=1 i=1 donde hemos usado Cauchy-Schwarz en la última desigualdad. Luego, se tiene ∥u + v∥22 ≤ ∥u∥2 + ∥v∥2 + 2∥u∥2 ∥v∥2 = (∥u∥2 + ∥v∥2 )2 , □ lo que termina la demostración tomando raíz cuadrada Como generalización de la norma−2, están las normas−p, denidas también en Kn : Norma−1: ∥v∥1 = |v1 | + · · · + |vn | ∥v∥∞ = máx{|v1 |, . . . , |vn |} p p 1/p Norma−p: ∥v∥p = (|v1 | + · · · + |vn | ) Norma-innito: En el siguiente gráco podemos ver la diferencia entre las 3 normas más usuales en R2 . En cada gráco están representados todos los puntos con norma igual a 1 bajo la norma respectiva. 1 Si escribimos z1 = a1 + ib1 , z2 = a2 + ib2 ∈ C, |z1 + z2 | ≤ |z1 | + |z2 | sí q 2 q 2 2 2 2 2 2 (a1 + a2 ) + (b1 + b2 ) ≤ a1 + b1 + a2 + b2 , resulta desarrollar el cuadrado y ver que eso ocurre sí y solo sí 0 ≤ (a1 b2 − a2 b1 )2 y solo sí que obviamente siempre es válido. 1. NORMAS EN Kn 61 Figura 1. Círculos de radio 1 en diferentes normas. Es decir v ∈ R2 tales que ∥v∥ = 1. Figura 2. Curvas de nivel de diferentes normas−p. 2 En la siguiente gura observamos distintas curvas de nivel para distintas normas. Ejercicio 3.1. Examinando los grácos de las curvas de nivel de las normas−p se puede intuir que lı́mp→+∞ ∥v∥p = ∥v∥∞ . De una demostración de este hecho. Para nosotros va a ser relevante medir que dados u, v ∈ Rn ∥u − v∥2 errores en espacios vectoriales, para ello recordemos da la distancia entre ellos. En ocasiones, sin embargo, vamos a notar que es mas sencillo trabajar con una norma diferente a la norma-2, por lo que resulta natural ver que relación hay entre las diferentes normas-p. Puede probarse muy fácilmente lo siguiente. Ejercicio 3.2. Vericar que para todo 1. 2. 3. 2 x ∈ Kn √ ∥x∥2 ≤ ∥x∥1 ≤ √n∥x∥2 ∥x∥∞ ≤ ∥x∥2 ≤ n∥x∥∞ ∥x∥∞ ≤ ∥x∥1 ≤ n∥x∥∞ Las curvas en las cuales la norma respectiva permanece constante. 62 3. NORMAS Y PRODUCTO INTERNO Ese resultado es un caso particular de uno mucho mas general. Primero denamos de normas. Definición 3.2. Sean ∥·∥ y ∥ · ∥∗ dos normas en un son equivalentes si existen dos constantes 0 < c, C K-espacio equivalencia V . Decimos x∈V vectorial tales que para todo que c∥x∥∗ ≤ ∥x∥ ≤ C∥x∥∗ Vale lo siguiente, Proposición 3.2. En un 3 K-espacio vectorial de dimensión nita todas la normas son equiva- lentes . Este resultado nos es útil en muchos contextos. Veamos primero la siguiente denición. Definición 3.3. Decimos que una sucesión de vectores ∥·∥ a un vector v {vn }n∈N converge bajo una norma si ∥vn − v∥ → 0 cuando n → ∞. Como consecuencia de la Proposición 3.2, la convergencia en una norma cualquiera implica la convergencia en todas las normas. 2. Producto Interno Definición 3.4. Dados dos vectores b por la fórmula u, v ∈ Kn denimos a el producto interno (canónico) ⟨u, v⟩ = u∗ v ∈ K, es decir ⟨u, v⟩ = u1 v1 + u2 v2 + · · · + un vn = n X ui vi . i=1 aRecordemos que asociamos los vectores con las matrices columna. bEn muchos casos se suele conjugar los coecientes del v en la sumatoria en vez de los de u en la denición de ⟨u, v⟩. Para nuestros intereses no cambia en absoluto la denición utilizada que por lo demas coinciden R. sobre Tenemos las siguientes propiedades inmediatas. 3 Las constantes que relacionan las normas dependen de la dimensión n, típicamente se deterioran si n→∞ 2. PRODUCTO INTERNO Observación 3.2. Notar que para 1. 2. 3. 4. 5. 6. aPuesto x, y, z ∈ Kn , w ∈ Km a, b ∈ K, A ∈ Kn×m , 63 resulta ⟨x, y⟩ = ⟨y, x⟩, ⟨x, ay + bz⟩ = a⟨x, y⟩ + b⟨x, z⟩, y ⟨ay + bz, x⟩ = a⟨y, x⟩ + b⟨z, x⟩. ⟨Aw, x⟩ = ⟨w, A∗ x⟩a ⟨ax, ay⟩ = aa⟨x, y⟩ = |a|2 ⟨x, y⟩. Utilizando el producto interno, la norma-2 de un vector se puede denir p fórmula ∥v∥ = ⟨v, v⟩. La desigualdad de Cauchy-Schwarz se escribe |⟨v, w⟩| ≤ ∥v∥2 ∥w∥2 , que por la ⟨Aw, x⟩ = (Aw)∗ x = w∗ A∗ x = ⟨w, A∗ x⟩. ⟨x + y, x + y⟩ = ⟨x, x + y⟩ + ⟨y, x + y⟩ = ⟨x, x⟩ + ⟨x, y⟩ + ⟨y, x⟩ + ⟨y, y⟩ = ∥x∥2 + 2⟨x, y⟩ + ∥y∥2 Ejemplo 3.1. x x, y ∈ R2 , x ̸= 0 ̸= y , x = (a1 , a2 ), y = (b1 , b2 ). Podemos escribir x = ∥x∥ ∥x∥ x y como ∥x∥ está en el círculo de radio 1 vemos que existe un único α, 0 ≤ α < 2π tal que x ∥x∥ = (cos(α), sen(α)). Es decir, x = ∥x∥2 (cos(α), sen(α)). Análogamente, podemos escribir y = ∥y∥2 (cos(β), sin(β)) y en particular4 Sean ⟨x, y⟩ = ∥x∥2 ∥y∥2 (cos(α) cos(β) + sen(α) sen(β)) = ∥v∥2 ∥w∥2 cos(α − β), lo que dice que puede escribirse cos(θ) = (3.1) con θ En Rn 5 el ángulo ángulo entre x y y. ocurre lo mismo. Ya que θ entre x e y ⟨x, y⟩ , ∥v∥2 ∥w∥2 −1 ≤ ⟨x,y⟩ ∥x∥∥y∥ ≤ 1, (ver (6) de la Observación 3.2) se dene el a través de (3.1). Las normas nos han permitido incorporar al álgebra (el espacio vectorial) el concepto de distancia, que nos permitirá introducir la noción de convergencia y una forma de medir errores. El producto escalar, por su parte, nos permite trabajar con ángulos. En particular con la idea de perpendicularidad u ortogonalidad que resulta fundamental en el desarrollo de algoritmos estables. 4 Recordar: 5 cos(α + β) = cos(α)cos(β) − sen(α)sen(β), sen(α + β) = sen(α)cos(β) + cos(α)sen(β). cos(µ) = cos(2π − µ) siempre puede elegirse 0 ≤ θ < π . Considerando que 64 3. NORMAS Y PRODUCTO INTERNO De (3.1) vemos que θ = π/2 si y solo si v ∗ w = 0, de ahí la siguiente denición que la extendemos a los complejos. v, w ∈ Kn , Definición 3.5. Dados v∗w = ⟨v, w⟩ = 0. no nulos. Decimos que son ortogonales sí y solo sí En este caso también usaremos la notación v ⊥ w. {vi }1≤i≤k ⊂ Kn se dice ortogonal si ⟨vi , vj ⟩ = 1 ≤ i ≤ k decimos que el conjunto es ortonormal. Definición 3.6. Una colección de vectores δij . Si además ∥vi ∥2 = 1 para todo Los conjuntos ortogonales tienen muchas propiedades que pueden explotarse, tanto teóricamente como en la práctica. Veamos una de ellas de importancia fundamental. Sea n mal de K . Dado w∈ {αi }1≤i≤n ⊂ K a hallar los B = {v}1≤i≤n ⊂ Kn una base ortonorw en la base B . Esto se reduce Kn queremos conocer las coordenadas de tales que w= (3.2) n X αi vi , i=1 n × n. que como sabemos implica resolver un sistema de vemos que para cada 1≤j≤n Sin embargo en este caso particular, el producto escalar vj∗ w = (3.3) n X αi vj∗ vi = αj , i=1 αi por el módico costo de un Q ∈ Kn×n , que tiene por columnas permite despejar producto escalar matricial, sea los vi . 6 Desde el punto de vista Resulta que el problema anterior se puede escribir de modo matricial α1 . . . w = Q , αn y de la expresión de mas arriba vemos que Q∗ w = α1 . . . . αn Esto no expresa mas que el hecho de que invertir Q se reduce a conjugar (trasponer si lo que a su vez es inmediato considerando que sus columnas son ortonomales ∗ [Q Q]ij = vi∗ vj = 7 K = R) y así δij . Estas matrices tienen un nombre particular. Q ∈ Kn×n se dice unitaria K = R). Definición 3.7. Una matriz ∗ si Q Q =I T (Q Q Observación 3.3. 6 Esto es 7 2n − 1 =I Q si (suele llamarse es unitaria (resp. ortogonal) si y solo si operaciones, n n − 1 sumas. n(2n − 1) ∼ O(2n2 ) Q∗ productos y El costo total de resolver el sistema es operaciones. ortogonal cuando K = R) es unitaria (resp. ortogonal). 2. PRODUCTO INTERNO Figura 3. Proyección de w 65 sobre la recta generada por v. ortogonal de un vector w sobre la v ̸= 0 (ver Figura 3). Es decir, que buscamos un vector βv tal w∗ v ∗ , es decir equivale a (βv − w) v = 0, lo que indica que β = ∥v∥2 Estudiemos ahora el problema de calcular la proyección recta generada por otro vector que (βv − w) ⊥ v , esto 2 β= Si ∥v∥ = 1 v∗w ∥v∥22 la expresión coincide con la de los . α calculados en (3.3), lo que nos Pv (w) a la proyección ortogonal pretación alternativa de (3.2). Esto es, llamando subespacio generado por v, da una interde w sobre el vemos que Pv (w) = (3.4) v∗w v, ∥v∥22 y en particular (3.2) toma la forma X w= Pvi (w). 1≤i≤n De los argumentos previos vemos que de un vector w en una base ortonormal, las proyecciones ortogonales sobre los elementos de la base nos dan sus coordenadas en esa base. Eso es justamente a lo que estamos acostumbrados en la base canónica. Otro hecho de gran importancia es la generalización del teorema de Pitágoras en cualquier dimensión si tenemos una base ortonormal. Esto es, de la expresión (3.2), tenemos que el cuadrado de la longitud de w (el cuadrado de la hipotenusa) es, por un lado ∥w∥22 = w∗ w y por el otro n n n n n n n X X X X X X X ∗ ∗ ∗ αi vi )( αi vi ) = αj αi vj vi = αi αi = |αi |2 , ( αi vi ) ( αi vi ) = ( i=1 i=1 i=1 i=1 i,j=1 i=1 i=1 es decir el cuadrado de la suma de las longitudes de las coordenadas (los catetos). Para resaltar este hecho que usaremos en lo sucesivo, lo recuadramos, 66 3. NORMAS Y PRODUCTO INTERNO Observación 3.4. En toda base ortonormal w= B = {v1 , · · · , vn }, n X si αi vi , i=1 entonces ∥w∥2 = n X |αi |2 . i=1 Mas adelante volveremos sobre el tema de las proyecciones. Para nalizar la sección de producto interno denimos Definición 3.8. Una matriz A∈ Si Rn×n , A A ∈ Kn×n se dice A ∈ Cn×n simétrica. se dice Hermitiana es Hermitiana, entonces, para todo si A = A∗ . v ∈ Kn , v ∗ Av ∈ R. En el caso de que En efecto, por un lado, debido a las dimensiones de los elementos que aparecen en el producto, se tiene z = v ∗ Av ∈ K, por otro lado puesto que v ∗ Av = (v ∗ Av)∗ = v ∗ A∗ (v ∗ )∗ = v ∗ Av, resulta de la primera y ultima expresión de la cadena de igualdades que Definición 3.9. Una matriz z = z, es decir z ∈ R. A ∈ Cn×n (A ∈ Rn×n ) se dice denida positiva si es Hermi> 0 para todo v ̸= 0. Si por otro lado v ∗ Av ≥ 0 para ∗ tiana (simétrica) y además v Av todo v, la matriz se dice semi denida positiva. 3. Normas de matrices Dada una matriz A ∈ Kn×m , se la puede pensar pensar como un vector de Knm y en consecuencia se aplicaría a las matrices todo lo que hemos desarrollado para normas vectoriales. 8 Sin embargo, salvo casos excepcionales , esta normas no son de gran utilidad en el contexto de las matrices. Esto es debido a que nos interesa estudiarlas desde la perspectiva de las trasformaciones lineales asociadas. Por esta razón se introducen las normas subordinadas. Dada una matriz A ∈ Kn×m , y un par de normas vectoriales ∥ · ∥n , ∥ · ∥ m en Kn y Km respectivamente, denimos ∥A∥n,m = máx m 0̸=x∈K ∥Ax∥n = máx ∥Ax∥n . ∥x∥m x∈Km ,∥x∥m =1 Un caso usual en este curso es que la matriz sea cuadrada sola norma vectorial 8 ∥·∥ Como la norma de Frobenius que veremos mas adelante. A ∈ Kn×m y en ese caso usamos una 3. NORMAS DE MATRICES ∥A∥ = máx m (3.5) 0̸=x∈K Estas normas matriciales se dicen zando en el espacio Kn 67 ∥Ax∥ = máx ∥Ax∥. ∥x∥ x∈Km ,∥x∥=1 subordinadas a la norma vectorial ∥·∥ que estamos utili- . De su denición vemos que la norma (subordinada) de una matriz mide x en qué proporción puede aumentar como máximo la norma de un vector al multiplicarlo por A. Ejercicio 3.3. Sea A ∈ Kn×n y ∥·∥ una norma en Kn , entonces (3.5) dene una norma. I ∈ Kn×n la identidad, entonces ∥I∥ = 1 para toda norma subordinada n (siempre que pensemos K con la misma norma vectorial como espacio de partida y llegada de n n la transformación I : K → K ). Ejercicio 3.4. Sea También resulta inmediato de la denición que para todo x ∥Ax∥ ≤ ∥A∥∥x∥. (3.6) De aquí se obtiene la siguiente propiedad. Para todo par de matrices norma subordinada 9 A, B ∈ Kn×n , y toda ∥AB∥ ≤ ∥A∥∥B∥. (3.7) En efecto, dos aplicaciones sucesivas de (3.6) da ∥AB∥ = máx ∥ABx∥ ≤ máx ∥A∥∥Bx∥ ≤ máx ∥A∥∥B∥∥x∥ = ∥A∥∥B∥, ∥x∥=1 ∥x∥=1 ∥x∥=1 que prueba (3.7). Aplicando sucesivamente (3.7), vemos que para toda matriz cuadrada y para k ∈ N, todo vale 10 ∥Ak ∥ ≤ ∥A∥k . (3.8) En algunos pocos casos es posible calcular explícitamente la expresión de n Ejemplo 3.2. Consideremos en K la norma ∥ · ∥∞ . ∥A∥∞ = máx { 1≤i≤n Para n X A∈ ∥A∥. Kn×n se tiene11 |aij |}. j=1 9 Como se desprende de la cuenta, también vale para matrices rectangulares, siempre que pueda hacerse el producto 10 AB . k < 0?. Por ejemplo, cuando A es invertible sabemos darle sentido a A−1 como −1 −1 la inversa de A. Por lo tanto I = AA de donde 1 ≤ ∥A∥∥A ∥ (hemos usado aquí el Ejercicio 3.4) y de ahí −1 −1 ∥A∥ ≤ ∥A ∥. Es decir al revés que en (3.8). Piense que ocurre en general. Dena primero Ak con k < 0. 3 −3 −3 Como ayuda pregúntese que será por ejemplo A ?. Vea que puede pensarlo como A := A−1 , es decir A−3 = A−1 A−1 A−1 . Pero otro lado A3 A−1 A−1 A−1 = I , lo que dice que la primera denición coincide con (A3 )−1 . Use estas consideraciones para responder la pregunta. Que ocurre si 11 k∈Z con También vale la demostración en el caso de matrices rectangulares. 68 3. NORMAS Y PRODUCTO INTERNO K = R. Demostración. Lo vemos para ∥A∥∞ = Llamemos k Debemos calcular máx x∈Rn ,∥x∥∞ =1 ∥Ax∥∞ . a la la donde ser realiza el máximo, es decir máx { 1≤i≤n n X |aij |} = j=1 n X |akj |, j=1 Pn j=1 |akj | > 0 de otro modo z al vector de los signos de los elementos de esa la z = = 0 tomamos sg(ak,1 ) = 0. Como la la no es nula, z ̸= 0. (si hay más de una tomamos cualquiera). Podemos suponer que el resultado es inmediato. Llamemos (sg(ak,1 ), · · · , sg(ak,n ). Si algún ak,i Luego ∥z∥∞ = máx1≤i≤n {|zi |} = 1, y ∥A∥∞ = máx x∈Rn ,∥x∥∞ =1 haciendo ∥Ax∥∞ ≥ ∥Az∥∞ ≥ n X ai,j sg(ai,j ) = j=1 1 ≤ j ≤ n |xj | ≤ ∥x∥∞ = 1 |[Ax]i | = | n X ai,j xj | ≤ n X y z= x ∈ Rn tal que 1≤i≤n j=1 |z|eiθ , se tiene que i n X |aij |}, j=1 ∥x∥∞ = 1, luego Ax del vector n X |ai,j | ≤ máx { |aij |}, lo que da la otra desigualdad y demuestra el caso z∈C 1≤i≤n y entonces, para cualquier elemento j=1 recordando que si |ai,j | = máx { j=1 lo que prueba una desigualdad. Para a otra desigualdad, sea para todo n X j=1 K = R. El caso K = C ze−iθ = |z| y |eiθ | = 1. sale del mismo modo □ Análogamente para la norma−1 se tiene Ejemplo 3.3. Consideremos en Kn la norma ∥ · ∥1 . ∥A∥1 = máx { 1≤j≤n Para n X A ∈ Kn×n 12 se tiene |aij |}. i=1 Un caso de mucha importancia para nosotros es la norma matricial subordinada a la norma−2. Comencemos calculando un caso elemental: la norma−2 de una matriz unitaria/ortogonal (Denición 3.7). Supongamos que Q ∈ Kn×n y Q∗ Q = I , luego, para todox ∈ Kn ∥Qx∥22 = (Qx)∗ Qx = x∗ x = ∥x∥22 , es decir que ∥Qx∥2 = ∥x∥2 , ∀x ∈ Kn . (3.9) Vemos que las matrices unitarias son isometrías, es decir, no cambian las longitudes. Tampoco cambian los ángulos ya que preservan el producto interno, propiedad que resaltamos a continuación (3.10) 12 ⟨Qv, Qw⟩ = (Qv)∗ Qw = v ∗ w = ⟨v, w⟩. También vale en el caso de matrices rectangulares. 3. NORMAS DE MATRICES Estas propiedades denen a los 69 movimientos rígidos. De (3.9), tenemos ∥Qx∥2 = 1, x̸=0 ∥x∥2 ∥Q∥2 = sup lo que les da su nombre a las matrices unitarias. Ejercicio 3.5. Vericar que la matriz 1 0 0 A = 0 cos α − sin α 0 sin α cos α es una matriz ortogonal para cualquier valor de α. Interpretar geométricamente la transformación Ax. lineal Como ya hemos señalado, las normas subordinadas son las mas útiles. Sin embargo la norma euclídea aplicada a matrices -que es no subordinada- tiene importantes aplicaciones y un nombre propio. Definición 3.10. Dada A ∈ Kn×m denimos la norma de Frobenius ∥A∥F = s X X |ai,j |2 1≤i≤n i≤j≤m Notar que ∥A∥F = donde tr q tr(AT A), indica el operador traza (la suma de los elementos de la diagonal). Las normas no subordinadas de matrices no suelen cumplir con la desigualdad (3.7). La norma de Frobenius es 13 una excepción, gracias a la desigualdad de Cauchy-Schwarz. En efecto, dados consideremos el elemento i, j A, B ∈ Kn×n , de la matriz producto |[AB]i,j |2 ≤ |( n X n n X X 2 Ai,l Bl,j )|2 ≤ ( A2i,l )( Bl,j ), l=1 1=1 1=1 donde hemos usado la Proposición 3.1 en la última desigualdad. Sumando en i y en j se tiene el resultado deseado ∥AB∥2F = X 1≤i,j≤n |[AB]i,j |2 ≤ X n n X X X 2 ( A2i,l )( Bl,j ) = ∥A∥2F ∥B∥2F , 1≤i≤n 1≤j≤n 1=1 1=1 esto es ∥AB∥F ≤ ∥A∥F ∥B∥F . Cerramos esta sección con propiedades de las normas de matrices unitarias (algunas las hemos ya probado pero las ponemos en recuadro para recordarlas). De todas la matrices, las unitarias poseen propiedades especiales que las hacen muy favorables para su uso en los algoritmos. 13 El siguiente argumento vale también para matrices rectangulares. 70 3. NORMAS Y PRODUCTO INTERNO A ∈ Kn×m , Q ∈ Kn×n , Q ∀v ∈ Kn ∥Qv∥2 = ∥v∥2 ∥Q∥2 = 1 ∥QA∥2 = ∥A∥2 ∥QA∥F = ∥A∥F Proposición 3.3. Sea 1. 2. 3. 4. Demostración. Las propiedades Para (3), (1) notemos que por (1) y (2) unitaria/ortogonal, resulta ya las hemos probado. se tiene ∥QA∥2 = supv,∥v∥2 =1 ∥QAv∥2 = supv,∥v∥=1 ∥Av∥2 = ∥A∥2 . Finalmente, para (4) escribimos ∥QA∥2F = tr((QA)∗ (QA)) = tr(A∗ A) = ∥A∥2F . □ 4. Condicion de Matrices Sea A ∈ Rn×m , queremos estudiar en más detalle la condición de evaluar Av (pensado como transformación lineal). Notemos que podemos hacerlo con bastante en general aprovechando la linealidad. En efecto, para una perturbación arbitraria evaluar en v (asumiendo que v∈ / N u(A)) h de v tenemos que el error relativo de puede escribirse ∥A(v + h) − Av∥ ∥Ah∥ = , ∥Av∥ ∥Av∥ y este valor, respecto del error relativo en ∥Ah∥ ∥Av∥ ∥v∥ ∥h∥ = v resulta ∥Ah∥ ∥v∥ ∥v∥ ≤ ∥A∥ . ∥h∥ ∥Av∥ ∥Av∥ El número que está a la derecha es independiente de la condición de evaluar A en v condición en el caso general (i.e. y podemos usarlo como representante de ∥x0 ∥∥Df (x0 )∥ ). Si quisieramos una expresión independiente de ∥f (x0 )∥ n=m y ∥v∥ ∥Av∥ puede acotarse idependiente de v que podríamos hacer?. En el caso en que el cociente h y de hecho vemos que coincide con la expresión sugerida para la A sea invertible, podemos llamar w = Av v y ∥v∥ ∥A−1 w∥ = ≤ ∥A−1 ∥. ∥Av∥ ∥w∥ En denitiva hallamos un número que mayora a la condición de evaluar en v para todo v y este es ∥A∥ Notemos que argumentando con A−1 , ∥v∥ ≤ ∥A∥∥A−1 ∥. ∥Av∥ vemos que el mismo número mayora a la condición de −1 w . Esto motiva la siguiente denición. evaluar A 4. CONDICION DE MATRICES 71 A ∈ Kn×n ∥ · ∥, como Definición 3.11. (Condición de una matriz) Dada de A, κ(A), asociada a una norma subordinada invertible denimos la condición κ(A) = ∥A∥∥A−1 ∥. Si A no es invertible denimos Que ocurre si A ∈ Kn×m ? adelante cuando denamos la κ(A) = +∞. podremos denir algo similar?. Volveremos sobre este caso mas pseudoinversa. Observación 3.1. Observemos que 1. La condición de una matriz depende de la norma matricial elegida. Sin embargo, como en dimensión nita todas las normas son equivalentes las condiciones son equivalentes. 2. Para todo 3. κ(I) = 1 0 ̸= α ∈ K, κ(αA) = κ(A). para toda norma. 4. Como consecuencia del ítem previo, para toda norma, Q unitaria/ortogonal κ(Q) = 1. κ(A) = κ(A−1 ) 5. Para toda 6. 1 ≤ κ(A). (ver item (2) en Proposición 3.3) Consideremos por un segundo los problemas que pueden aparecer cuando resolvemos un sistema Ax = b con b ̸= 0 y A invertible. Por un lado tenemos que considerar que tanto A como b se almacenaran con errores. En general entonces estaremos resolviendo otro problema (A + ∆A)(x + ∆x) = b + ∆b. Asumiendo que procedemos a resolver el problema con aritmética exacta (no hay otras fuentes de error) nos interesa ver el impacto en el error Tenemos, usando que ∆x debido a los errores ∆A, ∆b. Ax = b ∆Ax + A∆x + ∆A∆x = ∆b. Procediendo informalmente, despreciamos el término de segundo orden ∆A∆x y resulta ∆Ax + A∆x ∼ ∆b. de donde ∆x ∼ A−1 ∆b − A−1 ∆Ax, y usando que ∥A∥ = ̸ 0, ∥∆x∥ ≲ ∥A−1 ∥∥∆b∥ + ∥A−1 ∥∆A∥∥x∥ = ∥A−1 ∥ usando que ∥b∥ ≤ ∥A∥∥x∥ ∥∆A∥ ∥∆b∥ ∥b∥ + ∥A−1 ∥ ∥A∥∥x∥, ∥b∥ ∥A∥ ∥x∥ = ̸ 0 tenemos ∥∆b∥ ∥∆A∥ ∥∆x∥ ≲ κ(A) + . ∥x∥ ∥b∥ ∥A∥ y diviendo por Lo que dice que el error relativo generado en la solución se acota en terminos de los errores relativos en los datos por la condición de la matriz. 72 3. NORMAS Y PRODUCTO INTERNO ∆A = 0 Observar que en caso de ser ≤ (no hay error en la matriz) podemos reemplazar ≲ con y queda ∥∆x∥ ∥∆b∥ ≤ κ(A) . ∥x∥ ∥b∥ De hecho, escribiendo A−1 b = x, y A−1 (b + ∆b) = x + ∆x se puede argumentar con A−1 y por (6) de la Observación 3.1, se ve que ∥∆x∥ ∥∆b∥ ≤ κ(A) . ∥b∥ ∥x∥ Resumiendo ∥∆x∥ ∥∆b∥ 1 ∥∆b∥ ≤ ≤ κ(A) . κ(A) ∥b∥ ∥x∥ ∥b∥ Ejercicio 3.6. Verique con ejemplos que las desigualdades previas se alcanzan (Sug.: use matrices diagonales adecuadas). Teniendo en cuenta el ejercicio previo, vemos que la cota superior puede alcanzarse en la p¯actica. En particular nos dice de un modo simplicado que podemos perder 14 signicativos al resolver el sistema . El siguiente resultado da una idea cualitativa de relativa de A κ(A) como el recíproco de la distancia a las matrices singulares. Teorema 3.1. A ∈ Rn×n , se tiene, ∥A − B∥ 1 = ı́nf , κ(A) B singular ∥A∥ (3.11) y en donde asumimos 1 κ(A) Demostración. Si A log10 (κ(A)) dígitos A =0 en caso de que A no sea invertible. es no invertible el resultado es evidente. Supongamos entonces que es invertible. Probaremos únicamente que vale el B ∈ Rn×n una 0 ̸= w = Av . Se tiene Sea ≤ en (3.11). matriz singular cualquiera. Tomemos 0 ̸= v ∈ Ker(B), y denamos 0 ̸= ∥w∥ = ∥(A − B)v∥ ≤ ∥A − B∥∥A−1 w∥ ≤ ∥A − B∥∥A−1 ∥∥w∥, dividiendo por ∥A∥∥A−1 ∥∥w∥ = ̸ 0 se obtiene 1 ∥A − B∥ ≤ , κ(A) ∥A∥ y por ser B arbitrario 1 ∥A − B∥ ≤ ı́nf , κ(A) B singular ∥A∥ □ 14 Por ejemplo, si κ(A) ∼ 1016 no tenemos la garantía de tener ni un dígito correcto en nuestro resultado. 5. PROYECCIONES Y PROYECTORES 73 El resultado anterior dice que un número condición grande signica cercanía -relativa- a las matrices singulares. Es importante remarcar que el determinante no es la herramienta adecuada para medir esa cercanía, pues el ítem (2) de la Observación 3.1 dice que el número de condición no cambia por múltiplos de una matriz sin embargo det(αA) = αn det(A) que tiende a cero si α → 0. 5. Proyecciones y Proyectores Observemos otra forma equivalente de escribir la proyección ortogonal de pacio generado por v w sobre el subes- (ver (3.4)): Pv (w) = (3.12) v v∗ w, ∥v∥2 ∥v∥2 que puede verse como una aplicación lineal de matriz Notar que la matriz vv ∗ ∥v∥2 ∥v∥2 . vv ∗ ∥v∥2 ∥v∥2 , asociada a la proyección columnas son todas múltiplos de Un caso notable es cuando v Pv , tiene rango 1, de hecho las v. es de norma uno. En ese caso Pv (w) = vv ∗ w, (3.13) teniendo esto en mente volvamos un segundo a la ecuación (3.2). Si en vez de una base completa solo contamos con un conjunto de vectores ortonormales llamamos S = ⟨v1 , · · · , vk ⟩ C = {v1 , · · · , vk } ⊂ Kn , k < n, y al subespacio generado por esos vectores, vemos que la expresión PS (w) = (3.14) X Pvi (w). 1≤i≤k verica (w − PS (w)) ⊥ vj , ∀1 ≤ j ≤ k, pues vj∗ (w − PS (w)) = vj∗ w − X vj∗ Pvi (w) = vj∗ w − vj∗ w = 0. 1≤i≤k Luego, por ser ortogonal a todos los generadores de otras palabras, teniendo una base ortonormal de de un elemento w sobre S S lo será a todos lo elementos de | | v | v2 PS = 1 | | | | | ··· | | | | | | | S. En es muy fácil construir la proyección ortogonal usando la expresión (3.14). Como además cada representación matricial, lo mismo ocurre con S PS , Pvi v1∗ − − − − − − − ∗ v2 − − − − − − − vk . . . . − − − − − − − vk∗ admite una 74 3. NORMAS Y PRODUCTO INTERNO Figura 4. Proyección ortogonal de En efecto, tomando w ∈ Kn w sobre el subespacio S. M a la matriz anterior que v1∗ w ∗ X X v2 w ∗ vk v v w = Pvi (w). . = i i . . 1≤i≤k 1≤i≤k vk∗ w tenemos, llamando | | v | v2 Mw = 1 | | | | | ··· | | | | | | | es decir que coincide con (3.14). Por lo tanto, si queremos obtener la proyección ortogonal de un vector sobre un subespacio S podemos hacerlo a través de una base ortonormal de generadores de S. Sabemos que obtener una familia de S , l.i. es relativamente sencillo. Sería ideal tener un método para obtener, a partir de esa familia, un sistema de generadores ortonormales. Veamos como hacerlo. Dada una familia de vectores {v1 , v2 , ..., vn } linealmente independientes. La ortonormali- zación de Gram-Schmidt es un algoritmo que produce una sucesión de vectores ortonormales {q1 , q2 , ..., qn } del siguiente modo El proceso consiste en restarle a cada vector vi sus componen- tes en los vectores anteriores. Podemos construir primero una familia ortogonal y luego normalizarla (o normalizarla durante la construcción). Llamemos ui a los ortogonalizados, el método es el siguiente u1 u1 = v1 , u1 = ∥u 1∥ u2 u2 = v2 − Pu1 (v2 ) u2 = ∥u 2∥ u3 u3 = v3 − Pu1 (v3 ) − Pu2 (v3 ), u3 = ∥u 3∥ ... P uk uk = vk − k−1 i=1 Pui (vk ), uk = ∥uk ∥ . Notemos que el algoritmo solo puede detenerse (es decir alcanzar una operación inválida) si y solo si algún uj = 0 para algún j. Pero si esto ocurre, signica que vj es combinación lineal de 5. PROYECCIONES Y PROYECTORES {v1 , v2 · · · , vj−1 }15 75 {v1 , v2 , ..., vn } lo cual contradice el presupuesto de ser linealmente indepen- dientes. Escribimos debajo el algoritmo de forma compacta llamando obtenidos 16 qi a los vectores ortonormales . Gramm-Schmidt for j=1 to n vj = aj for i=1 to j-1 ri,j = qi∗ aj vj = vj − ri.j qi rj,j = ∥vj ∥2 qj = vj /rj,j Esta familia de vectores verica, {q1 , q2 , ..., qk } es ortonormal. ⟨q1 , q2 , ..., qk ⟩ = ⟨v1 , v2 , ..., vk ⟩ para todo 1 ≤ k ≤ n. Ya hemos hemos notado que las proyecciones ortogonales de vectores sobre subespacios resultaban aplicaciones lineales. Vamos a describir las matrices asociadas a esas aplicaciones. Definición 3.12. Una matriz 0 ̸= P ∈ Kn×n se dice un proyector si P2 = P. S1 , S2 tales que S1 ⊕ S2 = Kn , siempre es posible construir un proyector P tal que Im(P ) = S1 y N u(P ) = S2 . En efecto, como los subespacios están en n suma directa, para todo v ∈ C existen únicos vi ∈ Si tales que v = v1 +v2 . Deniendo P v = v1 Notar que dados dos subespacios obtenemos el proyector buscado. Si P es un projector y complementario. Un proyector P P ̸= I entonces I −P también es un proyector denominado deja invariante su rango, ya que si v ∈ Rg(P ) entonces ∃w tal que proyector P w = v, por lo que decimos que P P v = P P w = P w = v, Rg(P ). proyecta sobre su rango Notemos que Rg(I − P ) = Ker(P ), ya que si w ∈ Rg(I − P ), es w = v − P v de donde P w = 0, i.e. w ∈ Ker(P ). Por otro si w ∈ Ker(P ), Rg(I − P ) ∋ (I − P )w = w . El argumento anterior también implica lado, Rg(P ) = Ker(I − P ). Por otro lado, se observa trivalmente que Ker(I − P ) ∩ Ker(P ) = {0} y entonces Rg(P ) ∩ Ker(P ) = {0}. 15 En efecto, observar que mientras no se detenga el algoritmo ⟨u1 , u2 , ..., uj ⟩ = ⟨v1 , v2 , ..., vj ⟩ 1 ≤ j. 16 Notación compatible con Q para las matrices otrogonales/unitarias. para todo 76 3. NORMAS Y PRODUCTO INTERNO Esto dice que Kn = Ker(P ) ⊕ Rg(P ). Definición 3.13. Un proyector se dice oblícuo. Proposición 3.4. Un proyector Demostración. Si P ortogonal Ker(P ) ⊥ Rg(P ). P se dice P es ortogonal sí y solo sí es ortogonal, si En otro caso, P = P ∗. ∀, v, w 0 = ((I − P )v)∗ P w = v ∗ (I − P )∗ P w, lo que indica que 0 = (I − P )∗ P = P − P ∗ P , es decir P = P ∗P y en particular resulta Recíprocamente, si P = P ∗. P = P ∗, ((I − P )v)∗ P w = v ∗ (I − P )∗ P w = v ∗ (P − P 2 )w = 0, ∀, v, w, lo que dice que P es ortogonal. Teorema 3.2. Sea P un proyector. Son equivalentes: 1. 2. 3. □ P es ortogonal ∥v∥2 = ∥(I − P )v∥2 + ∥P v∥2 ∥P ∥2 = 1 Demostración. (1) → (2): para todo para todo v v escribimos v = (I − P )v + P v, y como por ser proyector Im(I − P ) = N u(P ) ⊥ Im(P ), se tiene inmediatamente ∥v∥2 = ∥(I − P )v∥2 + ∥P v∥2 . (2) → (3): la identidad de (2) dice que ∥P v∥2 ≤ ∥v∥2 , de donde ∥P ∥2 ≤ 1. Como P es proyector, P ̸= 0 y existe 0 ̸= w tal que v = P w ̸= 0, para ese v , P v = v ̸= 0 y luego ∥P ∥2 ≥ 1, lo dice ∥P ∥2 = 1. (3) → (1): asumamos que existen v ∈ Im(P ) y w ∈ N u(P ) tales que v ∗ w ̸= 0 y ∥v∥ = 1 = ∥w∥. ∗ Denamos u = v − (w v)w , se tiene ∥P u∥ = ∥P v∥ = ∥v∥ = 1 como ∥P ∥ = 1 resulta 1 = ∥P u∥ ≤ ∥u∥2 = ∥v∥2 − (w∗ v)(v ∗ w) − (w∗ v)w∗ v + |w∗ v|2 ∥w∥2 = 1 − (vw∗ )(v ∗ w) − (w∗ v)w∗ v + |w∗ v|2 = 1 − (w∗ v)2 < 1, absurdos. Luego Im(P ) ⊥ N u(P ) y P es ortogonal. □ 5. PROYECCIONES Y PROYECTORES Observación 3.5. Dada una matriz P = AA∗ ∈ A ∈ Cn×k con columnas Cn×n es un proyector ortogonal, ya que al ser ∗ 2 ∗ 77 ortonormales, A∗ A =I∈ se tiene que Ck×k , resulta ∗ P = A(A A)A = AA = P , P ∗ = P (por Proposición 3.4). n columna i de A, resulta para cada v ∈ C , la X P v = AA∗ v = (qi∗ v)qi i.e. un proyector, además ortogonal por ser Llamando qi , 1 ≤ i ≤ k , a la expresión 1≤i≤k que clarica el efecto de multiplicar por P. Vamos a construir una herramienta de mucha utilidad. Notemos que para todo uno (de no ser de norma uno dedemos dividir por de rango uno que proyecta sobre el subespacio v∗v v de norma ), podemos denir el proyector ortogonal Pv = vv ∗ , generado por v , y con este su complementario Pv⊥ = I − Pv , de rango n−1 que proyecta sobre el ortogonal a v. Como aplicación de estos proyectores podemos reformular Gramm-Schmidt (recordemos que las columnas de A se donotan con ai ). Gram-Schmidt Modicado for j=1 to n vj = aj for j=1 to n rj,j = ∥vj ∥ qj = vj /rj,j for i=j+1 to n rj,i = qj∗ vi vj = vj − rj,i qj esta versión modicada, más estable que la original como veremos con un ejemplo, puede ponerse en términos de proyectores de rango {q1 , · · · , qj−1 }, el vector n − 1. En efecto, habiendo calculado {v1 , · · · , vj−1 } y vj vj = Pq⊥ Pq⊥ · · · Pq⊥ aj . j−1 j−2 1 se obtiene de la aplicación sucesiva de proyectores de este tipo. Observación 3.6. Gram-Schmidt es ampliamente utilizado en la forma descripta, su costo es ∼ 2n3 . Capítulo 4 Métodos Directos Para Sistemas Lineales 1. Sistemas y Factorización de Matrices Comenzaremos asumiendo que trabajaremos con matrices cuadradas, i.e. A ∈ Rn×n (o mas n×n ya que la mayoría de las consideranciones se aplican a los complejos). en general K Recordemos que los vectores donde tiene sentido v ∈ Kn los identicamos con matrices columna de n×1 de Av . Factorizar siginica descomponer una expresión en factores de algún modo mas simples o que nos otorguen algún benecio teórico o práctico. La factorización LU consiste en escribir una matriz invertible superior U, A como producto de dos factores: uno triangular inferior L y otro triangular es decir ∗ 0 ··· ∗ ∗ · · · L = .. .. . . . . . ∗ ∗ ··· 0 ∗ ∗ ··· 0 ∗ · · · 0 . , U = . . . .. .. . . . . ∗ 0 0 ··· ∗ ∗ . . . ∗ y A = LU . Un benecio inmediato de esta factorización es que para resolver un sistema Ax = b, basta resolver Ly = b, U x = y, y cada sistema triangular puede resolverse por sustitución (regresiva o progresiva) en ∼ n2 1 operaciones . Ejercicio 4.1. Escriba un algoritmo para resolver sistemas triangulares con orden 2. Descomposición LU La factorización LU n2 . =A es un subproducto del método de eliminación de Gauss. Dada la matriz a1,1 a1,2 · · · a2,1 a2,2 · · · A = .. . .. . . . . an,1 an,2 · · · 1 De todos modos el costo de la factorización es de orden 79 a1,n a2,n . . . an,n ∼ 32 n3 como veremos mas adelante. 80 4. MÉTODOS DIRECTOS PARA SISTEMAS LINEALES a1,1 , pivot, A para A por ai,1 − a1,1 (lo cual es posible ya que hemos asumido a1,1 ̸= 0) y sumando ese resultado a la la i. En términos matriciales, eso equivale a multiplicar a izquierda la matriz A por el multiplicador M1 1 0 ··· 0 a2,1 − a 1 · · · 0 1,1 M1 = .. . . .. . . . . . . an,1 − a1,1 0 · · · 1 y suponiendo que denominado generar ceros debajo del elemento a1,1 . es no nulo es posible operar sobre las las de Esto se hace la a la multiplicando la la 1 de El efecto neto del producto resulta a1,1 a1,2 a1,3 0 a(1) a(1) 2,2 2,3 (1) (1) 0 a a M1 A = 3,2 3,3 . .. .. . . . . (1) (1) 0 an,2 an,3 donde se destaca con un superíndice (1) que en caso de tener el pivot (1) a2,2 ̸= 0 ··· . . . ··· una nueva matriz (1) (1) a ··· 2,2 . . . = . .. (1) an,2 · · · A(1) ··· ··· a2,n .. . (1) a1,n (1) a2,n (1) a3,n (1) an,n A(1) ∈ R(n−1)×(n−1) an,n admite un nuevo paso en la iteración tomando 1 0 0 1 (1) a3,2 0 − (1) a2,2 M2 = .. . . . . (1) an,2 0 − (1) a2,2 ··· ··· 0 0 1 ··· . . . . . . 0 ··· 0 0 0 1 de donde a1,1 a1,2 a1,3 0 a(1) a(1) 2,2 2,3 (2) 0 0 a3,3 M2 M1 A = . .. .. . . . . (2) 0 0 an,3 con A(2) ∈ R(n−2)×(n−2) . (k) ak+1,k+1 ̸= 0, ··· . . . ··· a1,n a1,1 a1,2 a1,3 · · · a1,n (1) a2,n 0 a(1) a(1) · · · a(1) 2,2 2,3 2,n (2) a3,n = 0 0 , . .. . . . A(2) (2) 0 0 an,n Este procedimiento, dado que cada triangulación por matrices triangulares. pivot ··· ··· para todo Mi es triangular, se denomina Si algoritmo no se detiene, es decir que cada elemento 1 ≤ k ≤ n − 1, se obtiene una matriz triangular superior U 2. DESCOMPOSICIÓN 81 LU = A invertible a1,1 a1,2 a1,3 a1,4 · · · 0 a(1) a(1) a(1) · · · 2,2 2,3 2,4 (2) (2) 0 0 a3,3 a3,4 · · · Mn−1 Mn−2 · · · M1 A = U = . . . . .. . . . . . . . . . 0 0 0 0 0 a1,n (1) a2,n (2) a3,n . . . (n−1) an,n Observemos que la productoria Mn−1 · · · M2 M1 = M , es una matriz triangular inferior, dado que es producto de matrices triangulares inferiores. La inversa de M, es por lo tanto triangular inferior. La llamaremos L = M −1 y por ende A = LU . El problema que aparece inmediatamente es que no hemos obtenido sentido de que aún falta invertir Observemos que cada Mi M ). L constructivamente (en el Sin embargo, un hecho notable facilita ese trabajo. tiene la forma Mi = I − zi eTi , (4.1) donde ei representa el i−ésimo canónico y zi es de la forma 0 .. . 0 zi = (i) , zi+1 .. . (i) zn con (i) zj = (i−1) aj,i (i−1) , ai,i i + 1 ≤ j ≤ n. Lema 4.1. Sea u, v ∈ Rn , tales que v T u ̸= 1 entonces (I − uv T )−1 = I + I − uv T uv T 1 − vT u es invertible y además . Demostración. (I − uv T )(I + uv T 1 uv T uv T T ) = I + uv ( − 1) − = I. 1 − vT u 1 − vT u 1 − vT u □ Considerando el lema anterior y observando que en (4.1) se tiene eTi zi = 0, resulta 2 Mi−1 = I + zi eTi , 2 Es decir que el costo de invertir Mi es casi nulo (apenas un cambio de signos debajo de la diagonal). 82 4. MÉTODOS DIRECTOS PARA SISTEMAS LINEALES de donde −1 L = M1−1 M2−1 · · · M(n−1) = (I + z1 eT1 )(I + z2 eT2 ) · · · (I + zn−1 eTn−1 ). Mi−1 hay otro hecho afortunado que permite expresar = 0 no solo para k = i sino para todo i ≤ k ≤ n, se puede Ademas de la sencillez en el cómputo de L T sin cálculos adicionales. Como ei zk desarrollar la expresión para L y obtener L=I+ n−1 X zi eTi , i=1 o dicho de otra forma, 1 a2,1 a1,1 a 3,1 L = a1,1 . .. an,1 0 1 ··· ··· 0 0 a3,2 .. (1) . . . .. . . . .. (1) . a2,2 . a1,1 (1) a2,2 1 (n−1) (1) an,2 . ··· an,n−1 (n−1) an−1,n−1 0 0 . . . , . . . 1 i.e., basta con almacenar los multiplicadores en sus respectivos lugares cambiando los signos. Un supuesto básico para que la descomposición LU pueda llevarse a cabo es que todos los pivots sean no nulos. Eso no puede garantizarse bajo la única hipótesis de que det(A) ̸= 0 como se ve en tomando por ejemplo 0 1 A= 1 0 Sin embargo puede garantizarse si se requiere que todos lo menores de la matriz A, sean invertibles. A ∈ Kn×n , entonces existe factorización LU de A con L, U invertodo 1 ≤ k ≤ n, det(A(1 : k, 1 : k)) ̸= 0. Proposición 4.1. Sea tibles sí y solo sí para Demostración. Veamos primero la implicación Como ⇐: a11 = A(1, 1) resulta a11 ̸= 0 y el primer pivot es no nulo. LLevado adelante el proceso de eliminación, vemos que se puede escribir A = M1−1 U1 donde M1−1 U1 = 1 a a2,1 1,1 a3,1 a 1,1 . . . an,1 a1,1 ··· ··· 0 0 0.. . . . .. . . . .. 0 ··· 0 1 . . . 1 0 0 a · · · a1,n 1,1 a1,2 a1,3 0 (1) (1) (1) 0 a2,2 a2,3 · · · a2,n . . 0 0 . . . .. . . . . A(2) . 0 0 1 2. DESCOMPOSICIÓN 83 LU = A Por lo tanto A(1 : 2, 1 : 2) = y como por hipótesis 1 a2,1 a1,1 0 ̸= det(A(1 : 2, 1 : 2)) ! a1,1 a1,2 0 (1) 1 0 a2,2 tenemos (1) det(A(1 : 2, 1 : 2)) = a1,1 a2,2 ̸= 0, por lo tanto el segundo pivot no se anula. La demostración se sigue por inducción. Para la implicación ⇒ : Notamos que si A = LU con L y U invertibles, deben ser lkk ̸= 0 ̸= ukk para todo 1 ≤ k ≤ n ya que son triangulares. En particular det(L(1 : k, 1 : k) ̸= 0 ̸= det(U (1 : k, 1 : k)) y por ser una de ellas triangular inferior y la otra superior, resulta A(1 : k, 1 : k) = L(1 : k, 1 : k)U (1 : k, 1 : k) de donde det(A(1 : k, 1 : k)) ̸= 0. □ Para ver otro criterio necesitamos una denición. se dice diagonal dominante (estrictamente diagonal dominante ) y se denota DD (EDD) si y solo si para todo i, 1 ≤ i ≤ n Definición 4.1. Una matriz A ∈ Rn×n , Cn×n X |ai,j | ≤ (<)|ai,i |. 1≤j≤n,j̸=i Y la siguiente proposición (que puede renarse en algunos casos como veremos mas adelante). Proposición 4.2. Sea A ∈ Rn×n , Cn×n EDD entonces Demostración. Supongamos que no. Existe entonces 1≤i≤n tal que 0 ̸= |vi | = ∥v∥∞ , A es invertible. 0 ̸= v ∈ Cn tal que Av = 0. Sea i, entonces n X ai,j vj = 0, j=1 de donde |ai,i | ≤ n X j=1,j̸=i n X |vj | ≤ |ai,j | |ai,j |, |vi | j=1,j̸=i □ lo que contradice la EDD. Proposición 4.3. Si A es EDD entonces, trabajando con aritmética exacta, el proceso de eliminación de Gauss no produce pivots nulos. Demostración. Ejercicio. Observación 4.1. Las matrices DD no son una articio teórico, aparecen frecuentemente en la práctica como por ejemplo en la discretización de ecuaciones diferenciales. □ 84 4. MÉTODOS DIRECTOS PARA SISTEMAS LINEALES Aún en el caso en que no aparezcan pivots nulos, el algoritmo de eliminación no delvoverá en general los verdaderos factores L y U, sino una aproximación de ellos. Mas explícitamente 5 podemos enunciar el siguiente teorema (ver [ ]). Teorema 4.1. Sea A ∈ Kn×n , si el algoritmo LU no produce pivots nulos,la factorización LU producida por la máquina verica L̃Ũ = A + ∆A donde |∆A| ≲ 2(n − 1)ε(|A| + |L̃||Ũ |). Observación 4.2. El Teorema 4.1, sugiere controlar el tamaño de los factores En efecto, si el producto sobre el error. El |L̃||Ũ | pivoteo parcial L̃, Ũ . es muy grande no tendremos control (al menos teórico) permite garantizar al menos el control costo razonable. Si bien, esto no necesariamente implica que |L̃||Ũ | |L| ≤ 1 a una sea pequeño, resulta suciente en la mayoría de los casos prácticos (ver sin embargo la Observación 4.3). Ejercicio 4.2. Muestre el el número de operaciones necesarias para realizar la factorización LU es 3 O( 2n3 ) El número de elementos de una matriz de n×n es obviamente n2 . El número mínimo de operaciones que un método de resolución puede efectuar debe ser de orden mayor o igual a n2 . Todos los métodos directos clásicos son de orden cúbico. Esto presenta problemas para matrices muy grandes ya que en ciertas aplicaciones es posible tener un gran número de incógnitas. rala Otro problema importante es el rellenado que produce el algoritmo. Esto es, aunque A sea -cosa que afortunadamente ocurre en muchas aplicaciones, como en ecuaciones diferenciales- los factores L, U pueden no serlo. Ejercicio 4.3. Cuanta memoria ocuparía una matriz de 3. Descomposición LU Una matriz de permutaciones P ∈ Kn×n = PA 106 × 106 llena?. (pivoteo parcial) es una matriz identidad con las las permutadas. Alternativamente puede verse como una matriz cuyas las están conformadas por los elementos de la base canónica no necesariamente ordenados. Es decir, eTi1 − − −− eTi2 P = . . . − − − − − eTin donde i1 , i2 , · · · in ∈ {1, 2, · · · n} son todos diferentes. Alternativamente podemos pensar una matriz de permutaciones como la identidad con las columnas permutadas P = e i1 | ei2 | · · · |ein . 3. DESCOMPOSICIÓN LU = P A (PIVOTEO PARCIAL) 85 Notemos que si v ∈ Kn , v i1 vi 2 P v = .. . v in v T P = vi1 , vi2 , · · · vin . Resumamos las siguientes propiedades de las permutaciones. Dada A A ∈ Kn×n , P A coincide con A pero con las las permutadas y AP coincide con pero con las columnas permutadas. x ∈ Kn , P x coincide con x pero con los elementos permutados. det(P ) = ±1 P −1 = P T Si P1 y P2 son permutaciones entonces P = P1 P2 también lo es. Dada Si durante la eliminación de Gauss hallamos un pivot nulo, podemos intercambiar las para continuar con el algoritmo (siempre que haya algún elemento no nulo con el cual proseguir). Mas aún, aunque el correspondiente pivot sea no nulo, podemos, casi al mismo costo, tomar el pivot mas grande (en valor absoluto). Esa operación la podemos representar matricialmente multiplicando por una adecuada permutación. El procedimiento sería el siguiente: tomemos el elemento con mayor valor absoluto en la primera columna de la la k A. Digamos que este es ak,1 (si det(A) ̸= 0 se tiene que ak,1 ̸= 0). Permutemos 1, lo cual se hace con una matriz P1 . Es decir ak,1 ak,2 · · · ak,n a2,1 a2,2 · · · a2,n . . . . . . . . . . . . P1 A = , a1,1 a1,2 · · · a1,n . . . . .. . . . . . . con la la an,1 an,2 · · · an,n M1 de modo tal que ak,1 ak,2 · · · ak,n 0 M1 P1 A = .. . . A(1) 0 a partir de aquí construimos el multiplicador, Llegado a este punto, repetimos el procedimiento con la primer columna de tualmente requerirá otra matriz P2 que even- antes de la construcción del nuevo multiplicador denitiva, (4.2) A(1) Mn−1 Pn−1 · · · M1 P1 A = U , M2 . En 86 4. MÉTODOS DIRECTOS PARA SISTEMAS LINEALES se obtiene una nueva matriz triangular superior 0 U, y donde Mi = I − zi eTi con .. . 0 zi = (i) , zi+1 .. . (i) zn |zi | ≤ 1 (i.e. los multplicadores son menores o iguales a 1 en valor absoluto). El problema ahora es que en la forma (4.2) no parece verse el modo de reconstruir los factores LyP de manera sencilla. Sin embargo un hecho inesperadamente favorable resuelve esta cuestión. Notemos que por el orden de las iteraciones en el paso k solo permutaremos en busca del mayor pivot (en caso k a la n porque las las previas ya han sido procesadas. Eso indica j < k . En particular, si bien no es cierto que Pk conmuta con Mj sí de ser necesario) las desde la que eTj Pk = eTj es cierto, para todo para todo j < k, que Pk Mj = Pk (I − zj eTj ) = (I − Pk zj eTj )Pk = M̃j Pk , es decir que podemos pasar la permutación a la derecha permutando adecuadamente los multi- Mj . Lo importante es que esta nueva matriz, Mj . Así que volviendo a (4.2) tenemos plicadores de la matriz misma estructura que denotada con M̃j tiene la Mn−1 Pn−1 · · · M1 P1 A = M̃n−1 · · · M̃1 Pn−1 · · · P1 A = U . Argumentando como en el caso son pivoteo (usando que la estructura de las las de las Mi ) y llamando P = Pn−1 · · · P1 M̃i es igual a la de se llega a P A = LU . Proposición 4.4. Trabajando con aritmética exacta se tiene que si det(A) ̸= 0 el algo- ritmo de pivoteo parcial no tiene pivots nulos. Observación 4.3. El proceso de pivoteo parcial garantiza que |U |, como 0 1 0 1 · · · 1 , . . . ··· 1 un control demasiado beningno sobre el tamaño de 1 −1 −1 .. . −1 puede verse que ∥U ∥∞ ≥ 2n ∥A∥∞ . 0 0 ··· 1 0 ··· 0 1 0 . . . . . . .. 0 0 0 . |L| ≤ 1 pero no se tiene se ve en este ejemplo Este ejemplo sin embargo parece ser singular en el sentido de que en los casos genéricos el crecimiento de |U | estaría controlado por √ n 5 [ ] a. Esta particularidad parece (junto con el hecho de que su costo es la mitad que el de la factorización QR que veremos mas adelante) haber mantenido el algoritmo de eliminación como uno de los más populares entre los métodos directos. aAl presente no parece haber una demostración rigurosa de esto. 4. DESCOMPOSICIÓN LDL∗ : CHOLESKY 87 Controlar el tamaño del ambos factores L y U es posible. La idea se denomina pivoteo completo, esto implica hacer permutaciones de las y de columnas para tomar siempre el mayor pivot posible. Así en el paso inicial se busca el elemento ak,l con máximo valor absoluto y se k y l respectivamente. En términos matriciales P1 , P̃1 antes de aplicar el paso de eliminación. Es ∗ ∗ ··· ∗ 0 M1 P1 AP̃1 = .. . (1) . A 0 se obtiene U permutan la la y columna 1 con la la y columna eso requiere de dos matrices de permutaciones decir Repitiendo el procedimiento Mn−1 Pn−1 · · · M1 P1 AP̃1 · · · P̃n−1 = U , y argumentando como antes se obtienen ahora dos matrices de permutaciones P , P̃ tales que P AP̃ = LU . El pivoteo completo no se lleva a cabo en general debido a su alto costo (calcule el número de comparaciones que debe realizar en cada) ya que hay otros métodos estables mas económicos. Wilkinson probó lo siguiente Teorema 4.2. En aritmética exacta, para el algoritmo de pivoteo completo se tiene ∥U ∥∞ ≤ √ n(2.31/2 .41/3 · · · n1/(n−1) )1/2 ∥A∥∞ Ejercicio 4.4. Estimar numéricamente el crecimiento del factor √ n(2.31/2 .41/3 · · · n1/(n−1) )1/2 . 4. Descomposición LDL∗ : Cholesky En muchos casos es posible explotar la estructura de las matrices a la hora de resolver sistemas. Dicho sea esto a la hora de ahorrar computos o mejorar la estabilidad de los algoritmos. Proposición 4.5. Si A es denida positiva entonces es invertible y también lo son todos sus menores. Demostración. En efecto, de no ser invertible, existiría contradice la denida positividad ya que para ese v se tendría 0 ̸= v tal v ∗ Av = 0. que Respecto de los menores el resultado se sigue del anterior. En efecto, sea tomemos vectores v ∈ Kn de la forma (ṽ, 0, · · · , 0) con ṽ ∈ Kk k Av = 0 jo, lo que 1≤k≤n y arbitrario. Resulta 0 < v ∗ Av = ṽ ∗ A(1 : k, 1 : k)ṽ, y de ahí la denida positividad de Si A A(1 : k, 1 : k) es denida positiva admite una descomposición 4.5 y 4.1) y podemos escribir U = D L̃∗ , con L̃ A = LU (gracias a las Proposiciones triangular inferior con matriz diagonal. De ahí resulta A = LD L̃∗ = L̃D ∗ L∗ , entonces □ y por ende su invertibilidad. D(L−1 L̃)∗ = L−1 L̃D ∗ , 1 en la diagonal y D una 88 4. MÉTODOS DIRECTOS PARA SISTEMAS LINEALES y como el lado izquierdo de esta ecuación es triangular superior y el derecho triangular inferior L−1 L̃. deberán ser ambos diagonales. Luego, debe serlo también Li,i , 1 ≤ i ≤ n . Debido a la primera igualdad se tiene −1 L̃ = I , es decir L = L̃ y además D = D ∗ . resulta L para todo De aquí L̃i,i = 1 = −1 que Li,i = 1. Por construcción, en particular En particular se obtiene la factorización A Como además es denida positiva, A = LDL∗ . entonces D > 0, pues para todo v ̸= 0 0 < v ∗ Av = v ∗ LDL∗ v = (L∗ v)∗ DL∗ v, de donde, llamando D, positividad de w = L∗ v y usando que L (y por ende L∗ ) es invertible, resulta la denida lo que en este caso, por ser diagonal, equivale a D > 0. Esto nos garantiza la existencia de la factorización de Cholesky: 1 1 A = LD 2 D 2 L∗ = CC ∗ , donde C es triangular inferior con elementos diagonales positivos. La construcción de C puede hacerse desde la factorización LU, sin embargo ese modo mas costoso y menos estable que el algoritmo que describiremos debajo. Antes, sin embargo, veamos cómo sería la base de un algoritmo (garantizando que pueda ejecutarse sin interrupciones). Asociemos el algoritmo con una función Ya que A= CC ∗ , con C chol()3. Escribimos (4.3) ci,i > 0, C. triangular inferior de esta factorización). Intentaremos despejar donde Es decir chol(A) devuelve el factor C. (de hecho, ya probamos la existencia c1,1 | 0 − − − C= C(2 : n, 1) | C(2 : n, 2 : n) C(2 : n, 2 : n) tiene las mismas características que C . Sabiendo que a1,1 | A(2 : n, 1)∗ − − − = A(2 : n, 1) | A(2 : n, 2 : n) c1,1 | 0 c1,1 | C(2 : n, 1)∗ − − − − − − ∗ C(2 : n, 1) | C(2 : n, 2 : n) 0 | C(2 : n, 2 : n) se tiene, respectivamente, que Paso 1 Paso 2 c21,1 = a1,1 A(2 : n, 1) = c1,1 C(2 : n, 1) lo cual nos permitió despejar las incógnitas lo que permite elegir Paso 3 c1,1 > 0. → → c1,1 := √ a1,1 , C(2 : n, 1) := A(2 : n, 1)/c1,1 , C(1 : n, 1), puesto que a1,1 > 0 A(2 : n, 2 : n) = C(1 : n, 1)C(1 : n, 1)∗ + C(2 : n, 2 : n)C(2 : n, 2 : n)∗ → C(2 : n, 2 : n) := chol(A(2 : n, 2 : n) − C(1 : n, 1)C(1 : n, 1)∗ ), 3 En Python por hipótesis, Ahora consideramos np.linalg.cholesky() en Matlab chol(). 5. ORTOGONALIDAD EN MÉTODOS DIRECTOS 89 chol(A(1 : n, 1 : n)) para una matriz de n×n se redujo a resolver chol(A(2 : n, 2 : n) − C(2 : n, 1)C(2 : n, 1)∗ ) para una matriz de tamaño (n − 1) × (n − 1), lo que de donde el problema de resolver inductivamente (siempre que la nueva matriz sea denida positiva) nos lleva al problema trivial de factorizar un número real positivo (matriz de 1×1 denida positiva) como el cuadrado de otro positivo. Veamos entonces la siguiente A es SDP entonces A(2 : n, 2 : n) − C(2 : n, 1)C(2 : n, 1)∗ , √ C = (2 : n, 1) = A(2 : n, 1)/ a1,1 , es DP. Proposición 4.6. Si donde A(2 : n, 2 : n) − C(2 : n, 1)C(2 : n, 1)∗ es Hermitiana n otro lado, y por hipótesis, para todo 0 ̸= u = (u1 , v) ∈ C Demostración. Claramente simétrica, en el caso real). Por tiene (o se ∗ u1 a1,1 | A(2 : n, 1)∗ u1 − = − − − 0 < u∗ Au = − v A(2 : n, 1) | A(2 : n, 2 : n) v |u1 |2 a1,1 + u∗1 A(2 : n, 1)∗ v + u1 v ∗ A(2 : n, 1) + v ∗ A(2 : n, 2 : n)v. Elijamos ∗v u1 = − A(2:n,1) a1,1 y resulta para todo v ̸= 0, 0 < v ∗ (A(2 : n, 2 : n) − C(2 : n, 1)C(2 : n, 1)∗ ) v, □ lo que completa la demostración. En forma de algoritmo, Cholesky puede escribirse del siguiente modo, for j= 1:n aj,j := √ aj,j for i=j+1:n ai,j := ai,j /aj,j for k=j+1:n for i=k:n ai,k := ai,k − ai,j ak,j A (la parte superior C. en donde se utliliza solo la información de la parte triangular inferior de es redundante) y en donde, además, se almacenan los datos de la matriz 5. Ortogonalidad en Métodos Directos Como hemos mencionado, el método de eliminación se basa en triangulación por matrices triangulares (los multiplicadores). El crecimiento de los multiplicadores y de la matriz triangular superior resultante podría ser problemático. Por esa razón lo ideal sería realizar operaciones con matrices de norma controlada (idealmente de norma 1). Esos algoritmos son posibles y se basan en ideas de ortogonalidad. 90 4. MÉTODOS DIRECTOS PARA SISTEMAS LINEALES Dada una matriz A ∈ Km×n , con columnas {a1 , a2 , · · · , an } linealmente independientes, podemos considerar los subespacios anidados generados por sus columnas: < a1 >⊂< a1 , a2 >⊂ · · · ⊂< a1 , a2 , · · · , ak > .4 En varias aplicaciones es de interés encontrar generadores es, una colección {q1 , q2 , · · · , qk }, tales que qi∗ qj = δij ortonormales de esos subespacios. Esto y ⟨a1 , a2 , · · · , al ⟩ = ⟨q1 , q2 , · · · , ql ⟩ para todo l. Matricialmente, y observando los subespacios anidados, es obvio que esto equivale a hallar una matriz R ∈ Cn×n triangular superior r1,1 r1,2 r1,3 · · · 0 r2,2 r2,3 · · · 0 r3,3 · R= 0 .. . . . . . . . . . . 0 0 0 0 r1,n r2,n r3,n . . . rn,n tal que a1 | | | a2 | | | | | ··· | | | | | an = q1 | | de donde se observa que tanto los qi | | | q2 | | | | | ··· | | r1,1 r1,2 r1,3 · · · | 0 r2,2 r2,3 · · · | 0 0 r3,3 · | qn .. . . . . . . | . . . . | 0 0 0 0 (elegidos ortonomales) como los ri,j r1,n r2,n r3,n , . . . rn,n pueden obtenerse desde las ecuaciones a1 = r1,1 q1 a2 = r1,2 q1 + r2,2 q2 . . . an = r1,n q1 + r2,n q2 + · · · rn,n qn por ejemplo, a través de Gramm-Schmidt. Notemos que en caso de que (A ∈ Kn×n ), tendremos que Q A resulte cuadrada será una matriz unitaria (ortogonal en caso de ser una matriz A ∈ Kn×n ortogonal Q real). En particular, a través de Gramm-Schmidt hemos conluído que toda matriz invertible (en particular con todas sus columnas l.i.) puede factorizarse como una por una triangular superior R A = QR, factorización que se denomina QR. 4 Si las columnas son l.i. las inclusiones son obviamente estrictas, pero no en el caso general. Capítulo 5 Diagonalización 1. Motivación: Google Page Rank El éxito inicial del motor de búsquedas de Google se debe en gran parte al algoritmo desarrollado para rankear las páginas, es decir, ordenarlas por orden de importancia, y de esa forma poder mostrar a los usuarios resultados relevantes. ¾Cómo determinar si una página es relevante? Una primer medida de relevancia es considerar la cantidad de otras páginas que tienen un enlace a esa página. Sin embargo, con este criterio tan simple, no distinguimos si las páginas que enlazan a cada página son importantes o no. Queremos darle mayor relevancia a enlaces provenientes de páginas relevantes, y caemos en una especie de círculo vicioso. Podemos resumir la solución propuesta por Google de la siguiente forma. Consideremos que tenemos 11 páginas, que contienen enlaces entre las distintas página. Una echa en el gráco indica que la página de partida tiene un enlace a la página de llegada. Como podemos ver, la página B es relevante porque recibe enlaces desde muchas páginas. La página C en cambio es relevante porque recibe un enlace de B, que es una página relevante. ¾Cómo podemos denir la relevancia? Pensamos que realizamos el siguiente experimento: ponemos a 1.000.000 de personas a navegar por internet. Inicialmente eligen una página cualquiera al azar y luego cada segundo cambian de página siguiendo algún link al azar de la página en la que están. Después de varios segundos, ¾cuántos visitantes habrá en cada página? Podemos modelar esto llamando v (0) ∈ R11 a la cantidad inicial de visitantes k segundos. Vamos a ver que podemos (k) a la cantidad de visitantes luego de y v 91 en cada sitio, construir una 92 5. DIAGONALIZACIÓN matriz A ∈ R11×11 , llamada matriz de transición, tal que v (k) = Av (k−1) y recursivamente, v (k) = Ak v (0) . Por lo tanto, para estudiar este proceso, nos interesa poder calcular potencias altas de matrices, o predecir su comportamiento. Podemos preguntarnos también si existe un límite del proceso, es decir, si luego de varios segundos, la cantidad de visitantes en cada página se mantiene estable. En ese caso, el vector límite debe cumplir la relación Av ∞ = v ∞ . Los vectores con esta propiedad se llaman autovectores, y es el tema principal de este capítulo. 2. Autovalores y autovectores Dada una matriz cuadrada A ∈ Kn×n , un vector Av = λv, se llama autovector de A con v ∈ Kn para algún no nulo tal que λ∈K autovalor λ. Ejemplo. Buscamos los autovalores y autovectores de la matriz A = encontrar v y λ tales que Av = λv . 2 3 2 1 . Tenemos que El término de la derecha podemos reescribirlo como λIv , y esto nos permite agrupar: (A − λI)v = 0, que en nuestro caso queda Si el determinante de A − λI 2−λ 3 v1 0 = , 2 1−λ v2 0 (v1 , v2 ) = (0, 0). det(A − λI) = 0. es no nulo, el sistema tiene solución única Como estamos buscando vectores no nulos, debemos encontrar λ tal que Calculamos det(A − λI) = (2 − λ)(1 − λ) − 6 = λ2 − 3λ − 4. Esta ecuación es un polinomio de grado 2 en λ1 = −1 Estos son los autovalores de y λ y tiene raíces λ2 = 4. A. Para calcular los autovectores correspondientes a esos autovalores, calculamos los núcleos de las matrices 3 3 A − (−1)I2 = 2 2 y −2 3 A − (4)I2 = . 2 −3 2. AUTOVALORES Y AUTOVECTORES 93 import numpy as np import scipy.linalg A = np.array([[2, 3], [2, 1]]) A1 = A - (-1) * np.eye(2) print(scipy.linalg.null_space(A1)) %% [[-0.70710678] %% [ 0.70710678]] import numpy as np import scipy.linalg A = np.array([[2, 3], [2, 1]]) A1 = A - (-1) * np.eye(2) print(scipy.linalg.null_space(A1)) %% [[0.83205029] %% [0.5547002 ]] El comando el espacio de null_space normaliza los vectores a norma-2 igual a 1. Podemos vericar que autovectores correspondiente a λ1 = −1 es Eλ1 = ⟨(1, −1)⟩ y el espacio de autovectores correspondiente a λ2 = 4 es Eλ2 = ⟨(3, 2)⟩. Es decir, por ejemplo, (1, −1) es autovector de A de autovalor −1, como también lo es cualquier múltiplo no nulo de ese vector. En este caso, obtuvimos que el espacio de autovectores de cada autovalor tiene dimensión 1, o abusando un poco la notación, que a cada autovalor le corresponde un único autovector. Repasando, Los autovalores cuales de una matriz A ∈ Kn×n (K = R El espacio de autovalores de un autovalor Si λ o C) son los valores λ∈C para los det(A − λIn ) = 0. λ es el núcleo de la matriz A − λIn . es autovalor, el núcleo siempre tiene dimensión mayor o igual que 1. Si el núcleo tiene dimensión exactamente 1, decimos informalmente que el autovalor λ tiene un único autovector. Definición 5.1. Dada A ∈ Kn×n , llamamos polinomio característico de A al determinante χA (λ) = det(A − λI). A son las raíces de χA (λ). El polinomio det(λI − A) es un polinomio mónico con las mismas raíces que det(λI − A), y llamamos indistintamente polinomio característico Los autovalores de a cualquiera de estos dos polinomios. 94 5. DIAGONALIZACIÓN Ejercicio 5.1. Calcular el polinomio característico, los autovalores y autovectores de la matriz 2 0 0 B = 0 3 4 . 0 4 9 Ejemplo 5.1. Vericamos en comando linalg.eig de Python numpy. los cálculos para las dos matrices A y B utilizando el A = np.array([[2, 3], [2, 1]]) e = np.linalg.eig(A) # e es una lista con dos elementos print("Autovalores: ", e[0]) # El primer elemento es un array # de autovalores print("Autovectores:\n", e[1]) # El segundo elemento es una matriz # con los autovectores como columnas. %% Autovalores: [ 4. -1.] %% Autovectores: %% [[ 0.83205029 -0.70710678] %% [ 0.5547002 0.70710678]] Ejercicio 5.2. Calcular en Python los autovalores y los autovectores asociados a cada autovalor para las siguientes matrices. 1. 2. −1 4 −2 A = −3 4 0 −3 1 3 0 0 2 1 1 0 1 0 A= 0 1 −2 0 0 0 0 1 Vamos a utilizar la siguiente propiedad más adelante. Proposición 5.1. Para A ∈ Rn×n , los autovalores de Demostración. Recordemos que para cualquier A y AT son los mismos. A ∈ Rn×n , det(A) = det(AT ). A son las raíces del polinomio característico pA (λ) = det(A − λI) y los AT son las raíces del polinomio característico pAT (λ) = det(AT − λI). Como = AT − λI , ambos determinantes son iguales y por lo tanto las raíces son las □ Los autovalores de autovalores de (A − λI)T mismas. 3. Diagonalización A ∈ Kn×n como una transformación lineal de TA (v) = A · v para v ∈ Kn . En este caso estamos pensando que tanto el Como vimos, podemos pensar una matriz TA : Kn vector v → Kn dada por como TA (v) están expresados en coordenadas de la base canónica. Veamos cómo cambia la matriz de una transformación cuando expresamos los vectores en otra base. 3. DIAGONALIZACIÓN 95 Ejemplo 5.2. Continuando el ejemplo anterior, consideramos asociada A= 2 3 2 1 y la transformación 2 3 v1 f (v) = TA (v) = Av = . 2 1 v2 Para esta transformación, vale T ((1, 0)) = (2, 2) T ((0, 1)) = (3, 1) También vimos que 4 w1 = (1, −1) y respectivamente. Si tomamos la base w2 = (3, 2) son autovectores de A con autovalores −1 y B = {w1 , w2 }, la transformación en esta base toma una forma más simple: T (w1 ) = −w1 T (w2 ) = 4w2 o si escribimos a estos vectores en las coordenadas de la base B, obtenemos T ((1, 0)B ) = (−1, 0)B T ((0, 1)B ) = (0, 4)B Podemos entonces considerar la matriz de la transformación la base B y llamamos [f ]B T expresada en coordenadas de a esta matriz. Obtuvimos: [f ]B = −1 0 . 0 4 En general, tenemos el siguiente resultado. Proposición 5.2. Sea autovectores de Kn A, A ∈ Kn×n tal que existe una base B = {w1 , . . . , wn } de Kn formada por λ1 , . . . , λn ∈ C (no necesariamente distintos). Sea f : Kn → f (v) = Av . La matriz de la f en la base B es diagonal, λ1 0 .. [f ]B = . 0 λn con autovalores la transformación asociada, Estudiamos ahora la relación entre la matriz original A y la matriz [f ]B en la base de autovectores. Recordemos que dada una base en la base B = {w1 , . . . , wn } de Kn y un vector v ∈ Kn con coordenadas B v = (u1 , . . . , un )B , podemos encontrar las coordenadas de v en la base canónica mediante la multiplicación vE = CBE vB , donde CBE es la matriz de cambio de base de CBE B a E, | | = b1 b2 · · · | | | bn . | 96 5. DIAGONALIZACIÓN Si en cambio, dadas las coordenadas canónicas de un vector encontrar las coordenadas en la base B, v = (v1 , . . . , vn )E , queremos realizamos la multiplicación vB = CEB vE , donde CEB es la matriz de cambio de base de E a B, que podemos calcular invirtiendo la matriz CBE , −1 CEB = CBE . f es una transformación lineal dada en coordenadas de la base canónica por A, podemos obtener la matriz de la transformación en una base B (es decir que tanto v como TA (v) estén expresados en coordenadas de la base B ) aplicando el siguiente cambio de base a la matriz A: Por lo tanto, si una matriz AB = CEB ACBE . A Vemos que tanto como AB representan la misma transformación lineal pero expresada en semejantes. distintas bases. En este caso, decimos que las matrices son Más generalmente, dos matrices A, B son semejantes si existe una matriz inversible C tal que B = C −1 AC. Ejemplo. Continuamos el ejemplo A = 22 31 . Vimos que A tiene autovalores λ1 = −1 y λ2 = 4 con autovectores v1 = (1, −1) y v2 = (3, 2) respectivamente. Estos autovectores forman 2 una base de R . Si expresamos la matriz A en la base B = {v1 , v2 } obtenemos −1 0 AB = 0 4 (en las columnas de AB ponemos las imágenes de los vectores de la base en coordenadas de la base Vericamos en B expresados también B ). Python. A = np.array([[2, 3], [2, 1]]) e = np.linalg.eig(A) C_BE = e[1] C_EB = np.linalg.inv(C_BE) print("A_B = \n", C_EB @ A @ C_BE) %% A_B = %% [[ 4.00000000e+00 0.00000000e+00] %% [-5.55111512e-17 -1.00000000e+00]] La siguiente propiedad resume lo que acabamos de ver. Proposición 5.3. Si de A con autovalores A ∈ Kn×n y B = {b1 , . . . , bn } es una base de Kn {λ1 , . . . , λn }, entonces tomando formada por autovectores 3. DIAGONALIZACIÓN D la matriz diagonal de autovalores, λ1 D= C la matriz de autovectores de de la matriz 97 .. | A, C = b1 . . . | , . λn | bn | obtenemos la diagonalización A A = CDC −1 y D = C −1 AC. Ejercicio 5.3. Calcular en Python los autovalores y autovectores de las siguientes matrices. Según los resultados obtenidos, ¾alguna de estas matrices es diagonalizable? 1 1 0 A = 0 1 1 0 0 1 −1 3 −1 A = −3 5 −1 −3 3 1 1. 2. Para la matriz que resulte diagonalizable, ¾cuál es la base Hallar C tal que A = CDC −1 B de autovectores? ¾Quién es D? . Como vimos en el ejercicio, no cualquier matriz es diagonalizable. Dada una matriz A, sean λ1 , . . . , λk los autovalores distintos λi . A es diagonalizable si de A. Denimos Eλi el espacio de autovectores asociados al autovalor dim(Eλ1 ) + dim(Eλ2 ) + · · · + dim(Eλk ) = n. En particular, como distintos, A dim(Eλ ) ≥ 1 para λ autovector (¾por qué?), si A tiene n autovalores es diagonalizable. Ejercicio 5.4. Para cada una de las siguientes matrices, calcular en Python los autovalores, las dimensiones de los espacios asociados a cada autovalor y determinar si las matrices son diagonalizables. 101 2 3 4 1 102 3 4 A= 1 2 103 4 1 2 3 104 5 4 2 1 0 1 −1 − 1 A= −1 −1 3 0 1 1 −1 2 1. 2. 3.1. Multiplicidad algebraica y geométrica. valor λ de A, La multiplicidad aritmética Dada una matriz A ∈ Kn×n y un auto- denimos: terístico χA . de λ es la multiplicidad de λ como raíz del polinomio carac- 98 5. DIAGONALIZACIÓN multiplicidad geométrica La λ, de λ es la dimensión del espacio de autovectores asociado a o equivalentemente, la dimensión de Proposición 5.4. Dada una matriz Nu(A − λI). A ∈ Kn×n y un autovalor λ de A, la multiplicidad geomé- trica es siempre menor o igual que la multiplicidad aritmética. Demostración. Sea vectores de de Eλ , s la multiplicidad geométrica de el espacio de autovectores asociados a λ. λ y {v1 , . . . , vs } una base de auto- Completamos la base de Eλ a una base Kn : B = {v1 , . . . , vs , w1 , . . . , wn−s }. Consideramos la matriz de la transformación f A denida por λ .. [f ]B = B . λ 0 donde el primer bloque es una matriz de D en la base B: , s × s. Utilizando la fórmula para el cálculo de determinantes desarrollando una columna, es fácil ver que χ[f ]B (x) = det(xIn − [f ]B ) = (x − λ)s det(xIn − [f ]B ). Ya vimos que [f ]B y [f ]E tienen el mismo polinomio característico. Por lo tanto, λ como autovalor de A es al menos s, como queríamos ver. la multipli- □ cidad algebraica de Para una matriz A ∈ Kn×n , el polinomio característico tiene grado n y por lo tanto n raíces contando sus multiplicidades. Es decir, que la suma de las multiplicidades aritméticas de todos los autovalores es siempre exactamente n. Más aún, autovectores correspondientes a autovalores distintos son linealmente independientes. A ∈ Kn×n , sean v1 , . . . , vs autovectores de A correspondientes λ1 , . . . , λs . El conjunto {v1 , . . . , vs } es linealmente independiente. Proposición 5.5. Dada valores distintos a auto- Demostración. Consideramos una relación de dependencia lineal: a1 v1 + a2 v2 + · · · + as vs = 0 y supongamos que es la relación que involucra la menor cantidad posible de vectores, en particular todos los ai son no nulos. Si multiplicamos la igualdad por (A − λ1 In ) obtenemos: a1 (A − λ1 In )v1 + a2 (A − λ1 In )v2 + · · · + as (A − λ1 In )vs = 0, y simplicando, 0 + a2 (λ2 − λ1 )v2 · · · + as (λs − λ1 )vs = 0, que es una relación con menos términos no nulos que la anterior, lo cual es un absurdo. Combinando este resultado con la propiedad anterior, obtenemos el siguiente resultado. □ 3. DIAGONALIZACIÓN Proposición 5.6. Una matriz 99 A es diagonalizable si para todo autovalor λ de A, la multiplicidad artimética y la multiplicidad geométrica coinciden. 3.2. Propiedades de las matrices diagonalizables. Proposición 5.7. Si A = C −1 DC , A2 = C −1 DCC −1 DC = C −1 DDC = C −1 D 2 C k −1 DC . . . C −1 DC = C −1 D k C Inductivamente, A = C −1 = (C −1 DC)−1 = C −1 D −1 C . Si A inversible, A −1 p(D)C . Si p(x) ∈ R[x], p(A) = C En todos estos casos, como vimos anteriormente, la función aplicada a una matriz diagonal se puede calcular fácilmente aplicando la función a cada elemento de la diagonal. 3.3. Aplicación. Consideramos el siguiente problema como ejemplo de aplicación. Para guardar cadenas de caracteres en la computadora se pueden utilizar distintas codicaciones. Una codicación consiste en asignarla a cada carácter un número y ese número se guarda en binario en la memoria de la computadora. Dependiendo la codicación utilizada pueden utilizarse entre 1 y 4 bytes por carácter. Supongamos ahora que recibimos un mensaje en el que se han mezclado caracteres guardados utilizando 1 byte y caracteres utilizando 2 bytes, y no sabemos cuáles caracteres usan 1 byte y cuáles usan 2 bytes. ¾De cuántas formas distintas se puede interpretar el mensaje? Planteando el problema en forma más abstracta, tenemos un tablero de dividir el tablero en bloques, que pueden ser de 1×1 o de 2 × 1. n × 1, y queremos ¾De cuántas formas podemos hacerlo? Llamamos an a esta cantidad. Es posible demostrar la siguiente fórmula recursiva para los valores de la sucesión: a1 = 1 a2 = 2 an = an−1 + an−2 Es decir, los valores an forman una sucesión de Fibonacci. Para utilizar la teoría de transfor- macion lineales, nos gustaría encontrar una relación lineal entre cada término y el siguiente. Sin embargo, como está planteada la sucesión, cada término depende de los dos anteriores. Aplicamos un truco simple para plantear la relación de forma que cada término dependa solo del anterior. Plantear la ecuación de recurrencia en forma matricial de la siguiente forma: Si llamamos an an−1 1 1 an−1 = . 1 0 an−2 1 1 A= , obtenemos 1 0 an an−1 an−2 n−2 a2 =A = AA = · · · = (A) an−1 an−2 an−3 a1 100 5. DIAGONALIZACIÓN Por lo tanto, podemos dar una fórmula cerrada para la sucesión si encontramos una expresión cerrada para la matriz (A)n−2 . Esto podemos hacerlo diagonalizando la matriz. Calculamos autovalores y autovectores de A en Python. A = np.array([[1, 1], [1, 0]]) e = np.linalg.eig(A) print("Autovalores: ", e[0]) print("Autovectores: \n", e[1]) %% Autovalores: [ 1.61803399 -0.61803399] %% Autovectores: %% [[ 0.85065081 -0.52573111] %% [ 0.52573111 0.85065081]] A. 1.618 0 A = CBE CEB , 0 −0.618 Como hay dos autovalores distintos, podemos diagonalizar con CBE 0.85 −0.52 = 0.52 0.85 y Obtenemos −1 . CEB = CBE Esto nos permite dar la siguiente expresión para los términos de la sucesión: an an−1 (1.618)n−2 0 a = CBE CEB 2 . n−2 a1 0 (−0.618) Vemos en particular que los términos de la sucesión crecen con velocidad exponencial. Haciendo las cuentas en forma simbólica, podemos dar una expresión exacta para los términos de la sucesión (los autovalores de la matriz son √ √ 1+ 5 1− 5 2 y 2 . 4. Descomposición de Schur Si bien vimos que no toda matriz es diagonalizable, es decir, semejante a una matriz diagonal, vamos a ver que toda la matriz es semejante a una matriz triangular superior con los autovalores en la diagonal. Más aun, la matriz de cambio de base se puede tomar unitaria. En este caso, decimos que las matrices son unitariamente equivalentes. Concretamente, tenemos el siguiente resultado. A ∈ Kn×n con autovalores λ1 , . . . , λn U unitaria y T triangular superior tales que Teorema 5.1. Dada una matriz tintos), existen matrices (no necesariamente dis- A = UT U∗ y tii = λi . Es decir, autovalores de A A A son reales, la matriz U se puede tomar real y ortogonal. Recordemos que para una matriz T son semejantes. T triangular superior con los A ∈ Rn×n y los autovalores de es unitariamente equivalente a una matriz en la diagonal en cualquier orden arbitrario. Si U unitaria, vale U −1 = U ∗ , por lo tanto las matrices A y 5. AUTOVALORES Y AUTOVECTORES DE MATRICES ESPECIALES Demostración. Construimos Tomamos λ1 autovalor de Completando {w1 } A y U y T w1 autovector de paso a paso. Kn y n de C , a una base de demos obtener una base ortonormal 101 A con autovalor λ1 y ∥w1 ∥2 = 1. aplicando ortonormalización de Gram-Schmidt, po- {w(1) , z (2) , . . . , z (n) }. Construimos la matriz primera columna de AU1 U1 tomando estos vectores como λ1 w(1) , obtenemos λ1 ∗ ∗ , U1 AU1 = 0 A1 columnas de la matriz. Como la es ∗ Como U1 AU y A son semejantes, tienen el mismo polinomio característico. Luego A1 ∈ (n−1)×(n−1) (2) ∈ Cn−1 autovector normaliC tiene autovalores λ2 , . . . , λn . Tomamos ahora w A1 correspondiente al autovalor (n−1)×(n−1) C unitaria tal que zado de λ2 y repetimos el procedimiento. Construimos U2∗ A1 U2 = λ2 ∗ 0 A2 U2 ∈ , y denimos V2 = Las matrices V2 y U1 V2 1 0 0 U2 . V2∗ U1∗ AU1 V2 tiene la forma λ1 ∗ ∗ 0 λ2 . V2∗ U1∗ AU1 V2 = son unitarias, y 0 A2 Repitiendo este procedimiento, obtenemos matrices unitarias 1, . . . , n − 1, y matrices unitarias Vi ∈ Cn×n , i = 2, . . . , n − 1. Ui ∈ C(n−i+1)×(n−i+1) , i = La matriz U = U1 V2 V3 . . . Vn−1 es unitaria y U ∗ AU es la factorización que buscamos. Si todos los autovalores de A son reales, los autovectores pueden elegirse también reales y todas las operaciones se pueden hacer sobre los reales, lo que prueba la última información. □ 5. Autovalores y autovectores de matrices especiales Matrices ortogonales. Si A ∈ Kn×n es unitaria, todos sus autovalores cumplen |λ| = 1. Matrices normales. Decimos que una matriz A es normal si conmuta con la matriz adjunta, es decir, si AA∗ = A∗ A. Recordemos que dos matrices A y B son unitariamente equivalentes si existe U unitaria tal que U ∗ AU = B. Proposición 5.8. Si A es normal y B es unitariamente equivalente a A, entonces B es normal. 102 5. DIAGONALIZACIÓN Demostración. Tenemos que existe U unitaria tal que U ∗ AU = B . Por lo tanto, BB ∗ = U ∗ AU U ∗ A∗ U = U ∗ AA∗ U = U ∗ A∗ AU = U ∗ A∗ U U ∗ AU = B ∗ B. □ Decimos que una matriz tal que U AU ∗ A es unitariamente diagonalizable es diagonal. Esto es equivalente a decir que si existe una matriz A U unitaria tiene una base ortonormal de autovectores. Proposición 5.9. Si autovectores de A A es normal, entonces A es unitariamente diagonalizable. En particular, correspondientes a autovalores distintos son ortogonales. Demostración. Por la descomposición de Shur, sabemos que existe unitariamente equivalente a A. T triangular superior Por lo tanto, podemos probar el resultado para T. Hacemos la demostración probando mediante cálculos explícitos que una matriz T triangular y normal debe ser diagonal. Tenemos t̄11 0 · · · t̄21 t̄22 · · · .. . .. . . . . t̄n1 t̄n2 · · · 0 t11 t12 · · · 0 t22 · · · 0 . . . .. . . . . . . . t̄nn 0 0 ··· Comparando la casilla (1, 1) t1n t11 t12 · · · 0 t22 · · · t2n . = . . .. . . .. . . . tnn 0 0 ··· t1n t̄11 0 · · · t̄21 t̄22 · · · t2n . . . .. . . . . . . . tnn t̄n1 t̄n2 · · · del producto a ambos lados, t̄11 t11 = t11 t̄11 + n X t1j t̄j1 . j=2 Recordando que para cualquier a ∈ C, aā = āa = |a|2 , |t11 |2 = |t11 |2 + n X obtenemos |t1j |2 . j=2 y por lo tanto 0= n X |t1j |2 . j=2 Una suma de términos no-negativos solo puede dar 0 si todos sus términos son 0, luego t1j = 0, j = 2, . . . , n. Ahora usamos que la casillas (2, 2) de T ∗T y TT∗ t̄22 t22 = t22 t̄22 + n X son iguales y obtenemos t2j t̄j2 , j=3 de donde concluimos t2j = 0, j = 3, . . . , n. Repitiendo este mismo argumento para todas las casillas de la diagonal, obtenemos tij = 0, para todo j>i 0 0 . . . . t̄nn 5. AUTOVALORES Y AUTOVECTORES DE MATRICES ESPECIALES 103 y como tij = 0, porque T para todo es triangular superior, concluimos que T j<i □ es diagonal. Matrices simétricas y hermitianas. Una matriz A ∈ Rn×n es simétrica si A = AT . Más generalmente, A ∈ Cn×n Proposición 5.10. Si 1. 2. 3. x∗ Ax es Hermitiana si A A = A∗ . es Hermitiana, entonces x ∈ Cn , todos los autovalores de A son reales, S ∗ AS es Hermitiana para toda S ∈ Cn×n . es real para todo Demostración. Para 1, calculamos x∗ Ax = (x∗ Ax)∗ = x∗ A∗ x = x∗ Ax. Como el conjugado de Para 2, si x∗ Ax Ax = λx es igual a si mismo, es un número real. y suponemos x normalizado ∥x∥2 = x∗ x = 1, entonces λ = λx∗ x = x∗ λx = x∗ Ax, que es un número real por 1. Por último, (S ∗ AS)∗ = S ∗ A∗ S = S ∗ AS , y por lo tanto S ∗ AS es Hermitiana. □ Ejemplo 5.3. Buscamos una base ortogonal de autovectores de −4 2 −2 A = 2 −7 4 . −2 4 −7 det(A − λI3 ) = −(λ3 + 18λ2 + 81λ + 108) = −(λ + 12)(λ + 3)2 , autovalores λ1 = −12 y λ2 = −3. Calculamos dos Calculando los núcleos de A − λi I3 , i = 1, 2, por lo tanto hay obtenemos los espacios de autovectores Eλ1 = ⟨(1, −2, 2)⟩ Eλ2 = ⟨(2, 1, 0), (2, 0, −1)⟩ Por la Proposición 5.8, los espacios de autovalores correspondientes a distintos autovectores son ortogonales. Por lo tanto, para obtener una base de autovectores ortogonales, solo debemos ortogonalizar cada uno de los autoespacios por separado. √ 5 una base ortonormal 5 (1, −2, D √2) y para encontrar E √ 3 5 de Eλ2 aplicamos Gram-Schmidt y obtenemos Eλ2 = 3 (2, 1, 0), 15 (2, −4, −5) . n√ o √ √ 5 3 5 La base ortogonal de autovectores es B = (1, −2, 2), (2, 1, 0), (2, −4, −5) . 5 3 15 El autovector (1, −2, 2) lo normalizamos a Ejercicio 5.5. Calcular los autovalores y autovectores de las siguientes matrices. 1 0 0 A = 0 cos α − sin α, 0 sin α cos α para α = π/2 y α = π/4. 104 5. DIAGONALIZACIÓN 0 0 −2 A = 0 −2 0 −2 0 −3 En el segundo punto, encontrar una matriz A= Q ortogonal y una matriz D diagonal tales que QT DQ. 5.1. Matrices denidas positivas. Cuando A A A es es es simétrica, con autovalores QUITAR λ1 , . . . , λ n , denimos: denida positiva si λi (A) > 0 para todo 1 ≤ i ≤ n. semidenida positiva si λi (A) ≥ 0 para todo 1 ≤ i ≤ n. Proposición 5.11. A ∈ Rn×n es semidenida positiva si y solo si v T Av ≥ 0 para todo v ∈ Rn . Demostración / ejemplo: Si A= λ1 0 0 λ2 , y v = (v1 , v2 ), λ1 0 v1 v Av = v1 v2 0 λ2 v2 λ1 v1 = v1 v2 λ2 v2 2 = λ1 v1 + λ2 v22 , T y λ1 v12 + λ2 v22 ≥ 0 si Proposición 5.12. λ1 , λ2 ≥ 0. AT A y AAT son matrices simétricas y semidenidas positivas. □ Demostración. Ejercicio. 6. El método de la potencia Veamos cómo podemos calcular mediante aproximaciones numéricas los autovalores de una matriz. Comencemos con un ejemplo. Consideremos la matriz 0.9 0.075 0.025 0.05 A = 0.15 0.8 0.25 0.25 0.5 Tomamos un vector cualquiera no nulo, por ejemplo distintos valores de v = (1, 2, 3) y calculamos Ak v para k . O, equivalentemente, calculamos distintos términos de la sucesión denida recursivamente por v (0) = (1, 2, 3) v (k) = Av (k−1) Lo programamos en Python. 6. EL MÉTODO DE LA POTENCIA 105 def estado(A, v, k): for i in range(k): v = A @ v return(v) A = np.array([[0.9, 0.075, 0.025], [0.15, 0.8, 0.05], [0.25, 0.25, 0.5]]) v = np.array([1,2,3]) print(estado(A, v, 1)) print(estado(A, v, 10)) print(estado(A, v, 100)) print(estado(A, v, 1000)) %% %% %% %% [1.125 1.9 2.25 ] [1.41762971 1.47373372 1.45503428] [1.4375 1.4375 1.4375] [1.4375 1.4375 1.4375] Observamos en el experimento que cierto, entonces Aw = w. v (k) tiende a w = (1.4375, 1.4375, 1.4375). Si esto es Luego encontramos un autovector de autovalor 1. ¾Cómo podemos demostrar lo que observamos? Calculamos autovalores y autovectores de A y vericamos si A es diagonalizable. e = np.linalg.eig(A) print(e[0]) print(e[1]) %% [1. 0.74142136 0.45857864] %% [[-0.57735027 -0.44371857 -0.03400257] %% [-0.57735027 0.81130706 -0.13017638] %% [-0.57735027 0.38065035 0.99090763]] Obtenemos que B = {w1 , w2 , w3 } A es diagonalizable con autovalores λ1 = 1, λ2 = 0.74, λ3 = 0.45. Llamamos a la base de autovectores. Luego podemos escribir a cualquier vector la base v (0) ∈ R3 como combinación lineal de vectores de B: v (0) = a1 w1 + a2 w2 + a3 w3 . Usando esta representación, ¾quién es Av (0) ? Obtenemos v (1) = Av (0) = a1 Aw1 + a2 Aw2 + a3 Aw3 = a1 λ1 w1 + a2 λ2 w2 + a3 λ3 w3 106 5. DIAGONALIZACIÓN y si multiplicamos nuevamente por A, v (2) = A2 v = A(Av) = a1 Aλ1 w1 + a2 Aλ2 w2 + a3 Aλ3 w3 = a1 λ21 w1 + a2 λ22 w2 + a3 λ23 w3 Repitiendo el mismo razonamiento obtenemos v (k) = Ak v = a1 (λ1 )k w1 + a2 (λ2 )k w2 + a3 (λ3 )k w3 . Como para todo |λ2 | < 1 y |λ3 | < 1, tenemos que (λ2 )k −−−→ 0 k→∞ k ∈ N. y (λ3 )k −−−→ 0. k→∞ Por otro lado, λk1 = 1 Tomando límite, concluimos entonces v (k) −−−→ a1 w1 , k→∞ (k) tiende a un vector de autovalor 1, que es el autovalor de mayor módulo de la matriz. es decir v En general, las matrices pueden tener autovalores de cualquier módulo y la sucesión anterior podría tender a 0 o diverger o no tener límite. Para el caso general, realizamos la siguiente modicación. Tomamos un vector cualquiera no nulo normalizamos el resultado a norma-2 v (k) = Calculamos en Python v (0) y en cada iteración de la recursión anterior = 1: Av (k−1) , ∥Av (k−1) ∥2 para k ≥ 1. los vectores de esta sucesión tomando 3 1 2 A = 0 1 −2 1 2 4 def estado(A, v, k): for i in range(k): Av = A @ v v = Av / np.linalg.norm(Av, 2) return(v) A = np.array([[3, 1, 2], [0, 1, -2], [1, 2, 4]]) v = np.array([1,2,3]) print(estado(A, v, 1)) print(estado(A, v, 10)) print(estado(A, v, 100)) print(estado(A, v, 1000)) %% %% %% %% [ [ [ [ 0.53295174 0.74404261 0.74278135 0.74278135 -0.19380063 -0.37049752 -0.37139068 -0.37139068 0.82365269] 0.55599656] 0.55708601] 0.55708601] v (0) = (1, 2, 3) y 6. EL MÉTODO DE LA POTENCIA Observamos que en este caso también existe límite cierto en este caso también que w v (k) −−−→ w = (2.97, −1.49, 2.23). k→∞ w ¾Será es un autovector? ¾Cuál es el autovalor correspondiente? Para responder estas preguntas, utilizamos nuevamente que si la fórmula recursiva a 107 obtenemos nuevamente w= w. w es el límite de la sucesión, al aplicar Es decir, Aw , ∥Aw∥2 y despejando, obtenemos Aw = ∥Aw∥2 w. w es Python). Concluimos que cuenta en autovector de A con autovalor λ = ∥Aw∥2 = 4 (vericar esta última Para demostrar el resultado en este caso, calculamos nuevamente autovalores y autovectores de A: e = np.linalg.eig(A) print(e[0]) print(e[1]) %% [4.+0.j 2.+1.j 2.-1.j] %% [[ 0.74278135+0.j %% [-0.37139068+0.j %% [ 0.55708601+0.j 0.35355339-0.35355339j 0.35355339+0.35355339j] -0.70710678+0.j -0.70710678-0.j ] 0.35355339+0.35355339j 0.35355339-0.35355339j]] Nuevamente la matriz es diagonalizable con autovalores λ1 = 4, λ2 = 2 + i, λ3 = 2 − i. Aplicando el razonamiento anterior, v (1) = Av (0) , ∥Av (0) ∥2 (0) v (2) Av A ∥Av (0) ∥ Av (1) 2 = = (0) (1) Av ∥Av ∥2 A ∥Av(0) ∥ 2 = 2 ... v (k) = Av (k−1) Ak v (0) = . ∥Av (k−1) ∥2 ∥Ak v (0) ∥2 A2 v (0) ∥Av (0) ∥2 ∥A2 v (0) ∥2 ∥Av (0) ∥2 = A2 v (0) ∥A2 v (0) ∥2 108 5. DIAGONALIZACIÓN Obtenemos en este caso, v (k) = = Ak v (0) ∥Ak v (0) ∥2 a1 (λ1 )k w1 + a2 (λ2 )k w2 + a3 (λ3 )k w3 ∥a1 (λ1 )k w1 + a2 (λ2 )k w2 + a3 (λ3 )k w3 ∥2 k k λ2 k λ1 a1 w1 + a2 λ1 w2 + a3 λλ31 w3 = |λ1 |k a1 w1 + a2 = En nuestro ejemplo, tanto v (k) tiende a λ1 |λ1 | λ1 = 4 k y λ2 λ1 k w2 + a3 λ3 λ1 k k w3 2 k a1 w1 + a2 λλ12 w2 + a3 λλ13 w3 k k a1 w1 + a2 λλ21 w2 + a3 λλ31 w3 λ1 |λ1 | k = 1. Los cocientes 2 λi /λ1 , i = 2, 3 tienden a 0 y por lo w1 /∥w1 ∥2 . λ1 no es un número real positivo, λ1 /|λ1 | es un número (complejo) de k módulo 1, y (λ1 /|λ1 |) tiene módulo 1 para todo k pero no tiene límite. Sin embargo, a partir Observamos que si de esta sucesión podemos aproximar el valor de λ1 y conociendo λ1 podemos obtener fácilmente un autovector correspondiente a este autovalor. Esta estrategia para calcular el autovalor de módulo máximo se conoce como el método de la potencia. Vamos a presentar el método realizando algunas suposiciones que facilitan la demostración. El método se puede aplicar en condiciones más generales, incluso cuando A no es diagonalizable, pero en ese caso necesitamos utilizar la forma de Jordan de la matriz u otras herramientas que escapan el contenido de este apunte para la demostración. Lema 5.1. Si v es un autovector de A ∈ Cn×n r(v) = es igual al autovalor de autovalor λ, el cociente de Rayleigh v T Av vT v λ. La demostración es inmediata usando que si v es autovector de autovalor λ, Av = λv . A partir de la denición tenemos muchas formas de calcular el autovalor correspondiente a un v de un autovector, r(v) α = r(v) minimiza la norma autovector. Se puede demostrar que cuando tenemos una aproximación es el valor que más se parece a un autovalor, en el sentido de que de ∥Av − αv∥2 . Algorithm 1: Método de la potencia A ∈ Cn×n , v (0) ∈ Cn ; for k = 1, 2, . . . do Av (k−1) v (k) = ∥Av (k−1) ∥ ; 2 rk = end (v (k) )T Av (k) (v (k) )T v (k) 7. NORMA-2 DE MATRICES 109 A ∈ Cn×n una matriz diagonalizable con base de autovectores B = {w1 , . . . , wn } y autovalores correspondientes {λ1 , . . . , λn } con |λ1 | > |λ2 | ≥ · · · ≥ |λn | ≥ 0 (existe un único (0) ∈ Cn tal que en su escritura en la base B el autovalor de módulo máximo). Dado un vector v coeciente de w1 es no nulo, el algoritmo 1 satisface |rk − λ1 | → 0 cuando k → ∞. Teorema 5.2. Sea Demostración. Por hipótesis, podemos escribir v (0) = a1 w1 + · · · + an wn , con a1 ̸= 0. Siguiendo los pasos del ejemplo, obtenemos v (k) = λ1 |λ1 | k k a1 w1 + a2 λλ21 w2 + · · · + an λλn1 wn . k k λ2 λn a1 w1 + a2 λ1 w2 + · · · + an λ1 wn k 2 Despejando, |λ1 | λ1 k y por lo tanto, llamando v (k) k k a1 w1 + a2 λλ21 w2 + · · · + an λλn1 wn = k k a1 w1 + a2 λλ21 w2 + · · · + an λλn1 wn ṽ (k) = |λ1 | λ1 k v (k) , ṽ (k) −−−→ k→∞ Como ṽ (k) es igual a v (k) ṽ (k) a 1 w1 . ∥a1 w1 ∥2 multiplicado por un escalar, podemos fácilmente ver que r(ṽ (k) ) = Como 2 (ṽ (k) )T Aṽ (k) (v (k) )T Av (k) = = r(v (k) ). (ṽ (k) )T ṽ (k) (v (k) )T v (k) tiende a un autovector de A, concluimos lı́m r(v (k) ) = lı́m r(ṽ (k) ) = λ. k→∞ k→∞ □ 7. Norma-2 de matrices El estudio de autovalores y autovectores que realizamos en este capítulo nos permite dar una mejor interpretación a la norma-2 de matrices. Recordemos que dada una matriz una norma vectorial ∥· ∥n en Kn , denimos la norma inducida ∥A∥ = máx m 0̸=x∈K A ∈ Kn×n ∥Ax∥ = máx ∥Ax∥. ∥x∥ x∈Km ,∥x∥=1 En el caso de matrices diagonales, el cálculo de normas matriciales es muy simple. y 110 5. DIAGONALIZACIÓN Proposición 5.13. Si A diagonal, λ1 0 0 0 λ2 0 A = 0 0 λ3 .. . . . . 0 0 ··· ... ··· ··· .. . 0 0 0 , . . . λn ∥A∥2 = máx{|λi |}. □ Demostración. Ejercicio. Esa simple observación motiva la siguiente denición. Definición 5.2. Dada A ∈ Kn×n denimos el radio espectral de ρ(A) = máx{|λ|, A como con λ autovalor de A} A ∈ Rn×n es simétrica, sea B = {v1 , · · · , vn } una base n autovectores y {λ1 , λ2 , · · · λn } ⊂ R los respectivos autovalores. Sea x ∈ R tal escribiendo x en la base B se tiene n X x= αi vi , Supongamos que ortonormal de que ∥x∥2 = 1, i=1 y por ser B un conjunto ortonormal tenemos por la Observación 3.4 1= ∥x∥22 = n X αi2 . i=1 Por otro lado, como Ax = Pn i=1 αi λi vi , usando nuevamente la Observación 3.4 n X ∥Ax∥22 = αi2 λ2i . i=1 Por lo tanto n ∥Ax∥2 X 2 2 = αi λi ≤ ρ(A)2 , ∥x∥2 , ∀x, ∥x∥ ≤ 1 i=1 ya que cada |λi | ≤ ρ(A). Por otro lado, llamando j x = vj , se tiene a un índice tal que el vector de norma 1 ∥Ax∥2 = |λj |2 ∥x∥22 = ρ(A)2 . En denitiva sup ∥Ax∥2 = ρ(A)2 . ∥x∥=1 Resultado que recuadramos debajo. Si A ∈ Rn×n , AT = A entonces ∥A∥2 = ρ(A). |λj | = ρ(A) y considerando 7. NORMA-2 DE MATRICES 111 Podemos hacer una cuenta similar para el caso general. En efecto, consideremos ahora Rn×n A∈ no necesariamente simétrica. Queremos calcular sup ∥Ax∥22 = (Ax)T Ax = xT (AT A)x ∥x∥2 =1 M = AT A, resulta simétrica. Consideremos una base B = {v1 , · · · , vn } ortonormal de autovectores de M y {λ1 , λ2 , · · · λn } ⊂ R los respectivos autovalores. Notemos que M es n semidenida positiva (ver Denición 3.9), pues de la ecuación previa se ve que para todo x ∈ R Si llamamos xT M x ≥ 0, λi ≥ 0 y en particular se sigue que pues si vi ∈ ker(A) debe ser λi = 0 y en caso contrario 0 < viT M vi = viT λi vi = λi . Con esta información escribimos como antes x= n X 1 = ∥x∥22 = αi vi , i=1 n X αi2 , Mx = i=1 de donde por la ortonormalidad de los n X αi M v i = i=1 n X λi αi vi i=1 vi xT M x = n X λi αi2 . i=1 Luego, sup ∥x∥2 =1 ∥Ax∥22 n X = P sup n i=1 α2i =1 i=1 λi αi2 = λmax = ρ(M ). En denitiva tenemos Sea A ∈ Rn×n , entonces a ∥A∥2 = aTambién q ρ(AT A). vale la demostración escrita mas arriba para el caso de matrices rectangulares. Ejercicio 5.1. Verique que de la última expresión se obtiene como caso particular la de las matrices simétricas. Otra propiedad importante es la siguiente Proposición 5.14. Sea A ∈ Kn×n , entonces ρ(A) = ı́nf{∥A∥ : ∥ · ∥ es Demostración. Solo vamos a probar que una norma subordinada}. ρ(A) ≤ ∥A∥ para cualquier norma subordinada. La otra desigualdad es mas complicada y no la probaremos aquí. en Si K = C la demostración es mas sencilla. Sea λ autovalor de A y sea ∥·∥ una norma matricial Cn×n subordinada a la norma vectorial1 ∥ · ∥. Luego existe 0 ̸= v autovector de autovalor λ. 1 Usamos la misma notación para ambas normas ya que el contexto indica cuando estamos usando una o la otra. 112 5. DIAGONALIZACIÓN Podemos suponer que ∥v∥ = 1 y entonces Av = λv, ∥Av∥ ≤ |λ|∥v∥ = |λ|. de donde Por lo tanto, para todo λ autovalor ∥A∥ = sup ∥Ax∥ ≥ ∥Av∥ ≥ |λ|. ∥x∥=1 de donde ∥A∥ ≥ ρ(A). Si K=R hay un problema si intentamos repetir el argumento previo vemos que funciona per- fectamente si λ ∈ R, sin embargo el autovalor y el autovector podrían ser complejos y no tener ∥v∥ si se trata de una norma en Rn . Supongamos entonces que λ = a+ib ∈ C sentido la expresión y escribamos entonces, 2 v = Re(v) + iIm(v) y Av = (a + ib)(Re(v) + iIm(vb)), luego ARe(v) = aRe(v) − bIm(v) AIm(v) = bRe(v) + bIm(v), y entonces ∥ARe(v)∥22 = a2 ∥Re(v)∥22 − 2ab⟨Im(v), Re(v)⟩ + b2 ∥Im(v)∥22 ∥AIm(v)∥22 = b2 ∥Re(v)∥22 − 2ab⟨Im(v), Re(v)⟩ + a2 ∥Im(v)∥22 sumando miembro a miembro ∥ARe(v)∥22 + ∥AIm(v)∥22 = (a2 + b2 ) ∥Re(v)∥22 + ∥Im(v)∥22 de donde ∥Re(v)∥22 + ∥Im(v)∥22 ∥A∥22 ≥ (a2 + b2 ) ∥Re(v)∥22 + ∥Im(v)∥22 y entonces ∥A∥22 ≥ (a2 + b2 ) = |λ|2 . Es decir -ya que λ es arbitrario- ∥A∥2 ≥ ρ(A). Sea ahora ∥·∥ una norma arbitaria en Rn y k ∈ N: que además (por Proposición 3.2) existe una constante C∥Ak ∥. C -independiente de 3 ρ(A)k ≤ ρ(Ak ) y k - tal que ∥Ak ∥2 ≤ por un lado sabemos que Por lo tanto, ρ(A)k ≤ ρ(Ak ) ≤ ∥Ak ∥2 ≤ C∥Ak ∥ ≤ C∥A∥k , donde hemos usado (3.8) en la última desigualdad. Tomando raíz k−ésima ρ(A) ≤ C 1/k ∥A∥, tomando k→∞ se obtiene ρ(A) ≤ ∥A∥, □ como queríamos probar. 2 Debemos este argumento a Ariel Lombardi, colega de la UNR. 3 En realidad vale el igual. Para ver la desigualdad basta notar que si k de A . λ es autovalor de A entonces λk lo es 8. EL ALGORITMO QR 113 Como aplicación, obtenemos un criterio para determinar cuándo las potencias de una matriz tienden a la matriz nula. Proposición 5.15. Sea M ∈ Kn×n , se tiene que lı́m ∥M k ∥ = 0 k→∞ ∥·∥ ρ(M ) < 1. para cierta norma y solo sí Demostración. Si (y por ende para cualquier otra ya que son todas equivalentes) sí ρ(M ) < 1, entonces existe ∥·∥ tal que ∥M ∥ = µ < 1 y listo. Por otro lado, de donde necesariamente ρ(M )k = ρ(M k ) ≤ ∥M k ∥ → 0, ρ(M ) < 1. □ 8. El algoritmo QR Vimos anteriormente el método de la potencia para calcular el autovalor de mayor módulo de una matriz. En este sección, veremos otro algoritmo que nos permite aproximar todos los autovalores y autovectores de una matriz de forma muy eciente. Una demostración completa de este algoritmo excede las intenciones de este apunte, por lo tanto nos limitaremos a ver las ideas principales. La primera idea es extender el método de la potencia a subespacios. El método de la potencia nos permite calcular el autovalor de mayor módulo mediante una sucesión {v (k) } con v (k) = Si bien, en general, λ1 |λ1 | k k k a1 w1 + a2 λλ21 w2 + · · · + an λλn1 wn k k a1 w1 + a2 λλ12 w2 + · · · + an λλn1 wn {v (k) } ↛ w1 2 (ni a un múltiplo jo), podemos intuitivamente pensar en convergencia de subespacios: ⟨v (k) ⟩ → ⟨w1 ⟩. ¾Cómo calculamos los demás autovalores y autovectores? Si aplicamos el método (sin normalizar) a dos vectores en vez de uno, podemos escribir (k) v1 = (λ2 ) k (k) = (λ2 ) k v2 ! k k λ3 λn w1 + a2 w2 + a3 w3 + · · · + an wn , a1 λ2 λ2 ! k k k λ1 λ3 λn b1 w 1 + b2 w 2 + b3 w3 + · · · + bn wn . λ2 λ2 λ2 Intuitivamente vemos que 1. Si bien (k) (k) λ1 λ2 k (k) (k) ⟨v1 , v2 ⟩ → ⟨w1 , w2 ⟩ ⟨v1 , v2 ⟩ → ⟨w1 , w2 ⟩, cuando individualmente (k) k → ∞. ⟨v1 ⟩ → ⟨w1 ⟩ y (k) ⟨v2 ⟩ → ⟨w1 ⟩. 114 5. DIAGONALIZACIÓN (k) v2 2. Si logramos sacarle a ⟨w2 ⟩. {w1 , . . . , wn } 3. Si la componente en la dirección de base ortonormal y 4. Por lo tanto, si conocemos w1 , (k) w1 , vamos a obtener ⟨ṽ2 ⟩ → v = a1 w1 + · · · + an wn , tenemos (v, w1 ) = a1 . podemos hacer v − (v, w1 )w1 = a2 w2 + · · · + an wn . 5. En nuestro caso, (k) (k) ⟨v2 − (v2 , w1 )w1 ⟩ → ⟨w2 ⟩. w1 En general, no conocemos Si (k) ⟨v1 ⟩ → ⟨w1 ⟩ y denimos pero podemos usar (k) (k) u1 = v1 , (k) v1 . (k) u1 (k) ũ1 = (k) , ∥u1 ∥ (k) (k) u2 obtenemos = (k) v2 − (k) (k) (k) ⟨ũ1 , v2 ⟩ũ1 (k) ũ2 y u2 = (k) , ∥u2 ∥ (k) ⟨ũ2 ⟩ → ⟨w2 ⟩. Observación 5.1. (k) (k) {ũ1 , ũ2 } es el resultado de aplicar Gram-Schmidt a (k) (k) {v1 , v2 }. Analizamos ahora el caso de matrices simétricas. independientes podemos generar sucesiones de vectores (0) (0) {v1 , . . . , vn } de vectores (k) tales que ⟨ũi ⟩ → ⟨wi ⟩. Si extendemos el razonamiento a un conjunto inicial linealmente Trabajando con matrices, podemos aplicar el método simultáneamente a un conjunto de vectores. Obtenemos el siguiente método para matrices simétricas. Algorithm 2: Iteración simultánea A matriz (simétrica) con autovalores |λ1 | > |λ2 | > . . . > |λn |; B (0) = In (o cualquier matriz de rango máximo); for k = 1, 2, . . . do B̃ (k) = AB (k−1) ; B̃ (k) = Q(k) R(k) , descomposición QR de B̃ (k) ; B (k) = Q(k) , el resultado de aplicar G-S a las columnas de B̃ (k) end Si (k) ci es la i-ésima columna de B (k) , (k) ⟨ci ⟩ → ⟨wi ⟩. ¾Cómo aproximamos los autovalores? La matriz A en la base B (k) dada por B (k) , T [A]B(k) = (B (k) ) AB (k) , es una matriz diagonal con los autovalores en la diagonal. Ejercicio 5.6. Aplicar el algoritmo a una matriz simétrica A arbitraria y comparar los auto- valores y autovectores obtenidos con los que se obtienen por el comando eig de Python. 9. TEOREMA DE LOS CÍRCULOS DE GERSHGORIN 115 ¾Qué sucede si aplicamos el método anterior para matrices generales con autovalores |λ1 | > |λ2 | > . . . > |λn |? Si bien no se cumple (k) ⟨ṽi ⟩ → ⟨wi ⟩ para todo i, obtenemos (k) ⟨ṽ1 ⟩ → ⟨w1 ⟩ (k) (k) ⟨ṽ , ṽ ⟩ → ⟨w , w ⟩ 1 1 2 en cambio 2 . . . (k) ⟨ṽ1 , . . . , ṽn(k) ⟩ → ⟨w1 , . . . , wn ⟩ Por lo tanto, T [A]B(k) = (B (k) ) AB (k) , tiende a una matriz triangular superior con los autovalores en la diagonal. Finalmente, acomodando las operaciones convenientemente, obtenemos el siguiente método. Algorithm 3: Método QR A(0) = A ∈ Cn×n for k = 0, 1, 2, . . . con autovalores do Calcular la descomposición A(k+1) end = A QR de A(k) , A(k) = Q(k) R(k) ; R(k) Q(k) Proposición 5.16. La matriz de |λ1 | > |λ2 | > . . . > |λn |; A(k) tiende a una matriz triangular superior con los autovalores en la diagonal. Observación 5.2. La matriz que se obtiene en cada paso es semejante a la matriz del paso anterior: (Q(k) )T A(k) Q(k) = (Q(k) )T (Q(k) R(k) )Q(k) = R(k) Q(k) = A(k+1) , por lo tanto las matrices A(k) tiene los mismos autovalores para todo k = 0, 1, 2, . . . A arbitraria y comparar los autovalores obeig de Python. ¾Cómo podemos calcular los Ejercicio 5.7. Aplicar el algoritmo a una matriz tenidos con los que se obtienen por el comando autovectores? Ejercicio 5.8. ¾Qué sucede si hay autovalores del mismo módulo? Analizar el caso A ∈ Rn×n con autovalores complejos conjugados. 9. Teorema de los círculos de Gershgorin Esta es otra herramienta en la caja de los buscadores de autovalores. A ∈ Cn×n , denimos para 1 ≤ i ≤ n, Ri la suma i-ésima la de A fuera de la diagonal, X Ri = |aij |. Dada la de los módulos de los elementos de j̸=i Llamamos D(aii , Ri ) ⊂ C al disco cerrado centrado en aii de radio Ri . 116 5. DIAGONALIZACIÓN Teorema 5.3. Todos los autovalores de A están en alguno de los discos de Gershgorin D(aii , Ri ). 10. Procesos de Markov Estudiamos ahora los procesos de Markov como aplicación de diagonalización de matrices. Comenzamos por un ejemplo. Ejemplo 5.4. En una ciudad, todos los adultos tienen teléfono celular de una de las tres com- pañías A, B o C. Cada mes, algunos clientes se cambian de compañía, según la siguiente fórmula: ak+1 0.9 0.15 0.25 ak bk+1 = 0.075 0.8 0.25 bk . ck+1 0.025 0.05 0.5 ck La casillas de la matriz indican que porcentaje de los clientes de cada compañía se queda en la misma compañía o se cambian a otra compañía. Por ejemplo 90 % de los clientes de la compañía A en 15 % de los clientes de la compañía B se pasan lo que signica que el A en el mes k + 1, el ak+1 = 0.9ak + 0.15bk + 0.25ck , el mes k siguen en la compañía a A y el 25 por ciento de los clientes de la compañía C se pasan a A. Queremos ver cuántos clientes hay en cada compañía con el paso del tiempo, y si esas cantidades converge a algún valor límite. Para esto, contestamos las siguientes preguntas utilizando Python. Si inicialmente hay 1000 clientes en cada compañía, es decir 1. hallar 2. hallar v1 = (a1 , b1 , c1 ) v10 y v100 , y v0 = (a0 , b0 , c0 ) = (1000, 1000, 1000), v2 = (a2 , b2 , c2 ), 3. hallar (si existe) el límite de la cantidad de clientes en cada compañía, es decir Para contestar 1, calculamos v1 = Av0 y lı́mk→∞ (ak , bk , ck ). v2 = Av1 . import numpy as np A = np.array([[0.9, 0.15, 0.25], [0.075, 0.8, 0.25] , [0.025, 0.05, 0.5]]) v0 = np.array([1000, 1000, 1000]) v1 = A @ v0 print("v1 = ", v1) v2 = A @ v1 print("v2 = ", v2) %% v1 = %% v2 = [1300. 1125. 575.] [1482.5 1141.25 376.25] En general, para calcular v (k) , tenemos v (k) = Av (k−1) = A(Av (k−2) ) = · · · = A(A(. . . (Av (0) ) . . . )), y podemos calcular estos vectores mediante una iteración en Python: 11. MATRICES DE MARKOV 117 v = np.array([1000, 1000, 1000]) k = 10 for i in range(k): v = A @ v print("v(", k, ") = ", v) v = np.array([1000, 1000, 1000]) k = 100 for i in range(k): v = A @ v print("v(", k, ") = ", v) %% v( 10 ) = [1844.0598284 965.482631 %% v( 100 ) = [1875. 937.5 187.5] 190.4575406] Finalmente, para calcular el límite mediante cálculos en Python, tomamos valores mayores de k y vemos si las coordenadas de v (k) se estabilizan. v = np.array([1000, 1000, 1000]) k = 1000 for i in range(k): v = A @ v print("v(", k, ") = ", v) v = np.array([1000, 1000, 1000]) k = 10000 for i in range(k): v = A @ v print("v(", k, ") = ", v) %% v( 1000 ) = [1875. %% v( 10000 ) = [1875. Observamos que 937.5 187.5] 937.5 187.5] lı́mk→∞ v (k) = (1875, 937.5, 187.5). A partir de este ejemplo, nos planteamos las siguientes preguntas: v (k) ? (∞) = lı́m (k) . existe v k→∞ v ¾Cómo podemos analizar el comportamiento de ¾Será cierto que para cualquier vector inicial, Para contestar estas preguntas vamos a estudiar los llamados procesos de Markov. 11. Matrices de Markov Definición 5.3. Decimos que una matriz A ∈ Rn×n es de Markov (o estocástica) si 118 5. DIAGONALIZACIÓN Todas las casillas de A son números reales no negativos La suma de las casillas en cualquier columna de A es siempre 1. En particular, estas dos condiciones implican que todas las coordenadas de la matriz deben ser números entre 0 y 1. Observamos que la matriz del ejemplo cumple estas condiciones. 11.1. Espectro de las matrices de Markov. ∞ proceso de Markov, debe cumplir Av = v∞ Observamos que si v ∞ , es decir es el límite de un v ∞ es un autovector de A de autovalor 1. Estudiamos ahora entonces los autovalores y autovectores de las matrices estocásticas. Proposición 5.17. Si A es una matriz de Markov, Demostración. Como las columnas de A λ=1 es un autovalor de suman 1, si A. v = (1, 1, 1, . . . , 1), AT v = v, luego v es autovector de AT con autovalor 1. Como los autovalores de A y AT son los mismos, λ = 1 es autovalor de A (aunque no necesariamente el autovector correspondiente v = (1, 1, . . . , 1)). □ concluimos que es Proposición 5.18. Si A Demostración. Si es una matriz de Markov y Av = λv , para λ es un autovalor de A, entonces |λ| ≤ 1. 1 ≤ i ≤ n, |λ||vi | = |λvi | = |Ai1 v1 + · · · + Ain vn | ≤ |Ai1 v1 | + · · · + |Ain vn | = Ai1 |v1 | + · · · + Ain |vn | (para la última igualdad utilizamos que todas las coordenadas de Ahora sumamos sobre todos los A son no-negativas). i: |λ|(|v1 | + · · · + |vn |) ≤ (A11 |v1 | + · · · + A1n |vn |) + · · · + (An1 |v1 | + · · · + Ann |vn |) = (A11 + · · · + An1 )|v1 | + · · · + (A1n + · · · + Ann )|vn | = |v1 | + · · · + |vn | Como |v1 | + · · · + |vn | ≥ 0, obtenemos |λ| < 1. A es una matriz de Markov, λ ̸= 1 λ, entonces v1 + · · · + vn = 0. Proposición 5.19. Si autovector asociado a Demostración. Si Av = λv , para □ es un autovalor de A y v es un 1 ≤ i ≤ n, λvi = Ai1 v1 + · · · + Ain vn y λ(v1 + · · · + vn ) = (A11 v1 + · · · + A1n vn ) + · · · + (An1 v1 + · · · + Ann vn ) = (A11 + · · · + An1 )v1 + · · · + (A1n + · · · + Ann )vn = v1 + · · · + vn Como λ ̸= 1, debe ser v1 + · · · + vn = 0. □ 11. MATRICES DE MARKOV 11.2. Probabilidades y proporciones. tintos, podemos considerar a la casillas pasar del estado j al estado (i, j) 119 Si consideramos un sistema con n estados dis- de una matriz de Markov como la probabilidad de i. Ejemplo 5.5. Para modelar el estado del tiempo en una ciudad, consideramos tres estados: soleado, nublado y lluvioso, y la matriz de Markov que indica la probabilidad de pasar de un estado a otro de un día a otro: 0.6 0.2 0.1 0.3 0.6 0.4 . 0.1 0.2 0.5 Si consideramos que inicialmente tenemos la misma probabilidad de que el día sea soleado, nublado o lluvioso, es decir, comenzamos con un vector inicial de probabilidades: v (0) = (1/3, 1/3, 1/3) calculando v (k) podremos estimar la probabilidad de que llueva en un día especíco, o calculando v (∞) podemos estimar la probabilidad de que llueva a largo plazo. 11.3. Conjunto de estados. Denimos el conjunto Pn de estados Pn = {π ∈ Rn+ : π1 + · · · + πn = 1} que podemos pensar como vectores de probabilidades. M ∈ Rn×n Proposición 5.20. Si π ∈ Pn Proposición 5.21. Si M ∈ Rn×n , y existe es una matriz de Markov, π ∈ Pn π = (π1 , . . . , πn ) M |π| = |π| (ejercicio). Demostración. Ver que si (|π1 |, . . . , |πn |) satisface 11.4. Estados de equilibrio. de Markov M Un estado tal que M π ∈ Pn . M π = π. satisface M π = π, entonces también π ∈ Pn se dice estado de equilibrio |π| = □ de una matriz si cumple M π = π, o equivalentemente, si es un autovector de M de autovalor 1. Toda matriz de Markov tiene al menos un estado de equilibrio. Una matriz de Markov puede tener varios estados de equilibrio. Para el autovalor λ = 1, la la multiplicidad algebraica coincide con la multiplicad geoméE1 formada por vectores de estado trica, y podemos hallar una base de autovectores de (sin demostración). Ejercicio 5.9. Hallar dos estados de equilibrio distintos para la matriz 0.5 0.3 0 0 0.5 0.7 0 0 . M = 0 0 0.1 0.5 0 0 0.9 0.5 ¾Cuántos estados de equilibrio tiene M? 120 5. DIAGONALIZACIÓN 11.5. Estados límite. Nos preguntamos si dado un estado inicial π (0) , existe π ∗ = lı́m π (k) . k→∞ En tal caso, π ∗ = lı́m π (k+1) = lı́m M π (k) = M π ∗ , k→∞ es decir, π∗ k→∞ es un estado de equilibrio. Preguntas: ¾Dado un estado inicial π (0) , el sistema evoluciona siempre hacia un estado límite? Si el estado de equilibrio no es único, ¾cómo determinamos a qué estado converge? 11.6. Autovalores y autovectores. |λ2 | ≥ · · · ≥ |λn | ≥ 0, Usando las propiedades vistas, si λ1 = λ2 = · · · = λs = 1 (0) Dado π ∈ P, y w1 , . . . , ws s M diagonalizable, con autovalores |λ1 | ≥ w1 , . . . , wn . Supongamos y autovectores correspondientes es la multiplicidad del autovalor 1, podemos suponer vectores de estado. escribimos π (0) = a1 w1 + · · · + an wn y π (k) = a1 (λ1 )k w1 + · · · + an (λn )k wn Ejercicio 5.10. Si π (0) ∈ P , existe 1≤i≤s tal que 11.7. Cálculo analítico de estados límite. π (k) k ai ̸= 0. ¾Por qué? A partir de la expresión k = a1 (λ1 ) w1 + · · · + an (λn ) wn = a1 w1 + · · · + as ws + as+1 (λs+1 )k ws+1 + · · · + an (λn )k wn utilizando que λki → 0 Ejemplo 5.6. si Si |λi | < 0 1 deducimos: es el único autovalor de módulo 1, lı́m π (k) = a1 w1 + · · · + as ws . k→∞ s = 1, π (k) → w1 . Si existe λi ̸= 1, |λi | = 1, el proceso de Markov puede no tener límite (depende del vector Si además inicial de estados). 11.8. Diagonalización de matrices de Markov. 1 = |λ1 | ≥ |λ2 | ≥ · · · ≥ |λn | ≥ 0, Si M diagonalizable, con autovalores y autovectores correspondientes M = CBE DCEB λ1 = CBE w1 , . . . , wn , .. CEB . y λn M k = CBE D k CEB = CBE λk1 .. . λkn CEB , tenemos 11. MATRICES DE MARKOV con CBE | = w1 . . . | 11.9. Matriz 121 | wn . | M ∞. Notamos M ∞ = lı́mk→∞ M k , cuando ese límite existe. Proposición 5.22. Se cumplen las siguientes propiedades. M ∞ , π ∞ = M ∞ π (0) para cualquier vector inicial de estados. ∞ si y solo si λ = 1 es el único autovalor de módulo 1. Existe M ∞ = C D ∞ C , y tomando 1∞ = 1 y λ∞ = 0 para |λ| < 1 obtenemos En este caso, M BE EB ∞ 1 λ1 ... ∞ .. D = = . 1 ∞ λn 0 Si existe Si el autovalor λ=1 tiene multiplicidad 1, con autovector de estado M ∞ | = w ... | w, entonces | w . | Ejercicio 5.11. Para estudiar la relevancia de 4 páginas, se utiliza el modelo de Google Page Rank. Las echas indican los enlaces que hay en cada página. Se supone que inicialmente hay 1/4 del total de personas en cada una de las 4 páginas. Hallar la matriz de Markov y determinar, si existe, π (∞) en cada caso. 1. Considerando que cada minuto, los navegantes clickean alguno de los links al azar disponibles en la página que se encuentran. 2. Considerando que cada minuto, la mitad de los navegantes que están en una página se quedan en esa página y la otra mitad clickean alguno de los links al azar disponibles en la página que se encuentran. Capítulo 6 Métodos Iterativos Como ya hemos visto, los métodos directos poseen en general una complejidad de orden cúbico en el número de incógnitas O(N 3 ). Esto dice que si en un problema determinado se duplica el número de incógnitas entonces el número de operaciones se multiplica por 8. Eso ha llevado a intentar desarrollar métodos de orden menor 1 y los métodos iterativos son una posible alternativa. Hay, además de la complejidad, otros problemas con los métodos directos. Por ejemplo, en muchas aplicaciones aparecen problemas con un número muy grande de incógnitas pero con matrices ralas, es decir, matrices con un elevado porcentaje de coeciente nulos. Esto permite en principio reducir notablemente el número de operaciones del algoritmo pero sin embargo como desventaja aparece un rellenado innecesario en la factorización resultante. En la siguiente sección vemos un ejemplo sencillo. 1. Un ejemplo: distribución de temperatura Ciertas ecuaciones diferenciales lineales pueden resolverse de modo aproximado a través de discretizaciones. En dimensión uno es fácil imaginar como puede hacerse. Por ejemplo, conside- remos en el intervalo [a, b] la ecuación diferencial ′′ u (x) = f (x), u(a) = 0, u(b) = 0. (6.4) f (x) representa un dato conocido. Podemos aproximar el problema en dimensión nita a = x0 < b−a x1 < · · · < xn+1 = b tales que xi = a + ih donde h = n+1 . Cuando n → ∞ (aumentamos el número de puntos) resulta que h → 0 y como Aquí, del siguiente modo: consideramos puntos (en este ejemplo uniformemente distribuidos) u(xi + h) − 2u(xi ) + u(xi − h) u(xi+1 ) − 2u(xi ) + u(xi−1 ) = h2 h2 tenemos para u sucientemente derivable u(xi + h) = u(xi ) + u′ (xi )h + u′′ (xi )h2 /2 + u′′′ (xi )h3 /3! + O(h4 ) u(xi − h) = u(xi ) − u′ (xi )h + u′′ (xi )h2 /2 − u′′′ (xi )h3 /3! + O(h4 ) y así u(xi + h) − 2u(xi ) + u(xi − h) = u′′ (xi ) + O(h2 ), h2 1 Observe que el límite inferior para un método de resolución es de la matriz. 123 O(N 2 ) ya que ese es el número de coecientes 124 6. MÉTODOS ITERATIVOS por lo que usando que xi u′′ (xi ) = f (xi ), vemos que podemos aproximar la temperatura en el punto resolviendo u(xi+1 ) − 2u(xi ) + u(xi−1 ) = f (xi )h2 , lo que conduce a un sistema tridiagonal y simétrico, con una ecuación por cada xi , que se escribe2 (6.5) −2 1 0 0 1 −2 1 0 0 1 −2 1 .. . . . . . . . . . . 0 0 0 0 ··· ··· ··· ··· ··· 0 0 0 0 0 0 . . . . . . 1 −2 f (x1 ) u(x1 ) u(x2 ) f (x2 ) .. = h2 .. . . . u(xn ) f (xn ) La ecuación (6.4) modeliza (en un caso muy elemental y sin contemplar constantes físicas) el problema de la distribución de temperatura en una barra unidimensional. En dimensión mas alta (por ejemplo en dimensión 3) el problema se puede modelizar con la ecuación 3 ∆u(x) = f (x). Para ver un ejemplo concreto en la Figura 1 se muestra un cuarto de pistón (pieza que se desplaza dentro de uno de los cilindros de un motor). La distribución de temperatura en esa pieza puede aproximarse como antes través de una discretización. No vamos a describir aquí como hacer esto, Figura 1. Distribución de temperatura en un pistón. Se visualiza un cuarto de la pieza. pero una vez discretizado, el problema puede escribirse, al igual que el problema unidimensional, como un sistema lineal de ecuaciones. En este ejemplo particular, se obtiene un sistema Ax = b, A ∈ R3319×3319 donde cada incógnita es el valor de la temperatura en un punto interior del pistón. Este ejemplo (que llamaremos (E) ) nos servirá para ejemplicar algunas particularidades que aparecen en este capítulo. Si bien esta matriz A no es mas tridiagonal sí es simétrica, además de rala4. En la 39753 33192 = 11015761 que representan el total de elementos la memoria utilizada en el almacenamiento de A esto es Figura 1 se observan ambos hechos (con el comando np.spy(A)). En este caso, solamente coecientes son diferentes de cero, en vez de la matriz. Desde el punto de vista de signicativo. Teniendo en cuenta que en doble precisión cada número ocupa 8 bytes tendriamos en cada caso: 2 u(x0 ) = u(xn+1 ) = 0 no son incógnitas del sistema, por ello no están en la ecuación. Recordar que ∆ representa al Laplaciano de u. En dimensión 3 por ejemplo se escribe ∆u = uxx + uyy + uzz . 3 4 En inglés sparse: un porcentaje signicativo de elementos de la matriz es nulo. 1. UN EJEMPLO: DISTRIBUCIÓN DE TEMPERATURA Figura 2. Estructura de la matriz A: 125 se observa que es rala y simétrica. 8 39753 1024 ∼ 300K 8 11015761 (1024) 2 ∼ 84M . Esta ventaja se puede perder al hacer solo 39753 LU . fenómeno se conoce como A tiene 2440542 (∼ 18M ). Este En efecto, en este ejemplo, a pesar de que elementos no nulos, el número de elementos no nulos de L es rellenado. La apariencia de L y su comparación con la matriz original puede verse en la Figura 1 Figura 3. Estructura de las matrices L de de la factorización A y A = LU A y L en el ejemplo (E). Izquierda, matriz donde se nota el rellenado. Derecha, superposición L. Si bien hay heurísticas para evitar el rellenado, buscando permutar las variables y las ecuaciones no las vamos a comentar en este texto. Vamos a concentrarnos en los métodos iterativos. Estos no buscan ninguna factorización y se basan en iterar un procedimiento de orden O(N 2 ) (básicamente el producto de una matriz por vector) con el esperanza de conseguir una buena aproximación de la solución buscada en unas pocas Ya hemos visto que ρ(A) 5 iteraciones. no es una norma, sin embargo verica: ρ(A) = ı́nf ∥A∥. ∥·∥ Lo que implica que para todo 0<ε existe una norma ∥·∥ ∥A∥ ≤ ρ(A) + ε 5 Pocas al menos relativo al tamaño N de la matriz. tal que 126 6. MÉTODOS ITERATIVOS Usaremos esta propiedad en la demostración del siguiente resultado que da la clave para predecir el orden de convergencia de los métodos iterativos. Proposición 6.1. Para toda norma subordinada ∥·∥ vale que k 1/k ρ(M ) = lı́m ∥M ∥ k→∞ Demostración. Dado ϵ>0 . existe una norma subordinada ∥ · ∥∗ tal que ∥M ∥∗ ≤ ρ(M ) + ϵ. k k ρ(M ) = ρ(M ) ≤ ∥M k ∥ ≤ C∥M k ∥∗ ≤ C∥M ∥k∗ ≤ C(ρ(M ) + ϵ)k , tomando límite y notando ρ(M ) ≤ ∥M k ∥1/k ≤ C 1/k (ρ(M ) + ϵ) que ϵ es arbitrario se demuestra el resultado. □ 2. Métodos Iterativos Supongamos que queremos resolver Ax = b, pero la matriz A es difícil de invertir. Entonces proponemos una descomposición A = B + C, donde B fácil es elegida de modo que sea de invertir y escribimos Bx = −Cx + b, o equivalentemente x = −B −1 Cx + B −1 b. −1 C (denominada matriz de iteraciones ) y B −1 b = b̃, resolver Notemos que llamando MI = −B el sistema equivale a hallar x tal que x = MI x + b̃. La idea es tomar un vector inicial x0 e iterar xn+1 = MI xn + b̃, con la esperanza de que ek = x − xk xk → x. Para ver si nuestra idea puede funcionar estudiamos el error restando miembro a miembro las dos ecuaciones de arriba ek+1 = MI ek = MI MI ek−1 = · · · = MIk+1 e0 de donde vemos que solo sí ek → 0 para todo error inicial e0 sí y solo sí MIk → 0 lo cual ocurre sí y ρ(MI ) < 1. Más aún ∥ek ∥ ≤ Cρ(MI )k lo que nos da la velocidad de convergencia del algoritmo. Comencemos estudiando un caso particular llamado el método de Richardson. Elegimos como un múltiplo de la identidad B = ω −1 I, ω > 0. B 2. MÉTODOS ITERATIVOS 127 Luego, se tiene C = A − ω −1 I = ω −1 (ωA − I) y la matriz de iteraciones resulta MI = −B −1 C = I − ωA Proposición 6.2. Si sí y solo sí ω< A es SDP, el método de Richardson converge -para todo dato inicial- 2 ρ(A) . ρ(MI ) < 1, con MI = I − ωA. Como A es SDP sus autovalores cumplen 0 < λ1 ≤ λ2 ≤ · · · ≤ λn . Los autovalores de MI son entonces 1−ωλi . Queremos ver bajo que condiciones |1−ωλi | < 1, para todo 1 ≤ i ≤ n. Equivalentemente, Demostración. Basta ver bajo que condiciones −1 < 1 − ωλi < 1 i.e. es necesario y suciente que Claramente, al variar ω ω< 2 λi para todo 2 (0, ρ(A) ) en el rango 1≤i≤n lo que equivale a ω< 2 ρ(A) . obtendremos distintas velocidades de conver- gencia para nuestro método. Podemos intentar localizar el óptimo orden máximo de convergencia (equivalentemente, el ωopt ωopt , para el cual es decir el que garantiza ρ(MI ) es mínimo). Para ello observemos que (ver Figura 2) como ρ(MI ) = máx{|1 − ωλn |, |1 − ωλ1 |} ωopt ocurre en el punto de cruce de los grácos. Ese punto puede despejarse ωopt = 2 λn + λ1 de donde el respectivo radio espectral óptimo es ρ(MI ) = □ λn − λ1 κ(A) − 1 = . λn + λ1 κ(A) + 1 Notemos que la velocidad de convergencia del método se deteriora si κ(A) es grande. 128 6. MÉTODOS ITERATIVOS Para el ejemplo (E) de la distribución de temperatura, dado al principio del capítulo, tenemos (aproximados por el método de la potencia) λ1 ∼ 0.0009 λn ∼ 1.93 κ(A) ∼ 2144 ωopt ∼ 1.04 lo que da ρ(MI ) ∼ 0.99907 −3 precisamos iterar aproximadamente si queremos reducir el error inicial en un orden de 10 60000 veces, número mucho mayor que el tamaño n ∼ 3000 de la matriz. Como vemos no resulta muy competitivo en este caso. 3. Algunos Métodos Clásicos A = L + D + U (triangular descomposiciones A = B + C : Si tomamos ensayar varias 1. 2. inferior+diagonal+triangular superior), podemos B = D método de Jacobi B = L + D método de Gauss-Seidel Las matrices de iteración son MJ = −D −1 (L + U ) −1 U Gauss-Seidel MGS = −(L + D) 1. Jacobi 2. Si bien en el caso GS, contrariamente al caso J, la matriz no parece obviamente invertible, originalmente fueron concebidos del modo siguiente que no requiere inversiones explícitas: de Ax = b, se tiene, para todo 1≤i≤n n X ai,j xj = bi , j=1 en Jacobi se escribe (asumiendo ai,i ̸= 0) n X xi = − ai,j xj + bi /ai,i ∀1 ≤ i ≤ n j=1,j̸=i que da lugar al método (k+1) xi = − n X j=1,j̸=i para pasar del iterado k al k + 1. (k) ai,j xj + bi /ai,i ∀1 ≤ i ≤ n 3. ALGUNOS MÉTODOS CLÁSICOS 129 Para Gauss-Seidel se escribe (k+1) xi n X = − (k) ai,j xj − j=i+1 para pasar del iterado k (k+1) ai,j xj ∀1 ≤ i ≤ n + bi /ai,i j=1 k + 1, al i−1 X con la idea de utilizar (k+1) x1 (k+1) , · · · xi−1 (considerados mejores (k+1) aproximaciones) en el cálculo de xi . Notar que: No es necesiario construir explícitamente MJ no MGS . Jacobi puede paralelizarse pero no así Gauss-Seidel. A ∈ Kn×n Proposición 6.3. Sea estrictamente diagonal dominante, entonces Jacobi y Gauss-Seidel convergen. Demostración. 1. Jacobi: sea v ∈ Kn −D sea 1≤i≤n tal que 0 ̸= |vi | ≥ |vk | −1 autovector de MJ de autovalor λ q.v.q. |λ| < 1. (L + U )v = λv, 1 ≤ k ≤ n. Tenemos n X = aij vj para todo −λvi ai,i i̸=j=1 , como vi ̸= 0 ̸= aii −λ = n X aij vj aii vi i̸=j=1 tomando modulo n X aij |λ| ≤ | |<1 aii i̸=j=1 pues A es EDD. 2. Gauss-Seidel: como antes sea v autovector de autovalor λ de MGS , y 0 ̸= |vi | ≥ |vk | 1 ≤ k ≤ n: U v = −λ(D + L)v n i X X aij vj = −λ aij vj j=i+1 dividiendo por vi n X j=i+1 j=1 y tomando módulos |aij | ≥ n X j=i+1 aij vj = |λ| vi i X j=1 aij vj ≥ |λ| |a11 | − vi de donde Pn |λ| ≤ j=i+1 |aij | Pi−1 |a11 | − j=1 |aij | <1 i−1 X j=1 |aij | con 130 6. MÉTODOS ITERATIVOS □ por ser EDD. Si trabajamos una matriz tridiagonal, como por ejemplo el de la ecuación (6.5), podemos probar fácilmente la propiedad siguiente A ∈ Kn×n tridiagonal ρ(MGS ) = ρ(MJ )2 . Proposición 6.4. Sea 1 ≤ i ≤ n. Entonces (i.e. |ai,j | = 0 si |j − i| > 1) con A = L + D + U . Sea 0 ̸= λ autovalor de λ2 es autovalor de MGS = −(D + L)−1 U . det −D −1 (L + U ) − λI = 0 Demostración. Escribimos −D −1 (L + U ). Queremos ver que por lo tanto (sacando −D −1 aii ̸= 0 para todo la matriz MJ = En particular de factor común y usando propiedades del determinante) det (L + U + λD) = 0 donde la matriz M = L + U + λD tridiagonal. es En particular, tomando un 0 ̸= α ∈ K cualquiera tenemos que α 0 0 0 α2 0 3 det(M ) = det 0 0 α .. .. . . . . . 0 0 0 ··· ··· ··· ··· ··· propiedad que vale para cualquier matriz M −1 α 0 0 −2 0 α 0 −3 0 0 α M .. . . . . . . . . . . n α 0 0 0 0 0 0 pero en este caso particular, ··· ··· ··· ··· ··· 0 0 0 . . . α−n , por ser tridiagonal, un cálculo directo muestra que α 0 0 0 α2 0 0 0 α3 .. .. . . . . . 0 0 0 por lo que tomando ··· ··· ··· ··· ··· α−1 0 0 −2 0 α 0 −3 0 0 α M . . . . . . . .. . . . n α 0 0 0 0 0 0 α−1 = λ ··· ··· ··· ··· ··· 0 0 0 . . . α−n = α−1 L + λD + αU tenemos que 0 = det (L + U + λD) = (−λ)n det −L − D − α2 U = (−λ)n det −(L + D)−1 U − λ2 I , es decir λ2 es autovalor de MGS . Queda como ejercicio seguir los pasos en sentido inverso y ver ̸= 0 es autovalor de MGS entonces λ lo es de MJ . Los autovalores nulos no son de porque no modican el radio espectral. □ 2 que si λ interés, Proposición 6.5. Si A ∈ Kn×n Hermitiana y denida positiva, entonces Gauss-Seidel converge. Demostración. Sea v autovector de autovalor λ de la matriz de iteraciones: −(D + L)−1 U v = λv, −U v = λ(D + L)v = λAv − λU (λ − 1)U v = λAv (λ − 1)v ∗ U v = λv ∗ Av 3. ALGUNOS MÉTODOS CLÁSICOS 131 λ v∗U v = ∗ λ−1 v Av como λ ̸= 1 y A es Hermitiana (simétrica, en el caso real) 2Re Llamando λ = a + ib λ λ−1 = U = L∗ , v ∗ (U + L)v v∗U v v ∗ Dv = = 1 − < 1. v ∗ Av v ∗ Av v ∗ Av resulta 2 (a(a − 1) + b2 ) < 1, (a − 1)2 + b2 |λ|2 = a2 + b2 < 1. y así □ Volviendo a nuestro ejemplo (E) de distribución de temperatura, la matriz A es simétrica y denida positiva (no estamos probando esta última armación). Por la proposición anterior sabemos que GS converge. Por otro lado no es EDD sino solamente DD, tampoco es tridiagonal, sin embargo cumple con otras hipótesis (que no veremos en este curso) que garantizan que ρ(MGS ) = ρ(MJ )2 , por lo cual Jacobi y Gauss-Seidel convergen. En este ejemplo (E), usando el método de la potencia, obtenemos ρ(MJ ) ∼ 0.998 y ρ(MGS ) ∼ 0.996 que satisface la relación predicha. Este resultado no vale siempre pero ocurre en muchas matrices asociadas a estas ecuaciones diferenciales. Como vemos, precisaríamos unas 3500 iteraciones para que en J se reduzca el error en un orden 10−3 y unas 1750 en GS para el mismo nivel de reducción del error. Observemos que todos los métodos estudiados se originaron a partir de la identidad x = −B −1 Cx + B −1 b, que podemos reescribir x = x − B −1 (Ax − b), y entonces pensar en las iteraciones del siguiente modo xk+1 = xk − B −1 (Axk − b), que pueden verse como una corrección que involucra al residuo rk = Axk − b. podemos modicar el método del modo siguiente: tomamos un 0<ω Con esta idea y escribimos una nueva variante dando mas o menos ω>1 estamos xj+1 = (1 − ω)xj + ω(xj − B −1 (Axj − b)), importancia a la iteración original. Si 0 < ω < 1 amplicado 6 estamos atenuado y si la corrección. Si aplicamos estas ideas a Gauss-Seidel obtenemos el denominado método SOR . Para estudiarlo un poco reescribamos la iteración adecuadamente: para Gauss-Seidel (GS) tenemos que coordenada i − esima B =L+D xk+1 = i 6 y C = U, en particular podemos escribir en la como: Sobre Relajación Sucesiva. 1 − ai,i i−1 X j=1 ai,j xk+1 − j n X j=i+1 ai,j xkj + bi , 132 6. MÉTODOS ITERATIVOS por lo tanto, el método SOR en la coordenada xk+1 = (1 − ω)xki + i o sea ai,i xk+1 i +ω i−1 X ω − ai,i ai,j xk+1 j i − esima, i−1 X toma la forma ai,j xk+1 − j j=1 = (1 − n X ai,j xkj + bi , j=i+1 ω)ai,i xki −ω j=1 n X ai,j xkj − ωbi . j=i+1 En términos matriciales (D + ωL)xk+1 = ((1 − ω)D − ωU ) xk − ωb, en particular, y como es de esperar, ω=1 recupera a GS. El método SOR tiene una matriz de iteraciones que puede escribirse Mω = (D + ωL)−1 ((1 − ω)D − ωU ) . No vamos a estudiar con detalle la convergencia para este método, pero observemos que como Mω es producto de matrices triangulares, es fácil ver que det(Mω ) = (1 − ω)n , lo que dice que ρ(Mω ) ≥ |1 − ω| en particular 0 < ω < 2. y vemos que una condición necesaria para la convergencia del método es que El hecho de que la condición 0<ω <2 sea necesaria para la convergencia de SOR es resultado general (vale para matrices arbitrarias). Para las matrices que son como las del (E) de distribución de temperatura se puede probar que el método converge sí 0 < ω < 2. Además, trabajando numéricamentea con la matriz podemos ver como se comporta ρ(Mω ) en términos del ω (ver Figura 3). En nuestro ejemplo: tenemos ωopt ∼ 1.904, ρ(Mωopt ) ∼ 0.9 −4 con solo 150 iteraciones!. con lo cual podemos lograr una reducción del error en 10 ejemplo y solo sí aEn realidad hay una teoría completa que predice el comportamiento del método SOR para estas matrices pero no veremos esos detalles aquí. Figura 4. Comportamiento de ω = 1.904 ρ(Mω ). Se ve que tiene un mínimo cerca de que se corresponde con un radio espectral cercano a 0.9. 4. MÉTODO DE GRADIENTE (O DEL DESCENSO MAS RÁPIDO) 133 4. Método de gradiente (o del descenso mas rápido) Cuando trabajamos con matrices simétricas denidas positivas es posible reemplazar el problema: (P1) Hallar x ∈ Rn por un problema de minimización asociado a la función (P2) Hallar En efecto, calculemos para x∈ Rn , x ∈ Rn z∈ J : Rn → R, J(z) = 12 z T Az − z T b: tal que J(x) Rn , z Ax = b tal que ̸= 0 y = mı́nn J(y). t∈R y∈R arbitrarios, la expresión 1 h(t) = J(x + tz) = (x + tz)T A(x + tz) − (x + tz)T b, 2 desarrollando los términos resulta 1 1 h(t) = t2 z T Az + t z T Ax − z T b + xT Ax − xT b 2 2 (6.6) una cuadrática en la variable t, (6.7) tm = con mínimo en z T Ax − z T b z T (Ax − b) = . z T Az z T Az Supongamos que x resuelve (P1). En ese caso debe ser tm = 0 y entonces J(x) = h(0) ≤ h(t) = J(x + tz) para todo t y vemos que J(x) = mı́nn J(y), y∈R lo que dice que x resuelve (P 2). Recíprocamente: si x es tal que J(x) = mı́nn J(y), y∈R repetimos la cuenta anterior y vemos que el mínimo de 0= h(t) z T Ax − z T b z T Az es decir z T (Ax − b) = 0, para todo z ̸= 0, lo que indica que 7 Ax − b = 0, es decir Ax = b. y entonces 7 x resuelve (P 1). Tomando, por ejemplo, z = Ax − b. está en t=0 lo que dice que 134 6. MÉTODOS ITERATIVOS 2 Ejemplo en R : Consideremos la matriz 5 2 M = 2 4 1 b= . 0 y el vector El sistema asociado M x = b, tiene por solución x= 1/4 . −1/8 Por otro lado, J(x1 , x2 ) = 5/2x21 + 2x22 + 2x1 x2 − x1 , y en la Figura 4 vemos las curvas de nivel de Figura 5. Curvas de nivel de J y el punto J(x1 , x2 ) = 5/2x21 + 2x22 + 2x1 x2 − x1 . Antes de continuar observemos que tomando en (6.6) , donde el corchete x (en rojo) solución del sistema. z = ei (el canónico i) se tiene que ∂J(x) J(x + tei ) − J(x) = lı́m = [Ax − b]i , t→0 ∂xi t representa la coordenada i del vector Ax − b. En particular tenemos ∇J(x) = Ax − b. Lo que hemos visto indica que para resolver un sistema con una matriz SDP podemos alternativamente atacar un problema de minimización en Rn . Para comenzar simplicando este nuevo problema vamos a intentar llevarlo a uno que sea iterativo en busqueda por líneas: dado xi elegimos una dirección de búsqueda zi xi+1 = xi + λi zi . En un caso general quisieramos λi tal que J(xi + λi zi ) = mı́n J(xi + tzi ), t∈R lo que nos llevaría a resolver 0= R. Este es un método de y un escalar dJ(xi + tzi ) |t=λi = ∇J(xi + λi zi )T zi . dt λi tal que 5. GRADIENTE CONJUGADO En el caso que nos interesa ya sabemos despejar λi = − donde ri = b − Axi λi 135 (ver (6.7)): ziT (Axi − b) z T ri = Ti T zi Azi zi Azi es el residuo. zi en cada paso. Una forma J en el punto xi : −∇J(xi ) = Este método no nos sugiere como elegir el vector de búsqueda natural es utilizar la dirección de mayor decrecimiento de la función b − Axi = ri . Esto da lugar al método del gradiente o del descenso más rápido: rTi ri ri . rTi Ari xi+1 = xi + El proceso anterior puede converger muy lentamente. En cada paso minimizamos (de forma exacta en aritmética exacta) a lo largo de la recta Una mejora sustancial sería comenzar en un xi + λzi . x0 , minimizar a lo largo de una recta, luego a lo largo de un plano, e ir aumentando la dimensión. Por ejemplo podríamos intentar minimizar el paso i en J(xi+1 ) = mı́n y∈⟨z0 ,···zi ⟩+x0 que claramente daría un algoritmo que naliza 8 J(y) en a lo sumo n pasos. Obviamente, vemos que el problema que aparece es la dicultad de minimizar en dimensiones mayores a uno. Hay, sin embargo, un modo de lograr nuestro propósito minimizando sobre líneas, si es que elegimos las direcciones de búsqueda de modo adecuado. Este algoritmo lo estudiamos en la siguiente sección. 5. Gradiente Conjugado Observemos, antes de continuar, que una matriz simétrica (o Hermitiana) denida positiva dene un producto interno a través de la operación 9 xT Ay. En particular este producto posee la siguiente norma asociada √ ∥x∥A = xT Ax. Teniendo esta norma denida probamos lo siguiente. Lema 6.1. Supongamos que las direcciones de búsqueda son 0) y en cada paso λi se elige para minimizar sobre la línea correspondiente. Entonces mı́n J(y) = J(xi+1 ) = xi +⟨zi ⟩ Demostración. Sea Wi+1 = ⟨z0 , z1 , · · · , zi ⟩ mı́n y∈x0 +⟨z0 ,z1 ,··· ,zi ⟩ y tomo trucción, se puede escribir con z = y + tzi y ∈ x0 + Wi = x0 + ⟨z0 , z1 , · · · , zi−1 ⟩. 8 Al menos en aritmética exacta. 9 A ortogonales (i.e. ziT Azj = Dejamos como ejercicio esta armación. J(y) z ∈ x0 + Wi+1 arbitrario. Por cons- 136 6. MÉTODOS ITERATIVOS Observamos que mı́n z∈x0 +Wi+1 J(z) = mı́n y∈x0 +Wi ,t∈R J(y + tzi ) Escribimos 1 1 J(z) = J(y + tzi ) = t2 ziT Azi + t ziT Ay − ziT b + y T Ay − y T b 2 2 pero, usando que ziT Azj = 0 ziT Ay = ziT Ax0 = ziT Axi 1 1 2 T T T t zi Azi + t zi Axi − zi b + y T Ay − y T b J(y + tzi ) = 2 2 de donde resulta que para minimizar en el segundo en y ∈ Wi . Pero el t z basta minimizar ambos términos: el primero en óptimo es justamente λ= t∈R ziT Ari provisto por nuestro método. ziT Azi □ En denitiva el resultado sale por inducción. Las direcciones A ortogonales suelen llamarse conjugadas lo que da nombre al algoritmo que veremos mas adelante. Queremos un método que minimice sobre direcciones conjugadas (y no sea costoso) Idea: A-ortogonalizar los residuos z0 = r0 zi = ri − zjT Ari j=0 z T Azj zj j Pi−1 Vale lo siguiente ⟨z0 , z1 · · · , zi ⟩ = ⟨r0 , r1 · · · , ri ⟩ rTi rj = 0, pues J(xi + trj ) tiene un mínimo en t = 0, evaluando en t = 0 0 = rTj (Axi − b) = rTj ri . Existe m≤n si 0 ≤ j < i. Luego derivando y tal que x0 ̸= x1 ̸= · · · = ̸ xm = x W0 ⊊ W1 ⊊ · · · ⊊ Wm 1 ≤ i ≤ m, {z0 , z1 · · · zi−1 } (resp. {r0 , r1 · · · ri−1 }) (resp. ortogonal) de Wi . Pi−1 zjT Ari ziT ri = rTi ri . Pues zi = ri − j=0 z y entonces z T Az j Para todo j rTi zi = rTi ri − i−1 T X zj Ari j=0 pues para cada j zjT Azj rTi zj = rTi ri j ≤ i − 1, zj ∈ Wi = ⟨r0 , · · · , ri−1 ⟩, rTi zj = 0. es una base A ortogonal 6. GC Y APROXIMACIÓN POLINOMIAL 137 Queremos hallar las direcciones de búsqueda sin hacer Gram-Schmidt (o sea mas rápido) Escribamos zi en la base de los residuos (ortogonales), zi = ziT ri = rTi ri A ortogonal a Wi . ya vimos que zi es zi = pero además i X z T rj i Tr r j=0 j j i X z T rj i T r r j=0 j j rj , ziT (ri − rl ) = ziT A(xi − xl ) = 0 rj = porque xi − xl ∈ Wi y i−1 i X X rj rTi ri T r = r + r r , i i i Tr j Tr r r j j j j j=0 j=0 como la ultima sumatoria permite escribir recursivamente las direcciones de búsqueda i−2 i−1 T X X rj rj r ri = ri + T i ri−1 + rTi−1 ri−1 ri + rTi ri T T r r ri−1 ri−1 r r j=0 j j j=0 j j entonces zi = ri + rTi ri zi−1 rTi−1 ri−1 los residuos pueden obtenerse de xi+1 = xi + λzi ri+1 = ri + λi Azi Tomo x0 , calculo r0 asigno z0 = r0 for i=0... rT r λi = zTiAzi i i xi+1 = xi + λi zi ri+1 = ri + λi Azi zi+1 = ri+1 + rT i+1 ri+1 zi rT i ri end Aplicado a nuestro caso de ejemplo: para un error de orden 10−4 tarda 0.057 segundos... 6. GC y aproximación polinomial Para estudiar el error del GC notemos Wi = ⟨r0 , Ar0 , · · · Ai−1 r0 ⟩ lo cual se ve por inducción. Si para i + 1. i = 1 es cierto, y asumiendo que vale para i queremos ver que vale Para eso vemos que basta con ver que Wi+1 ⊂ ⟨r0 , Ar0 , · · · Ai r0 ⟩ puesto que dim(Wi+1 ) = i + 1 Asumiendo entonces que Wi ∋ ri−1 , zi−1 ∈ ⟨r0 , Ar0 , · · · , Ai−1 r0 ⟩ 138 6. MÉTODOS ITERATIVOS se tiene que ri = ri−1 − λi−1 Azi−1 ∈ ⟨r0 , Ar0 , · · · , Ai r0 ⟩ En general, dada una matriz A, subespacios de la forma que es lo que queríamos ver. ⟨b, Ab, · · · , Ai b⟩, se llaman subes- pacios de Krylov. La identidad de abajo permite relacionar esos subespacios con polinomios. ⟨r0 , Ar0 , · · · Ai−1 r0 ⟩ = {p(A)r0 : p ∈ Pi−1 [x]} = = {q(A)(x − x0 ) : q ∈ Pi [x], q(0) = 0} Va a resultar cómodo estudiar el error en la norma ∥ · ∥A : es decir, acotar ∥x − xi ∥A Como ri es ortogonal a Wi , x − x i es A ortogonal a Wi ∥x − xi ∥A = ı́nf ∥x − xi − y∥A y∈Wi como x 0 − x i ∈ Wi ∥x − xi ∥A = ı́nf ∥x − x0 − y∥A = y∈Wi = ı́nf q∈Pi [x],q(0)=0 = ∥x − x0 − q(A)(x − x0 )∥A = ı́nf p∈Pi [x],p(0)=1 ı́nf p∈Pi [x],p(0)=1 ∥p(A)(x − x0 )∥A ≤ ∥p(A)∥A ∥(x − x0 )∥A pero ∥p(A)x∥2A = ∥x∥2A x̸=0 ∥p(A)∥2A = sup xT p(A)T Ap(A)x (p(A)x)T A(p(A)x) = sup = xT Ax xT Ax x̸=0 x̸=0 = sup xT A1/2 p(A)T p(A)A1/2 x y T p(A)T p(A)y = sup = y̸=0 yT y xT A1/2 A1/2 x x̸=0 = sup = supy̸=0 ∥p(A)y∥22 = ∥p(A)∥22 = ρ(p(A))2 ≤ máx p(λ)2 ∥y∥22 λ∈[λ1 ,λn ] En denitiva ∥p(A)∥A ≤ máx |p(x)| x∈[λ1 ,λn ] y hay que acotar ı́nf máx |p(x)| p∈Pi [x],p(0)=1 x∈[λ1 ,λn ] esto, por suerte, lo estudió Chebyshev. En el intervalo [−1, 1] los polinomios de Chebyshev son T0 (x) = 1, T1 (x) = x, T2 (x) = 2x2 − 1, · · · en general Tn+1 (x) = 2Tn (x) − Tn−1 (x) Para x ∈ [−1, 1], |Tn (x)| ≤ 1 6. GC Y APROXIMACIÓN POLINOMIAL (de hecho en ese rango para 139 Tn (x) = cos(n cos−1 (x))) |x| ≥ 1 Tn (x) = El polinomio p(x) ∈ Pn [x] p p 1 (x + x2 − 1)n + (x − x2 − 1)n 2 máxx∈[λ1 ,λn ] |p(x)| 1 2x − λn − λ1 T n +λ1 λn − λ1 Tn ( λλn1 −λ ) n que minimimiza 2 máx |p(x)| ≤ ı́nf p∈Pi [x],p(0)=1 x∈[λ1 ,λn ] q λn +1 λ q 1 λn −1 λ1 es decir ı́nf máx |p(x)| ≤ 2 p∈Pi [x],p(0)=1 x∈[λ1 ,λn ] ∥x − xi ∥A ≤ 2 con la condición p κ(A) − 1 p κ(A) + 1 !i + q λn −1 λ1 q λn +1 λ1 !i p κ(A) − 1 p κ(A) + 1 !i ∥x − x0 ∥A !i p(0) = 1 es Capítulo 7 Descomposición en valores singulares 1. Motivación: número de condición y autovalores Ya vimos que una matriz cuadrada está mal condicionada si está cerca de una matriz singular. O equivalentemente, está cerca de una matriz que no tiene el máximo rango posible. Podemos extender esta última idea a matrices rectangulares. La matriz 1 1 1 A = 1 1 1+ϵ tiene rango 2 si ϵ ̸= 0 pero está muy cerca de una matriz de rango 1 si ϵ es chico. Podemos pensar intuitivamente que la matriz está mal condicionada, aunque la denición que vimos no se aplica para matrices rectangulares. Observación 7.1. Para saber si una matriz cuadrada está mal condicionada no alcanza ver que hay un autovalor cercano a 0 o el determinante es chico. Ejemplo 7.1. La matriz ϵ 0 0 A = 0 ϵ 0 0 0 ϵ está bien condicionada para cualquier ϵ ̸= 0. Relacionamos ahora el número de condición con los autovalores de una matriz. Para matrices simétricas, κ2 (A) = ∥A∥2 ∥A−1 ∥2 = |λmáx (A)| 1 |λmáx (A)| = . λmı́n (A) |λmı́n (A)| Vemos que lo que determina que una matriz está mal condicionada es la relación entre el autovalor de mayor módulo y el autovalor de menor módulo. 2. Introducción Comencemos la sección con un experimento numérico. Generemos matrices simétricas al azar y graquemos la imagen del círculo unitario por la transformación lineal resultante. Para conseguir guras uniformes, reescalamos los grácos de modo que el círculo unitario (en azul) contenga a su imagen (en rojo). El resultado obtenido es esperable. Las imágenes son elípses {v1 , v2 } de autovectores ortonormales. Avi = λi vi , por lo que cualquier punto v del círculo unitario puede escribirse como v = x1 v1 + x2 v2 con 1 = x21 + x22 , por lo que Av = x1 λ1 v1 + x2 λ2 v2 es un punto de una elipse de semiejes a lo largo de las rectas generadas por v1 y v2 de longitudes |λ1 | y |λ2 |. debido a que cada una de estas matrices posee una base Es decir 141 142 7. DESCOMPOSICIÓN EN VALORES SINGULARES Figura 1. Elípses obtenidas por el mapeo del circulo unitario a través de matri- ces simétricas. Figura 2. Elípses obtenidas por el mapeo del circulo unitario a través de matri- ces generales. Lo extraordinario es que algo similar ocurre con matrices aleatorias cualesquiera, como podemos ver en la Figura 2. En este caso no podemos garantizar una base de autovectores ortonormales, sin embargo podemos estudiar las preimágenes de los semiejes de las elipses (en verde y rosa respectivamente) y notamos que provienen de vectores unitarios ortogonales (con el mismo color en las guras). Es decir que nuestro experimento sugiere la existencia de dos pares de vectores ortonormales {v1 , v2 } σ1 ≥ σ2 ≥ 0) y no negativos, cambiando si hicera falta y {u1 , u2 } y dos escalares σ1 , σ2 , que podemos suponer ordenados ui por −ui , tales que Avi = σi wi . (i.e. Esta observación nos permite escribir AV = U Σ donde | | V = v1 v2 | | con matrices V ,U Σ= σ1 0 0 σ2 | | U = u1 u2 | | ortogonales. Dicho otro modo puede factorizarse A como A = U ΣV ∗ . Esta factorización generaliza en algún sentido a la obtenida al diagonalizar matrices simétricas. Si bien, no toda matriz es diagonalizable en una base ortonormal {v1 , v2 }, nuestro experimento dice que algo similar puede obtenerse si nos permiten trabajar con bases diferentes : una {v1 , v2 } para el espacio de partida y otra {u1 , u2 } para el de llegada. 3. CONSTRUCCIÓN 143 Lo realmente notable, como veremos en breve, es que esta factorización siempre existe y no solo para matrices cuadradas. Definición 7.1. Dada zación de A ∈ Km×n , la descomposición en valores singulares SVD es una factori- A A = U ΣV ∗ , con U ∈ Km×m V ∈ Kn×n y Σ= si m ≥ n, Σ ∈ Rm×n . D , matrices unitarias y La matriz Σ tiene la forma 0(m−n)×n o la forma Σ = D 0m×(n−m) D ∈ Rp×p , donde p = mı́n{m, n}, es una matriz diagonal con elementos en la diagonal d11 ≥ d22 ≥ · · · ≥ dpp ≥ 0. Los elementos no nulos de la diagonal de D se denominan valores singulares de A, y se notan σi (A) = dii . si n > m. En ambos casos Ejemplo 7.2. √ 2 √2 2 2 3 2 2 = 2 3 −2 √ ! 2 5 0 0 √22 0 3 0 62 − 22 √ 2 2√ 3 √ 2 2√ − 62 − 23 0 √ 2 2 3 1 −3 3. Construcción Para constuir la descomposición SVD observamos las siguientes relaciones. Dada una matriz A ∈ Km×n , si A = U ΣV ∗ : AA∗ = (U ΣV ∗ )(V Σ∗ U ∗ ) = U (ΣΣ∗ )U ∗ , con ΣΣ∗ ∈ Rm×m diagonal. A∗ A = (V Σ∗ U ∗ )(U ΣV ∗ ) = V (Σ∗ Σ)V ∗ , con Σ∗ Σ ∈ Rn×n diagonal. Recordar que A∗ A y AA∗ son matrices semidenidas positivas y por lo tanto diagonalizables con autovalores no-negativos y base ortonormal de autovectores. En base a estas relaciones, concluimos: Las columnas de Las columnas de U V son una base de autovectores de AA∗ ∈ Km×m . ∈ Kn×n . ∗ son una base autovectores de A A Los valores singulares en Σ son la raíz cuadrada de los autovalores no nulos de AA∗ ordenados de mayor a menor. Esto nos da un método para calcular la descomposición. Primero construimos la matriz Luego obtenemos las las de U V tomando una base de autovectores de a partir de la relación A = U ΣV ∗ multiplicando por V: AV = U Σ. A∗ A. A∗ A o 144 7. DESCOMPOSICIÓN EN VALORES SINGULARES En el término de la izquierda tenemos | Avn . | | AV = Av1 . . . | 3.1. Si m ≤ n. Si m ≤ n, σ1 | | AV = U Σ = u1 . . . um | | Por lo tanto, para columnas de V. 1 ≤ i ≤ n, .. σm Obtenemos ui = para U 1≤i≤m y σi ̸= 0. m > n. Si vi son las de Km×m . 1 ≤ i ≤ n, .. las columnas de Obtenemos 1 ≤ i ≤ n y σi ̸= 0. El resto de {u1 , . . . , um } de Km×m . | = σ1 u1 . . . σn | . 0 ui = para {u1 , . . . , um } σ1 | um | | AV = U Σ = u1 . . . | V. donde 0 m ≥ n, columnas de σi ui = Avi , cumplen Si existen valores singulares nulos, las columnas correspondientes de Por lo tanto, para U | σm um | 1 Avi . σi las elegimos completando una base ortonormal 3.2. Si | 0 = σ1 u1 . . . | . las columnas de U cumplen | σn un | σi ui = Avi , donde vi son las 1 Avi . σi las columnas de U las elegimos completando una base ortonormal Ejercicio 7.1. Calcular la descomposición SVD de la matriz 3 2 2 A= ∈ R2×3 . 2 3 −2 realizando los siguientes pasos: 1. Construir la matriz V tomando como columnas una base ortonormal de autovectores de A∗ A ∈ R3×3 . 2. Calcular los valores singulares A∗ A. 3. Calcular las columnas de U σi = √ λi , i = 1, 2, por la fórmula ui = con 1 σi Avi , λi los autovalores (no nulos) de i = 1, 2. 4. Vericar. Ya vimos cómo construir una descomposición SVD. Si repasamos la construcción que realizamos, vemos que utilizamos la existencia de tal descomposición para obtener propiedades de las matrices en la descomposición. Para probar la existencia de la descomposición nos falta completar algunos detalles de la construcción. 4. VALORES SINGULARES Y NORMA-2 Teorema 7.1. Dada una matriz rectangular U ∈ Km×m unitaria, Σ ∈ Rm×n , con Σ = (D|0) mı́n{m, n}), V ∈ Kn×n unitaria, A = U ΣV ∗ . Los valores valores singulares de A, σi = dii . tales que Σ = o no nulos A ∈ Km×n , D 0 , D 145 existen matrices diagonal y d11 ≥ · · · ≥ dss > 0 d11 ≥ · · · ≥ dss ≥ 0 (s = son únicos y se denominan Demostración. En la construcción que hicimos, falta ver que los vectores ui = 1 σi Avi construidos son ortogonales. Calculamos u∗j ui y usando que V ∗ vi = ei , u∗j ui 1 ∗ ∗ 1 = Avi v A σj j σi 1 1 1 1 = vj∗ (A∗ A)vi = (vj∗ )(V Σ∗ ΣV ∗ )vi σj σi σj σi obtenemos 1 1 1 1 = (e∗j Σ∗ )(Σei ) = (σj e∗j )(σi ei ) = e∗j ei = σj σi σj σi ( 1 0 si si i=j i ̸= j □ 4. Valores singulares y norma-2 Ahora estamos en condiciones de retomar la discusión inicial de este cápítulo. Teorema 7.2. Dada una matriz rectangular A ∈ Km×n , ∥A∥2 = σ1 (A). Demostración. Recordando que multiplicar por una matriz unitaria es una transformación inversible que no cambia la norma de un vector, ∥A∥2 = sup ∥Ax∥2 ∥x∥2 =1 = sup ∥U ΣV ∗ x∥2 = sup ∥ΣV ∗ x∥2 ∥x∥2 =1 ∥x∥2 =1 r X = sup ∥Σy∥2 = sup ( ∥y∥2 =1 ∥y∥2 =1 i=1 1 σi2 |yi |2 ) 2 ≤ σ1 □ Proposición 7.1. Si A ∈ Km×n y rango(A) = n, entonces mı́n ∥A∥2 = σn (A) ∥x∥2 =1 Corolario 7.1. Si A ∈ Kn×n inversible, cond2 (A) = σ1 (A) . σn (A) 146 7. DESCOMPOSICIÓN EN VALORES SINGULARES A ∈ Km×n En general, para cualquier matriz rectangular de rango máximo, denimos cond2 (A) = con σ1 (A) , σr (A) r = mı́n{m, n}. 5. Distancia a matrices de menor rango Por último, vemos cómo formalizar la noción de matrices rectangulares mal condicionadas o cercanas a matrices de menor rango. A ∈ Kn×n , buscamos una matriz singular lo más cercana posible a A. En n×n de norma lo más chica posible tal que A + B sea singular. buscamos B ∈ K Dada una matriz otras palabras, 1. 2. 3. 4. 5. 6. A + B = A(I + A−1 B) −1 B∥ < 1, entonces I + A−1 B (y por lo tanto A + B ) es inversible. Si ∥A −1 ∥. Por lo tanto, si A + B es singular y A es inversible, debe ser ∥B∥ ≥ 1/∥A ∗ −1 Tomando norma-2, y A = U ΣV la SVD, ∥A ∥2 = 1/σn . Por lo tanto, si A + B es singular, debe ser ∥B∥ ≥ σn (A). ∗ Podemos tomar B = U EV , con E = diag(0, 0, . . . , 0, −σn ), que cumple ∥B∥2 = ∥E∥2 = σn . Teorema 7.3. Dada A ∈ Kn×n inversible, con A = U ΣV ∗ su descomposición en valores singulares. Deniendo Σn−1 la matriz à = U Σn−1 V ∗ σ1 = .. . σn−1 , 0 es la matriz singular más cercana a Ejercicio 7.2. Encontrar la matriz singular más cercana a A en norma-2. 1 2 3 A = 1 3 5. 1 5 8 Podemos ahora el resultado anterior para calcular las matrices más cercanas de distinto rango. A ∈ Km×n de m×n singulares. La matriz A1 ∈ K ∗ Frobenius es A1 = U Σ1 V , con Teorema 7.4. Sea k > 0, con A = U ΣV ∗ su descomposición en valores rango k1 < k más cercana a A en la norma 2 o norma rango de σ1 Σ1 = la matriz igual a reemplazan por 0. Σ .. . σk1 , 0 excepto que solo se usan los valores singulares σ1 , . . . , σk1 y los demás se 6. APLICACIONES 147 6. Aplicaciones 6.1. Reducción de dimensionalidad. n variables (features), con m > n, Para una población de m individuos analizamos y queremos ver si hay variables redundantes o si podemos reducir la cantidad de variables sin perder mucha información. A ∈ Rm×n , m > n, el k -ésimo valor singular nos dice la distancia de A a una matriz de rango k − 1. Es decir, mide cuánta información vamos a perder si utilizamos k − 1 variables en lugar de las n variables originales. Dada una matriz Ejercicio 7.3. Para la siguiente matriz, calcular los valores singulares. ¾Considera que hay variables redundantes? ¾Cuáles variables eliminaría? 6.2. La pseudo-inversa. x1 x2 x3 x4 1 100 100 757 220 2 70 80 603 174 3 50 90 700 190 4 150 40 250 110 5 80 10 42 36 A partir de la descomposición en valores singulares construimos la pseudo inversa de A = U ΣV ∗ , A, A† = V Σ† U ∗ , donde Σ† se obtiene a partir de la diagonal por Σ transponiéndola y reemplazando los elementos no nulos dii en 1/dii . Ejercicio 7.4. Calcular la pseudo-inversa de √ 3 2 2 = 2 3 −2 2 √2 2 2 √ ! 2 5 0 0 √22 0 3 0 62 − 22 √ 2 2√ 3 √ 2 2√ − 62 − 23 0 √ 2 2 3 1 −3 Se cumplen las siguientes propiedades. Proposición 7.2. AA† A = A y A† AA† = A† (pero en general n×n es inversible, A−1 = A† . Si A ∈ K no se cumple AA† = Im o □ Demostración. Ejercicio. Ejercicio 7.5. Vericar A† A = In ) AA† A = A para 3 2 2 A= 2 3 −2 6.3. Resolución de sistemas de ecuaciones. Enunciamos ahora el resultado principal, cuya demostración veremos en la Práctica 6 de Mínimos Cuadrados. Teorema 7.5. Dada la ecuación Ax = b, con A ∈ Km×n , si el sistema tiene soluciones entonces z = A† b es una solución y si hay innitas soluciones, z es la solución de mínima norma-2. 148 7. DESCOMPOSICIÓN EN VALORES SINGULARES Utilizando la pseudo-inversa podemos obtener también un criterio para determinar si un sistema tiene solución. Teorema 7.6. El sistema Ax = b tiene solución si y solo si AA† b = b. Demostración. Si AA† b = b v = A† b es solución del sistema. existe v tal que Av = b, entonces entonces Recíprocamente, si b = Av = AA† Av = AA† b (aunque usted no lo crea!). □ Cuando el sistema solución, la pseudo-inversa nos permite también hallar todas las soluciones. Teorema 7.7. Dadas A ∈ Km×n y b ∈ Kn . Si AA† b = b, todos los vectores de la forma x = A† b + (In − A† A)y con y ∈ Kn son soluciones del sistema Ax = b. Más aún, cualquier solución la puedo escribir de esa forma. Demostración. Si x es de esa forma, Ax = A(A† b + (In − A† A)y) = (AA† b) + (A − AA† A)y = b + (A − A)y = b. Ahora, dado un vector z ∈ Kn tal que Az = b, escribimos z = (A† A)z + (In − A† A)z = A† b + (In − A† A)z que es un vector de la forma buscada. □ Observación 7.2. Puede haber soluciones repetidas entre las soluciones obtenidas de esta forma. En particular, el sistema Ax = b tiene solución única si y solo si A† A = In . Ejercicio 7.6. Determinar cuántas soluciones tienen los siguientes sistemas de ecuaciones, y hallar una solución cuando sea posible. x − 2y = 2 2x + y = 1 x + 3y = −1 En Python puede utilizar x − 2y + z = 2 2x + y + 5z = 1 x + 3y + 4z = −1 np.linalg.pinv x − 2y + z = 2 2x + y + 5z = 1 x + 3y + 4z = 7 para calcular la pseudo-inversa. 6. APLICACIONES 6.4. Compresión de imágenes. 149 Veamos como comprimir una imagen aplicando reduc- ción de dimensionalidad por SVD. Tomamos una matriz 0= negro y 1= A ∈ Rm×n , con aij ∈ [0, 1], que representa una tonalidad de gris, siendo blanco. Ejemplo 7.3. Para representar la imagen de la gura, tomamos ¾Cuál es el rango de A? A ∈ R25×15 . ¾Cuántos valores singulares no nulos tiene Eliminamos columnas de A? U La descomposición en valores singulares de A ∈ R25×15 , A = U ΣV ∗ tiene 3 valores singulares no nulos, U ¾Podemos descartar las de U ∈ R25×25 , Σ ∈ R25×15 y V y V ∈ R15×15 . sin perder información? Recordando que | U Σ = u1 . . . | | u25 | vemos que podemos tomar siempre también ui = 0 para σ1 .. | = σ1 u1 . . . | . σ15 0 ui = 0 para i > 16 | σ15 u15 | sin perder información, y en nuestro caso i > 3. Eliminamos columnas de V (ΣV ∗ )∗ = σ1 | v15 | Análogamente, a partir de | V Σ∗ = v1 . . . | vemos que podemos tomar vj = 0 para .. . σ15 j>3 | σ = 1 v1 . . . 0 | | σ15 v15 | 0 sin perder información. En forma más compacta, para no guardar tantos 0's, podemos guardar la descomposición | A = u1 . . . 25×15 | 25×3 Cantidad de datos | σ1 0 0 −v1 − u3 0 σ2 0 −v2 − | 0 0 σ3 −v3 − 3×3 3×15 150 7. DESCOMPOSICIÓN EN VALORES SINGULARES En total, necesitamos guardar: 3 columnas de 3 columnas de U → 75 V → 45 valores valores 3 valores singulares Total: 75 + 45 + 3 = 123 valores Para guardar la matriz original necesitamos 25 × 15 = 375 valores Veamos otro ejemplo más realista. Ejemplo 7.4. Tomamos ahora la imagen de un árbol A ∈ R1082×2000×3 . Para imágenes en color se utilizan tres matrices con tonalidades RGB (red, green, blue), pero vamos a utilizar solo tonalidades de gris, tomamos Calculamos la descomposición A = U ΣV ∗ A ∈ R1080×2000 . y gracamos los logartimos de los valores singu- lares. Podemos tomar los primeros 987 valores singulares sin casi perder información, pero no es suciente compresión. 6. APLICACIONES 151 Probamos tomar las primeros 200 valores singulares. Es decir, tomamos à = Ũ 1080×200 Σ̃ 200×200 Ṽ ∗ 200×2000 y obtenemos la imagen Ejercicio 7.7. Calcular el porcentaje de compresión (es decir, la relación entre la cantidad de números que guardamos para la imagen comprimida y la cantidad de números de la imagen original). Capítulo 8 Cuadrados Mínimos Consideremos el problema Ax = b con A∈ Rm×n . La existencia de soluciones de este problema equivale a que (ai son las columnas de sea b ∈ ⟨a1 , a2 , · · · , an ⟩ A) y en ese caso la unicidad depende de que el conjunto {a1 , a2 , · · · , an } l.i.. b∈ / ⟨a1 , a2 , · · · , an ⟩ En el caso en que podemos intentar minimizar el residuo r = b − Ax Para eso nos conviene usar una norma: la norma El problema es entonces, hallar x ∈ Rn 2 es la mas adecuada como veremos en breve. tal que ∥Ax − b∥2 = mı́nn ∥Az − b∥2 z∈R o el equivalente hallar x∈ Rn tal que ∥Ax − b∥22 = mı́nn ∥Az − b∥22 z∈R el enfoque tradicional (fuera del álgebra lineal numérica) es buscar una ecuación para el punto crítico x como minimizante. Eso equivale a anular el gradiente de la función F : Rn → R, F (z) = ∥Az − b∥22 , es decir m X ∂ ([Az − b]i )2 ∂F |x = |x = ∂zk ∂zk i=1 P 2 n m m n ∂ a z − b X X X i j=1 ij j |x = 2 aij xj − bi aik ∂zk 0= i=1 i=1 La validez de esta identidad para todo 1≤k≤n j=1 dice que AT (Ax − b) = 0 Dicho de otro modo AT Ax = AT b estas se llaman las ecuaciones normales. A pesar de su popularidad esta no siempre es la mejor manera de calcular x. Desde esas ecuaciones podemos deducir cuando habrá solución única de nuestro problema: si las columnas de A son l.i. entonces AT Ax = 0 implica 0 = (AT Ax)T x = (Ax)T Ax = ∥Ax∥22 , 153 154 8. CUADRADOS MÍNIMOS es decir Ax = 0 y así x=0 por ser las columnas de A l.i., por lo que el núcleo de AT A es trivial. Observemos que en este caso AT A ∈ Rn×n resulta simétrica denida positiva. En particular podemos resolver el sistema usando Cholesky a un costo En gran parte de las aplicaciones mˇn ∼ mn2 + 31 n3 y las columnas de A son l.i. lo cual muestra el éxito relativo de las ecuaciones normales. 1. Interpolación Polinomial Un caso tradicional de uso de cuadrados mínimos es en aproximación polinomial. n+1 pares de puntos {(x0 , y0 ), (x1 , y1 ) · · · , (xn , yn ) pn (xi ) = yi . El problema de la interpolación consiste en lo siguiente: dados Kn hallar un polinomio Con los xi ̸= xj pn (x) de grado a lo sumo n tal que este problema siempre tiene solución única gracias a las siguientes observa- ciones. Se propone 0≤i≤n pn (x) = a0 + a1 x + · · · + an−1 xn−1 + an xn y se hace que conduce a un sistema lineal con matriz de Vandermonde 1 x0 x20 1 x1 x2 1 .. .. . . . . . 1 xn x2n ··· ··· ··· ··· pn (xi ) = yi para V [x0 , x1 , · · · , xn ] todo xn0 a0 y0 n x 1 a 1 y1 . . = . . . . .. . . an yn xnn Se tiene det V [x0 , x1 , · · · , xn ] = Π0≤i<j≤n (xj − xi ). (La demo mas corta que conozco...) Vale en 2×2 LLamo pn (x) = det V [x0 , x1 , · · · , xn−1 , x], y sale por inducción: supongo que vale hasta n − 1. n, su coedet V [x0 , x1 , · · · , xn−1 ] = claramente es polinomio y tiene grado ciente principal es (desarrollo por la primera la y uso hipótesis inductiva) Π0≤i<j≤n−1 (xj − xi ). Ademas las raíces de pn (x) son exactamente x0 , x1 , · · · , xn−1 , luego se escribe como pn (x) = Π0≤i<j≤n−1 (xj − xi )Πn−1 k=0 (x − xk ), evaluando en x = xn se obtiene el resultado mencionado. En particular el problema de interpolación tiene solución única... Hay otros enfoques... Lagrange Li (x) = Π0≤j≤n,j̸=i (x − xj ) Π0≤j≤n,j̸=i (xi − xj ) Li (xj ) = δij n X pn (x) = yi Li (x). i=0 La unicidad sale aparte... Problemas de la interpolación: 1. INTERPOLACIÓN POLINOMIAL 155 156 8. CUADRADOS MÍNIMOS La teoría anterior se aplica igual las matrices de Vandermonde son (mˇn) 1 1 . . . . . . . .. x0 x1 . . . cuadrada invertible. ··· ··· . . . ··· . . . . . . ··· . . . . . . 1 xm notar que las columnas son x20 x21 x2m ··· ··· xn0 xn1 . . . . . . . . . xnm l.i. porque las primeras n+1 las forman una matriz de Vandermonde 1. INTERPOLACIÓN POLINOMIAL Si hacemos n=1 157 1 x0 y0 1 x 1 y1 a0 = .. . .. . . a1 . . . 1 xm ym las ecuaciones normales conducen a la tradicional expresión 1 m+1 1 Pm i=0 xi 1 Pm a0 m+1 P i=0 xi m 1 2 a1 i=0 xi m+1 = 1 Pm m+1P i=0 yi . m 1 i=0 xi yi m+1 Intuitivamente si A = U ΣV ∗ σ1 σn . Si hacemos A T A = V Σ2 V ∗ 2 σ1 T vemos que en las ecuaciones normales la condición de la matriz nal empeora κ(A A) = . σn y A ∈ Rm×n , vimos que puede denirse la condición de A como Problema revisitado El gráco sugiere otro enfoque: construir el proyector {q1 , · · · , qn } es una base ortonormal de S = Im(A) P sobre la imagen de tenemos PS b = QQ∗ b donde Q = q1 |q2 | · · · |qn La obtención de Q ∈ Rm×n puede hacerse con la factorización A = QR con R ∈ Rn×n triangular superior. QR, es decir A. Esto es , si 158 8. CUADRADOS MÍNIMOS Escribimos QRx = Ax = PS b = QQ∗ b es decir que basta resolver Rx = Q∗ b QR mˇn, Este algoritmo es mas estable que el de las ecuaciones normales su costo esta gobernado por que es rango 2mn2 1 3 3 n . Volvemos a las ecuaciones normales: supongamos que ∼ − n (columnas A∈ l.i.): debemos resolver At Ax = At b si escribimos A = U ΣV ∗ , tenemos V Σt ΣV t x = At Ax = At b = V Σt U t b Como σ1 0 0 σ2 0 0 Σ=0 0 .. . . . . 0 0 0 0 σn 0 . . . 0 ··· ··· ··· ··· 0 0 0 0 . . . ··· 0 ··· y σ1 0 0 · · · Σt = 0 σ2 0 · · · 0 0 0 ··· 0 ··· 0 ··· σn · · · 0 0 0 tenemos σ12 0 0 σ22 t ΣΣ= 0 0 0 0 0 0 ··· ··· .. . 0 .. . 0 0 0 0 σn2 entonces −1 σ1 0 0 ··· x = V 0 σ2−1 0 · · · 0 0 0 ··· 0 0 σn−1 ··· ··· ··· 0 0 U t b 0 o sea x = A+ b y la pseudoinversa funciona como ïnversa". En general en el caso Recordemos que de mˇn podríamos tener rango menor a A = U ΣV t , tenemos que para t n (digamos 1≤i≤r Avi = U ΣV vi = U Σei = U σi ei = σi Ui y Avi = 0 si r < i ≤ n. r < n). Rm×n , 1. INTERPOLACIÓN POLINOMIAL Luego ker(A) = ⟨vr+1 , · · · , vn ⟩ y 159 Im(A) = ⟨u1 , · · · , ur ⟩. De hecho 1 0 . . . A+ A = vΣ+ Σv t = v 0 0 . .. 0 ··· 1 ··· 0 ··· 0 ··· . . . . . . 0 ··· 0 ··· 1 ··· 0 ··· . . . . . . . . . 0 0 ··· Queremos estudiar A+ b . . . 0 ··· 0 0 . . . 0 v t 0 0 en este caso. El producto ut1 b ut b 2 t U b = .. . utm b así σ1−1 (ut1 b) σ −1 (ut b) 2 2 . . . + t n×1 −1 t Σ U b = σr (ur b) ∈R 0 . . . 0 entonces x = V Σ+ U t b = r X σj−1 (utj b)vj j=1 Chequeamos Ax = r X σj−1 (utj b)Avj = j=1 r X (utj b)uj = PIm(A) b j=1 y vemos que es solución del problema de cuadrados mínimos. Si hubiera otro x̃ tal que Ax̃ = PIm(A) b entonces A(x̃ − x) = 0 luego x̃ − x = n X αj vj j=r+1 x̃ = x + n X j=r+1 αj vj 160 8. CUADRADOS MÍNIMOS como x ⊥ vj r+1≤j ≤n para todo n X ∥x̃∥2 = x̃t x̃ = xt x + |αj |2 j=r+1 i.e. ∥x∥ < ∥x̃∥ la pseudoinversa da la solución de menor norma 2. Relación con regularización: En el caso de rango r<n (o muy mal condicionado) también se puede pensar el problema del modo siguiente: minimizar F (z) = ∥Az − b∥2 + α2 ∥z∥2 y luego hacer α → 0. El término se elige α2 para garantizar signo 2 2 La expresión: α ∥z∥ se denomina penalización (se penalizan valores grandes de Para cada α tenemos una solución: la denotamos ∥z∥. xα . Decimos que xα → x solución En efecto: para el mínimo de F + dada por A se tiene 2(At (Axα − b) + α2 xα ) = 0 (At A + α2 I)xα = At b en el caso mas interesante en que pero para todo α ̸= 0, At A + A tene rango r<n la matriz simétrica At A no es invertible α2 I sí lo es. xα = (At A + α2 I)−1 At b usando SVD 2 σ1 + α 2 0 0 2 2 0 σ2 + α 0 .. . 0 0 t 2 0 0 ··· A A+α I =V 0 ··· 0 . . . . . . . . . 0 0 .. ··· ··· σr2 . (At A + α2 I)−1 = 0 0 ··· ··· 0 0 ··· 2 +α 0 ··· 0 α2 · · · . . . 0 .. 0 0 ··· . 0 0 0 0 V t 0 . . . α2 1. INTERPOLACIÓN POLINOMIAL 2 (σ1 + α2 )−1 0 0 0 (σ22 + α2 )−1 0 .. . 0 0 0 0 · · · V 0 0 ··· . . . . . . . . . 0 0 .. . ··· ··· 161 0 0 ··· ··· 0 0 ··· (σr2 + α2 )−1 0 ··· 0 α−2 · · · . . . 0 .. 0 0 ··· . (At A + α2 I)−1 At = (At A + α2 I)−1 V Σt U t = σ 1 0 0 ··· 0 ··· 0 σ12 +α2 σ2 0 ··· 0 · · · 0 0 2 +α2 σ 2 .. 0 . 0 0 0 · · · 0 t σr 0 · · · σ2 +α2 0 · · · 0 V 0 U r 0 0 · · · 0 0 · · · 0 . . . . . .. . . . . .. . . . . 0 . .. . 0 0 ··· 0 0 0 si hacemos α→0 (At A + α2 I)−1 At → A+ . 0 0 0 0 V t 0 . . . α−2 Bibliografía [1] J. W. Demmel Applied Numerical Linear Algebra SIAM, 1996. [2] T. Eirola, O. Nevanlinna, Numerical Linear Algebra, Iterative Methods, Lecture Notes, Mat. 1.175, Institute of Mathematics, Helsinki Univ. of Technolgy, 2003. [3] G. Golub, C.F. Van Loan, Matrix Computations, 3rd. Ed., The Johns Hopkins University Press, 1996. [4] J. M. Ortega, Numerical Analysis: A second course. SIAM, 1990. [5] L. N. Trefethen, D.Bau III, Numerical linear algebra, SIAM 1997. [6] R. S. Varga, Matrix Iterative Analysis, Prentice-Hall, 1962. [7] J. Wilkinson 1984. The perdious polynomial Studies in Numerical Analysis, pp. 1-28, MAA Stud. Math., 24, Matrix Analysis, Cambridge University Press, 1990. Algebra, Springer, 2002. [8] R. Horn, C. Johnson [9] S. Lang 163