MÉTODOS MATEMÁTICOS (Curso 2011-2012) Tercer Curso de Ingeniería Aeronáutica Departamento de Matemática Aplicada II. Universidad de Sevilla LECCIÓN 4: CÁLCULO DE AUTOVALORES Introducción Los autovalores están presentes en muchas cuestiones de orden práctico. Así, por ejemplo, el régimen de enfriamiento de un sólido homogéneo es proporcional al autovalor de módulo más pequeño del operador Laplaciano en la región dada por el volumen de dicho sólido, o la frecuencia principal de vibración de una estructura o de un sólido cualquiera viene dada por la raíz cuadrada del autovalor de módulo más pequeño del operador de Navier en la región ocupada por el sólido o estructura. El primer autovalor del operador de Stokes da en ocasiones idea de para qué numero de Reynolds se desestabiliza el ujo básico de un uido. Los autovalores de estos operadores se aproximan en la práctica mediante los autovalores de matrices adecuadas. Estudiamos en esta lección el cálculo de los autovalores de una matriz. Índice 1. CUESTIONES DE REPASO 1 2. MÉTODOS NUMÉRICOS PARA EL CÁLCULO DE AUTOVALORES Y AUTOVECTORES 4 2.1. 2.2. 2.3. 2.4. Introducción . . . . . . . El método de la potencia El método de la potencia La iteración QR . . . . . . . . . . . . . . . inversa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 4 9 11 3. CUESTIONES RELACIONADAS 17 4. CUESTIONES Y PROBLEMAS 20 3.1. Localización de autovalores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2. Matrices no diagonalizables y matrices fuertemente no normales . . . . . . . . . . . 17 18 1. CUESTIONES DE REPASO Recuerde que un autovalor de una matriz A cuadrada es un escalar λ para el cual existe un vector no nulo v de modo que Av = λv. 1 Dado un autovalor λ de una matriz A, todos los vectores v que verican la relación anterior reciben el nombre de autovectores de A asociados al autovalor λ. Asociados a un autovalor dado, hay innitos autovectores (todos aquéllos proporcionales a uno dado no nulo). Si λ es autovalor, debe haber un autovector v no nulo que es solución no nula del sistema homogéneo (λ I − A)v = 0, y por tanto es obligado que det(λI − A) = 0 (en otro caso la única solución del sistema anterior sería la nula y λ no sería autovalor). Los autovalores de una matriz A son entonces las raíces de su polinomio característico pA (x) = det(xI − A). Eso asegura que el número de autovalores de A distintos es a los sumo es grado de pA (x) (m si A es m × m). Si pA (x) tiene raíces multiples, el número de autovalores distintos es estrictamente menor que m. La multiplicidad de cada raíz de pA se conoce como multiplicidad (algebraica) del autovalor correspondiente. Un procedimiento para calcular los autovalores de una matriz es resolver la ecuación pA (x) = 0, aunque en la práctica sólo es útil para matrices 2 × 2. Una matriz A de dimensiones m × m se dice que es diagonalizable si hay una base de Rm (o de Cm ) formada por autovectores de A. Es término "diagonalizable"proviene de que si v1 , . . . , vm forman una base de Rm y Avj = λj vj , j = 1, . . . , m la matriz m × m V = [v1 , . . . , vm ], cuyas columnas son los vectores v1 , . . . , vm , satisface que AV = V D (o V −1 AV = D), donde D es la matriz diagonal D= λ1 0 0 ... 0 0 λ2 0 ... 0 .. . . . . .. .. . . . . . 0 . . . 0 λm−1 0 0 ... 0 0 λm . ya que AV = A[v1 , . . . , vm ] = [Av1 , . . . , Avm ] = [λ1 v1 , . . . , λvm ] = V D. Otra manera de decir que A es diagonalizable es decir que A es semejante a una matriz diagonal. Recuerde que dos matrices A y B son semejantes si existe una matriz U invertible de modo que A = U BU −1 , y que dos matrices semejantes tienen el mismo polinomio característico (los mismos autovalores con la misma multiplicidad, por tanto) aunque no necesariamente los mismos autovectores. 2 Los autovectores de una matriz A asociados a autovalores distintos son linealmente independientes, por tanto una matriz es diagonalizable si y solamente si cada autovalor tiene tantos autovectores independientes como indique su multiplicidad. Recuerde sin embargo que no todas las matrices son diagonalizables. El ejemplo más sencillo es · ¸ 1 1 , A= 0 1 cuyo polinomio característico es pA (x) = det(xI − A) = (x − 1)2 y por tanto λ = 1 es su único autovalor (y es doble). Calculamos sus autovectores encontrando las soluciones independientes de (A − λI)x = 0. Puesto que · A−I = 0 1 0 0 ¸ queda la ecuación x2 = 0, cuyas soluciones son todas las proporcionales a · v= 1 0 ¸ , y por tanto no hay dos autovectores de A independientes. Recuerde que si A matriz m × m es real y simétrica entonces, en primer lugar, todos sus autovalores son reales , y, en segundo lugar, autovectores suyos asociados a autovalores distintos no sólo son independientes sino que además son ortogonales entre sí. Aún más, si A es simétrica siempre es diagonalizable , y además se puede elegir la base de autovectores de manera que sea una base ortonormal (vectores ortogonales entre sí y de norma 1). La matriz Q = [q1 , . . . , qm ] cuyas columnas son los elementos de dicha base es por tanto una matriz ortogonal (QT Q = I ). Esta propiedad es tan importante que se la resumimos a continuación. A matriz m × m es simétrica ⇔ ∃Q con Q−1 = QT y D diagonal tt. qq. A = QDQT . Por último recuerde que cuando una matriz A de dimensiones m × m no es diagonalizable, se puede encontrar una base de Rm , cuyos elementos v1 , . . . , vm se conocen como autovectores generalizados de modo que la matriz V = [v1 , . . . , vm ], cuyas columnas son dichos vectores, satisface que AV = V B, donde B es la matriz diagonal por bloques, B1 O B = ... O O O O B2 O .. .. . . ... ... O O 3 ... ... .. . Bk−1 O O O .. . , O Bk siendo k el número de autovalores de A distintos dos a dos, y si estos son λ1 , . . . , λk , cada bloque Bj tiene por dimensión la multiplicidad del autovalor λj , y además λj es el único autovalor de Bj . Hay una forma especial de elegir los vectores v1 , . . . , vm cuya matriz B resultante se conoce como forma de Jordan de A. Pero, esté Vd. tranquilo, que el cálculo de autovectores generalizados y de la forma de Jordan es un problema muy mal condicionado, y nadie en su sano juicio se ocupa de ello. 2. MÉTODOS NUMÉRICOS PARA EL CÁLCULO DE AUTOVALORES Y AUTOVECTORES 2.1. Introducción El problema de calcular los autovalores de una matriz está hoy día bien resuelto desde el punto de vista numérico, siempre que se trate de matrices cuyas dimensiones no sean exageradamente grandes y que no tengan autovalores con autovectores asociados que, siendo independientes, sean casi paralelos. El gran avance en cálculo de los autovalores de una matriz lo produjo la invención de la iteración QR (OJO: no confundir con la descomposición QR, que una cosa es la descomposición y otra la iteración). Dicha iteración QR fue inventada independientemente en 1961 por J.G. F. Francis y V. N. Kublanovskaya, y las mayores aportaciones para su compresión y desarrollo se deben a J. H. Willkinson, y están recogidas en su obra The Algebraic Eigenvalue Problem (Clarendon Press, Oxford, 1965). Tres son los métodos que estudiaremos en esta lección. El método de la potencia para el cálculo del autovalor de mayor módulo de una matriz. El método de la potencia inversa para el cálculo del autovector asociado a un autovalor conocido. La iteración QR básica para el cálculo de todos los autovalores de una matriz. El comando eig de Matlab implementa una versión de la iteración QR excesivamente sosticada para las pretensiones de este curso. Puede verse una descripción del mismo en G. H. Golub & C. F. Van Loan, Matrix Computations. Third Edition , The John Hopkins University Press, 1992. Existen otras técnicas más modernas, pero no tan robustas y todavía por desarrollar completamente. Entre ellas, el conocido como método de Arnoldi reiniciado implícitamente, creado en 1996 por Sorensen y Lehoucq, que se utiliza en el comando eigs de Matlab. No veremos este tipo de técnicas pues se salen del alcance de este curso. 2.2. El método de la potencia El conocido como método de la potencia sirve para calcular el autovalor de módulo más grande de una matriz real. Sólo es válido (converge) cuando dicho autovalor de módulo más grande es real y es simple, o, en caso de ser múltiple, tiene asociados tantos autovectores independientes como indique su multiplicidad. 4 Explicamos aquí el fundamento del caso más sencillo, que se da cuando la matriz es diagonalizable. Sea A una matriz m × m y denotemos sus autovalores como λ1 , . . . , λm , notación que empleamos tras haberlos ordenado por tamaño, |λ1 | > |λ2 | ≥ . . . ≥ |λm | . Observe que sólo se pide que el primer autovalor sea de módulo estrictamente más grande que los demás . Entre los demás, puede haber autovalores múltiples, pero el primero debe ser simple1 . Sean v1 , . . . , vm una base de autovectores asociados, esto es Avj = λj vj , j = 1, . . . , m. Para un vector x ∈ IRm , tendremos que x = α1 v1 + α2 v2 + · · · + αm vm , para ciertos escalares α1 , . . . , αm . Por tanto, n A x= α1 λn1 v1 + α2 λn2 v2 + ··· + αm λnm vm Ahora bien, puesto que ¯ ¯ ¯ ¯ ¯ λ2 ¯ ¯ ¯ ¯ ¯ < 1, . . . , ¯ λm ¯ < 1 ¯ λ1 ¯ ¯ λ1 ¯ de donde se sigue que ³ lı́m α2 ⇒ = λn1 ³ lı́m α1 v1 + α2 ³ λ ´n n→∞ ³ λ ´n 2 λ1 2 λ1 v2 + · · · + α m λ1 λ1 Por ello, para n sucientemente grande se tiene que ⇒ ³ λ ´n n→∞ m n→∞ v2 + · · · + α m = . . . = lı́m ³ λ ´n 2 An x ≈ λn1 α1 v1 ³ λ ´n m λ1 ³ λ ´n m λ1 ´ vm . (1) = 0, ´ vm = 0. An+1 x ≈ λ1 An x. Por tanto, si denotamos y = An+1 x, z = An x, para cualquier componente zj 6= 0 de z tenemos λ1 ≈ yj . zj En la práctica, no es conveniente calcular An x, pues si hay autovalores de módulo mayor que uno, An x puede tener componentes muy grandes y, eventualmente, producir overow"(el sistema de coma de otante del ordenador no puede almacenar un número tan grande). Por ello, el algoritmo del método de la potencia es como sigue. 1) Tomando x ∈ IRm cualquiera, se hace z ← x/ kxk . 1 El método de la potencia también produce resultado correctos si λ1 es múltiple, siempre que tenga tantos autovectores independientes asociados como su multiplicidad algebraica 5 2) Hasta que se repitan tantas cifras decimales en λ como nos interese2 , se repite lo siguiente 2.1) y ← Az 2.2) Si j es tal que |zj | = máx1≤i≤m |zi | λ← yj , zj 2.3) z ← y/ kyk Tras realizar este proceso tendremos que λ ≈ λ1 , z≈ v1 . kv1 k El propósito de dividir por kyk en el paso 2,3) es evitar el overow antes mencionado Ejemplo. Para la matriz 1 0 1 A = 0 1 1 , 1 1 0 cuyos autovalores son λ1 = 2, λ2 = 1 y λ3 = −1, ejecutamos el método de la potencia en Matlab. Para ello ejecutamos primero, x=rand(3,1); z=x/norm(x); para crear un vector aleatorio de norma 1. A continuación repetimos la siguiente línea unas cuantas veces, y=A*z; [zm,j]=max(abs(z)); lambda=y(j)/z(j); z=y/norm(y); lambda El resultado es lambda lambda lambda lambda lambda lambda lambda lambda lambda lambda lambda lambda lambda lambda lambda = = = = = = = = = = = = = = = 1.6387 1.7587 1.8746 1.9268 1.9653 1.9807 1.9911 1.9951 1.9978 1.9988 1.9994 1.9997 1.9999 1.9999 2.0000 2 Dicho de otro modo, hasta que dos aproximaciones consecutivas a λ disten menos que una tolerancia previamente establecida 6 Podemos comprobar que lo encontrado es una aproximación a un autovalor y su correspondiente autovector calculando la norma del vector A − λv , y viendo que sale una cantidad del orden del error obtenido en λ (en este caso, inferior a 10−4 ). Ejecutamos pues norm((A-lambda*eye(3))*z) obteniendo la respuesta, ans = 1.8706e-05 que es, efectivamente, un valor pequeño. El ejemplo anterior muestra también otro detalle importante del método de la potencia. Si (n) llamamos λ1 a la aproximación a λ1 en el paso n-ésimo del método de la potencia, se tiene que el error satisface que ¯ ¯ λ2 ¯ ¯ ¯, ¯λ1 − λ(n+1) ¯ ≈ ¯λ1 − λ(n) n → ∞. 1 1 λ1 (6) (7) (Compare por ejemplo los errores de las aproximaciones sexta λ1 = 1,9807, séptima, λ1 = 1,9911 (7) y octava, λ1 = 1,9951, que son, respectivamente, 0.0193, 0.0089, 0.0045). Este hecho se explica a partir de la expresión (1), pues el término (asintóticamente) más grande después del autovector α1 v1 es el correspondiende a v2 . El hecho de que los errores decaigan como (λ2 /λ1 )n hace que en ocasiones se busquen los autovalores de la matriz A − µI , y luego se les sume µ a los autovalores encontrados para recuperar los de A. El propósito no es otro que hacer que el cociente (λ2 − µ)/(λ1 − µ) sea signicativamente más pequeño (en módulo) que λ2 /λ1 , y así efectuar menos iteraciones. Aunque no es de uso generalizado, el método de la potencia cuando se resta un múltiplo de la identidad para acelerar la convergencia se conoce con el nombre de método de la potencia trasladado . Autovalor de módulo más pequeño. También es posible encontrar el autovalor de módulo más pequeño si se satisface |λ1 | ≥ |λ2 | ≥ . . . ≥ |λm−1 | > |λm | > 0. (2) pues dado que los autovalores de A−1 son µ1 = 1 1 1 1 > µ2 = ≥ . . . ≥ µm−1 = ≥ µm = λm λm−1 λ2 λm se puede aplicar el método de la potencia a la matriz A−1 (¾cree Vd. que será necesario calcular A−1 ?) Ejemplo (Cont.). Intentamos calcular el autovalor más pequeño de la matriz del ejemplo anterior 1 0 1 A = 0 1 1 , 1 1 0 (recuerde que los autovalores son λ1 = 2, λ2 = 1 y λ3 = −1) aplicando el método de la potencia a A−1 . Ejecutando x=rand(3,1); z=x/norm(x); 7 a continuación [L,U]=lu(A); y repitiendo la linea, y=U\(L\z); [zm,j]=max(abs(z)); mu=y(j)/z(j); z=y/norm(y); lambda=1/mu el resultado es lambda lambda lambda lambda lambda lambda lambda lambda lambda lambda lambda lambda lambda lambda lambda lambda lambda lambda lambda lambda lambda lambda lambda = = = = = = = = = = = = = = = = = = = = = = = 1.6239 1.1071 1.4120 0.8846 1.3157 1.2546 1.2865 1.2709 1.2787 1.2748 1.2768 1.2758 1.2763 1.2761 1.2762 1.2761 1.2762 1.2761 1.2761 1.2761 1.2761 1.2761 1.2761 y ½HORROR DE LOS HORRORES!. Nos ha ocurrido lo peor que nos puede ocurrir haciendo cálculos con ordendor: ½UNOS RESULTADOS ERRÓNEOS QUE PARECEN CORRECTOS! (¾Sabe Vd. por qué son erróneos?). Podemos comprobar que son erróneos calculando la norma del vector (A − λI)v con el comando norm((A-lambda*eye(3))*z) obteniendo la respuesta, ans = 3.9404e-01 valor mucho mayor que 10−4 , que es una cota superior del error absoluto con el que hemos calculado λ = 1,2761 (compare con el valor que obtuvimos en el caso anterior). Note entonces que la comprobación de calcular kAv − λvk conviene hacerla siempre para validar los resultados obtenidos. 8 Si ha reexionado sobre las preguntas que hemos ido haciendo se habrá dado cuenta de que los autovalores de A verican que |λ1 | > |λ2 | = |λ3 |, y esto contradice (2), que es la condición que garantiza la convergencia del método de la potencia cuando se aplica a A−1 . Una posible solución en estos casos puede ser cambiar los autovalores A mediante una traslación por un múltiplo de la identidad. Así por ejemplo, dado que hemos calculado previamente λ1 = 2, podemos probar a aplicar el método de la potencia a la inversa de A + 2I , cuyos autovalores son 4, 3 y 1. De este modo ejecutamos, x=rand(3,1); z=x/norm(x); a continuación [L,U]=lu(A+2*eye(3)); y repetimos la linea, y=U\(L\z); [zm,j]=max(abs(z)); mu=y(j)/z(j); z=y/norm(y); lambda=1/mu-2 obteniendo lambda = -0.6196 lambda = -0.6940 lambda = -1.1097 lambda = -1.0230 lambda = -1.0055 lambda = -1.0014 lambda = -1.0003 lambda = -1.0001 lambda = -1.0000 lambda = -1.0000 lambda = -1.0000 lambda = -1.0000 que es el valor correcto. Advertencia. No saque la conclusión errónea de que con una simple traslación se solucionan los problemas de convergencia del método de la potencia cuando se produce empate entre los módulos de los autovalores dominantes. Efectuar traslaciones a una matriz requiere un buen conocimiento de los autovalores de la misma que es, en la práctica, circunstancia no muy frecuente. 2.3. El método de la potencia inversa Si se tiene una aproximación µ a un autovalor λ de una matriz A, el procedimiento conocido como método de la potencia inversa para el cálculo de un autovector asociado se basa en que A − µI tiene como autovalor a λ−µ que es de módulo muy pequeño, y por lo tanto en la matriz (A−µI)−1 el autovalor σ1 = 1/(λ − µ) dominará extraordinariamente sobre los demás (i.e., el cociente σ2 /σ1 será extraordinariamente pequeño, por lo que el método de la potencia aplicado a (A − µI)−1 convergerá rápido. El método de la potencia inversa es pues como sigue. 9 1) Se toma y ∈ IRm cualquiera, y se hace b ← y/ kyk . 2) Hasta que se repitan tantas cifras decimales en b como nos interese3 , se repite lo siquiente 2.1) Se calcula la solución x del sistema (A − µI)x = b. 2.3) b ← x/ kxk. Al nalizar este proceso el vector b será una aproximación a un autovector v asociado a λ. Ejemplo. Para la misma matriz que ya hemos utilizado 1 0 1 A = 0 1 1 , 1 1 0 (de autovalores λ1 = 2, λ2 = 1 y λ3 = −1) ejecutamos el método de la motencia inversa en Matlab, y=rand(3,1); b=y/norm(y); a continuación [L,U]=lu(A-1.9999*eye(3)); y repetimos x=U\(L\b); b=x/norm(x) obteniendo z = 0.5773 0.5774 0.5774 z = 0.5774 0.5774 0.5774 esto es, en dos iteraciones hemos p obtenidoT una aproximación con al menos 4 cifras decimales correctas al autovector v1 = (1/ (3))[1, 1, 1] asociado al autovalor λ1 = 2. Quizá lo más destacado del método de la potencia inversa es que si µ es una buena aproximación a λ, la matriz A − µI está muy mal condicionda, por ser casi singular. Sin embargo, los errores que se producen trabajan a nuestro favor. 3 Dicho de otro modo, hasta que dos valores consecutivos de x disten en norma menos que una tolerancia previamente establecida 10 2.4. La iteración QR En Matlab, dada una matriz cuadrada A, autovalores de A. Por ejemplo, para la matriz de 1 A= 0 1 el comando eig(A) devuelve un vector con los los ejemplos de la sección anterior, 0 1 1 1 , 1 0 (con autovalores λ1 = 2, λ2 = 1 y λ3 = −1) ejecutando este comando devuelve, ans= -1.0000 1.0000 2.0000 El comando eig también puede devolver las matrices V y D tales que AV = V D Para ello se debe ejecutar [V,D]=eig(A). Si lo hacemos para la matriz que nos ocupa obtenemos V = -0.4082 -0.7071 -0.5774 -0.4082 0.7071 -0.5774 0.8165 0.0000 -0.5774 D = -1.0000 0 0 0 1.0000 0 0 0 2.0000 Las tres columnas de la matriz V son de norma 1 (Matlab siempre saca las columnas de la matriz V con norma 1) y son proporcionales a los vectores −1 −1 1 −1 , 1 , 1 , 2 0 1 respectivamente, vectores que se comprueba fácilmente que son autovectores de A. El procedimiento que utiliza Matlab para calcular los autovalores de la matriz se conoce como iteración QR (no confundir con la descomposición QR). Es como sigue, 1) Repetir hasta obtener una matriz de autovalores calculables. 1.1) Hallar una descomposición QR de A A = QR 1.2) Multiplicar R por Q, A ← RQ 11 Ejemplo 7. Tomemos la matriz 13 5 2 2 3 11 6 6 A= 2 2 8 4 , 2 2 4 8 cuyos autovalores son λ1 = 20, λ2 = λ3 = 8, y λ4 = 4, y empezemos a repetir [Q,R]=qr(A);A=R*Q Tras repetir 14 veces esta línea, obtenemos la respuesta A = 20.0000 0.0000 0.0000 0.0000 0.0000 8.0000 0.0000 0.0000 4.0000 4.4721 8.0000 0.0000 0.0000 0.0001 0.0000 4.0000 matriz que es triangular superior, y que como vemos tiene los mismos autovalores que la matriz A de la que hemos partido. No explicaremos aquí por qué la iteración QR converge a una matriz en la que se pueden calcular fácilmente los autovalores. Sin embargo, debe saber lo siguiente: i) Si A = QR es una descomposición QR de A, entonces la matriz RQ es semejante a A, y, por tanto, tiene los mismos autovalores. Esto es debido a que Q−1 AQ = Q−1 (QR)Q = RQ. ii) La matriz a la que converge el algoritmo QR no tiene por qué ser triangular superior como la del ejemplo que hemos visto. En ocasiones, convergerá a una matriz triangular superior por bloques, esto es, de la forma B11 B12 . . . B1k B22 . . . B2k T = donde Bjj es 2 × 2 ó 1 × 1, j = 1, . . . k. (3) .. , . . . . Bkk (Véase el Ejercicio 5). Los autovalores de esta matriz son fáciles de calcular pues su polinomio característico es det(xI − T ) = det(xI − B11 )det(xI − B22 ) . . . det(xI − Bkk ), y al ser los bloques diagonales Bjj de orden 1, u orden 2, los polinomios det(xI − Bjj ) son de grado 1 o de grado 2, y por lo tanto es sencillo calcular sus raíces. En otras palabras, los autovalores de A son los de los bloques diagonales Bjj . iii) En ocasiones ni siquiera converge la iteración QR, aunque lo que ocurre es que a partir de un iterante determinado se obtiene (salvo errores proporcionales a la unidad de redondeo) una matriz con la estructura de T en (3), pero pudiendo cambiar las componentes de los bloques diagonales Bjj de iteración en iteración (véase el Ejercicio 7). 12 iv) El algoritmo aquí explicado es la versión más básica. Lo que se programa en los ordenadores (por ejemplo, lo que ejecuta el comando eig de Matlab) es un poco más sosticado. Factorización de Schur. La matriz T en (3) se conoce como forma de Schur (real) de A. De hecho se tiene el siguiente teorema que es de fácil demostración (Véanse por ejemplo o.c. Golub & Van Loan, Theorem 7.1.3, o el Teorema 24.9 de L. N. Trefethen & D. Bau, III, Numerical Linear Algebra SIAM, Philadelphia, 1997). Teorema 1 Dada una matriz real A de dimensiones m × m, existe una matriz ortogonal Q de igual dimensión de modo que QT AQ = T , donde T es una matriz real con la forma y características que se indican en (3). Si A tiene autovalores reales, entonces se puede elegir Q de modo que T sea triangular superior. Por último, tanto si A es real como compleja, existe una matriz compleja U T T unitaria (U −1 = U ) de modo que U AU es matriz compleja m × m triangular superior. El comando schur de Matlab devuelve la forma de Schur real de una matriz si ésta es real, o compleja en caso contrario. Igual que el comando eig, se puede utilizar como T=schur(A) para obtener sólamente la matriz T , o bien como [Q,T]=schur(A) si además se desea la matriz de paso Q. El procedimiento de cálculo que utiliza este comando no es otro que la iteración QR. Costo operativo. Cada paso de la iteración QR requiere una factorización QR de una matriz m×m. Por razones de estabilidad numérica dicha factorización se lleva a cabo mediante transformaciones de Householder. En cada paso de la iteración QR, sólamente la factorización QR requiere (según lo visto en la Lección 2) 4 3 m ops. 3 Se trata por tanto de un método costoso desde el punto de vista computacional. Caso de matrices en forma de Hessenberg. Para atenuar el costo operativo de cada paso de la iteración QR, en la práctica, se transforma la matriz A en otra semejante H con forma de Hessenberg. Una matriz H se dice que tiene forma de Hessenberg4 (o que es de Hessenberg) si es nula por debajo de su primera subdiagonal, esto es, es de la forma h11 h12 h13 ... h1m h21 h22 h23 ... h2m 0 h32 h33 . . . h 3m H= . .. . . . . .. .. . . . . . 0 . . . 0 hm,m−1 hm,m Si la matriz H es de Hessenberg, calcular su factorización QR mediante transformaciones de Householder se puede hacer en O(m2 ) ops en vez de O(m3 ) ops. Para entenderlo basta estudiar el primer paso de la factorización QR. Observe que si B es la matriz 2 × 2 de Householder tal que ¸ · ¸ ¸· · α h11 b11 b21 = , h21 0 b21 b22 4 En rigor, de Hessenberg superior. 13 entonces la matriz H1 m × m dada por · H1 = B OT O I ¸ , es también de Householder, y al ser la primera columna de H nula a partir de su tercera componente, se tiene que · ¸ α bT H1 H = , 0 H (2) con H (2) de Hessenberg pues, dado que las m − 2 m − 2 últimas las de H (2) son las de H . Ejemplo. Para la matriz 3 5 4 0 H= 0 3 0 0 la matriz B es 1 B= 5 · −3 −4 −4 3 la matriz H1 es pues y ¸ , 1 5 pues últimas las de H1 son las de la identidad, las 5 5 1 5 · 5 5 , 2 6 −3 −4 −4 3 ¸· 3 4 ¸ · = −5 0 ¸ , −3 −4 0 0 1 −4 3 0 0 , H1 = 0 0 5 0 5 0 0 0 5 −3 −4 0 0 3 5 1 −4 3 0 0 4 0 H1 H = 0 0 5 0 0 3 5 0 0 0 5 0 0 5 5 1 5 5 −5 −3 −7 −7 5 = 0 −4 −1 −1 . 2 0 3 1 2 6 0 0 5 6 Puesto que al multiplicar H1 H solo alteramos las dos primeras las de H , el costo de este producto es de 4m ops. Para seguir reduciendo H1 H a triangular superior, sólo tendremos que operar en la matriz H (2) , que es de Hessenberg y de dimensión (m − 1). Luego estamos en la situación anterior pero con una dimensión menor. Luego el costo en ops de los productos por las matrices de Householder para llegar a la matriz R es 4 m−2 X (m − j) = 2(m + 2)(m − 1) + (m − 1)r, j=0 donde r es el costo en ops de calcular una raíz cuadrada. Además la matriz Q es Q = H1 H2 . . . Hm−2 . 14 Dado que las matrices Hj son la identidad excepto una caja 2 × 2 en algún punto de la diagonal, es fácil ver que la construcción de Q se puede llevar a cabo con un costo aproximado de 2m(m − 1) ops. Pero, y aún más importante, es también fácil razonar que Q es de Hessenberg. Estudie si no el siguiente ejemplo. 1 −1 0 0 1 0 0 0 1 0 0 0 −1 −1 0 0 0 1 −1 0 0 0 0 1 = 0 0 1 0 0 −1 −1 0 0 0 1 −1 0 0 0 1 0 0 0 1 0 0 −1 −1 1 −1 1 −1 1 0 0 0 1 −1 1 0 −1 −1 1 −1 0 0 1 0 . = −1 −1 0 1 = 0 −1 −1 0 0 0 1 1 −1 0 −1 −1 0 0 −1 −1 0 0 −1 −1 0 0 0 1 Por último, note que si Q es de Hessenberg y R triangular superior, entonces el producto RQ es de Hessenberg (recuérdese la interpretación del producto matricial en términos de combinaciones lineales de las columnas de la primera matriz o de las las de la segunda). Además, no es difícil deducir que el costo de efectuar el producto RQ es aproximadamente de 2m2 ops En resumen, si H es de Hessenberg, i) Si H = QR es una descomposición QR de H , entonces la matriz Q es de Hessenberg. ii) El producto RQ es de Hessenberg. iii) El costo total de un paso de la iteración QR es O(6m2 ) ops, y en el caso de matrices simétricas, O(10m) ops. (Véase siguiente epígrafe). Caso de matrices simétricas. Si H es una matriz de Hessenberg y además es simétrica, por fuerza es tridiagonal, con lo que la factorización QR y el producto RQ se puede hacer con un coste total de 10m ops aproximadamente. Reducción a forma de Hessenberg. Vista la reducción del costo operativo en un paso de la iteración QR en el caso de una matriz en forma de Hessenberg, los algoritmos que implementan la iteración QR en una matriz A, transforman primero A en otra matriz H semejante a A (y por tanto con los mismos autovalores que A) pero de Hessenberg. El proceso de reducción a forma de Hessenberg se hace mediante transformaciones de Householder, y es muy sencillo de entender. Escribamos la matriz A de orden m × m como α γ dT A = β δ eT , b c B con b, c, d, e ∈ Rm−2 y B matriz (m − 2) × (m − 2). Si fuésemos a hallar la factorización QR buscaríamos una matriz de Householder que transformase la primera columna de A en un vector proporcional al primer vector coordenado de Rm . Para reducir A a forma de Hessenberg, la idea es la misma pero olvidándose de la primera la [α, γ, dT ] de A, y procediendo como si buscásemos la factorización QR de la matriz formada por las restantes las de A, 15 Siguiendo esta idea, buscamos entonces la matriz de Householder G de dimensiones (m − 1) × (m − 1), tal que · ¸ · ¸ β β̃ G = . b 0 Entonces la matriz H1 de dimensión m × m dada por · ¸ 1 0T H1 = 0 G es también de Householder y, · ¸ α T 1 0 β H1 A = 0 G b efectuando el producto α γ dT γ dT α ¸ γ ¸ dT ¸ · · · = β̃ δ̃ ẽT δ eT = β δ eT G G G c B b c B 0 c̃ B̃ y dado que H1−1 = H1T = H1 , la matriz H1 AH1T es semejante a A (por lo que autovalores) y es de la forma ¸ α [ γ dT ]GT α γ dT · α γ̂ T 1 0 T T T T H1 AH1 = β̃ δ̃ ẽ = β̃ [ δ̃ ẽ ]G = β̃ δ̂ 0 GT 0 [ c̃ B̃ ]GT 0 c̃ B̃ 0 ĉ tiene los mismos dˆT êT , B̂ esto es, no ha afectado a la primera columna de H1 A. Notemos entonces que la primera columna de la matriz resultante corresponde a una matriz de Hessenberg. Ahora se repite lo que hemos hecho en A pero en la matriz · ¸ δ̂ êT , ĉ B̂ esto es, buscamos una matriz G̃ de Householder de dimensiones (m − 2) × (m − 2) de modo que G̃c̃ tenga todas sus componentes nulas excepto la primera, y completamos G̃ con el borde superior de la identidad hasta una matriz H2 de tamaño m × m 1 0 0T H2 = 0 1 0 T , 0 0 H10 de modo que la matriz H2 (H1 AH1T ) tiene sus dos primeras columnas en forma de Hessenberg, y como el producto (H2 (H1 AH1T ))H2T deja inalteradas las dos primeras columnas de (H2 (H1 AH1T )), la matriz H2 H1 AH1T H2T tiene sus dos primeras columnas de Hessenberg. Siguiendo con este proceso, pues, la matriz T Hm−2 . . . H1 AH1T . . . Hm−2 = (Hm−2 . . . H1 )A(Hm−2 . . . H1 )−1 es de Hessenberg y semejante a A. Compruebe que ha comprendido este proceso haciendo el Ejercicio 11. Si se cuenta el número de ops que se realizan en este proceso resulta ser de 10 m3 ops, y otros 3 4 3 m ops si se desea construir la matriz Q = Hm−2 . . . H1 . 3 Matlab dispone del comando hess para obtener una matriz de hessemberg ortogonalmente semejante a otra dada. Resumen. En la práctica pues, la iteración QR se lleva a cabo 16 1) Reduciendo primero A a forma de Hessenberg, con un coste de O( 10 m3 ) ops. 3 2) Aplicando la iteración QR a la matriz de Hessenberg resultante, con un coste de O(6m2 ) ops por paso, o de O(10m) en el caso en A sea simétrica y, por tanto, su forma de Hessenberg tridiagonal. En la práctica no es ésta la única desviación sobre el algoritmo QR básico explicado al principio de la lección. También se efectúan traslaciones para acelerar la convergencia. Un paso con traslación sería como sigue 1) Calcular la descomposición QR de H − µI , esto es, H − µI = QR 2) Efectuar H ← RQ + µI Cómo elegir el factor de traslación µ queda fuera del ámbito de este curso. Puede encontrar información en la bibliografía citada al principio de la lección. Debe saber sin embargo, que en cada paso µ se elige en función de las componentes de la subdiagonal de la matriz H , y cambia de paso en paso. 3. CUESTIONES RELACIONADAS 3.1. Localización de autovalores Debe conocer el siguiente teorema, conocido como Teorema de los Círculos de Gershgorin, y que proporciona información sobre dónde están los autovalores de una matriz A. Note que si una matriz es diagonal, sus autovalores son los elementos diagonales. El siguiente teorema nos indica que si la matriz no es diagonal, los autovalores están en círculos con centro en los elementos diagonales (Véase por ejemplo, el Teorema 7.2.1 de la o.c. Golub & Van Loan, o el Ejercicio 24.2 de la o.c. Trefethen & Bau). Teorema 2 Si A es una matriz de dimensiones m × m, los autovalores de A están en el conjunto m [ donde {z ∈ C | |z − aii | ≤ ri }, i=1 ri = X |aij | , i = 1, . . . , m. j6=i Es más, cada componente conexa de dicho conjunto contiene tantos autovalores (contados tantas veces como indique su multiplicidad) como círculos la formen. Ejemplo La matriz 5 0 −1 2 1 A= 0 1 −1 0 17 tiene sus autovalores en el conjunto formado por la unión de los círculos de centro 5 y radio 1, de centro 2 y radio 1 y de centro 0 y radio 2. 0 0 2 2 5 La unión de estos círculos tiene dos componentes conexas, una de ellas formada por el círculo de centro 5 y radio 1, que contiene 1 autovalor, λ1 = 4,8063, y otra formada por la unión de los otros dos círculos, que contiene dos autovalores, λ2 = 1,0468 + 0,5033i, y λ3 = 1,0468 − 0,5033i. Note que no tiene por qué haber un autovalor dentro de cada círculo, pero que dentro de cada componente conexa hay tantos autovalores como círculos la forman. 3.2. Matrices no diagonalizables y matrices fuertemente no normales Mencionamos en la introducción que no trataríamos el caso de matrices no diagonalizables. Tenemos una buena noticia y una mala que darle. Recordará del primer curso lo tedioso que era calcular las potencias de estas matrices. Recuerde que si A era diagonalizable y V era una matriz formada por los autovalores de A, y D la matriz diagonal con los autovalores a los que están asociados, A = V DV −1 An = V Dn V −1 , ⇒ esto es las componentes de An son combinaciones de las potencias de sus autovalores. Ejemplo. · A= y 1 A = 2 · n 1 1 −1 1 2 −1 −1 2 ¸· ¸ 3n 0 0 1n 1 = 2 ¸· · ¸· 1 1 −1 1 1 −1 1 1 ¸ 3 0 0 1 3n = 2 · ¸· 1 −1 1 1 1 −1 −1 1 ¸ ¸ , 1 + 2 · 1 1 1 1 ¸ . En cambio para matrices no diagonalizables (aparte de más engorroso el cálculo de autovectores generalizados y la matriz reducida por bloques o forma de Jordan), en la potencia n-ésima de A aparecen también potencias de n del orden de la multiplicidad de los autovalores menos uno. Ejemplo. La matriz · A= 1 1 0 1 ¸ como ya vimos en el repaso no es diagonalizable, pues 1 es autovalor doble y no hay otro autovector que sea independiente de v = [1, 0]T , y · ¸ 1 n n A = . 0 1 18 La buena noticia es que las matrices no diagolizables no existen en la práctica; sólo existen en los primeros cursos para fastidiar a los alumnos. Bueno casi . La razón de que no existan en la práctica es que basta una pequeña perturbación de la matriz para volverla diagonalizable. Para ² tan pequeño como se quiera, cualquiera de las matrices · ¸ · ¸ · ¸ 1 1 1 1 1+² 1 A= , A= , A= , 0 1−² ² 1 0 1 es diagonalizable pues tiene autovalores distintos. Puesto que en la práctica cualquier cálculo viene afectado de error de redondeo, la matriz A, a la postre, será diagonalizable en la práctica. Lo de Bueno casi es porque estas matrices diagonalizables que están cerca de una no diagonalizable presentan los mismos problemas que las no diagonalizables. Por ello, en la práctica, sí se tienen en cuenta las matrices no diagonalizables, pues aunque sean irreproducibles en un ordenador, modelan bien el comportamiento de las matrices diagonalizables pero cercanas. Así por ejemplo, efectuando cálculos en Matlab se tiene que · ¸ · ¸ · ¸ 1 100 1 106 1 0 100 106 1010 f l(A ) = , f l(A ) = , f l(A ) = , 0 1 0 1 0 1 esto es, cuando n → ∞, f l(An ) coincide con la potencia n-ésima de una matriz diagolizable con un único autovalor doble igual a 1, esto es, la identidad. De hecho, si en Matlab ejecutamos A=[1 1;0 1];[V,D]=eig(A);D A*V-V*D las respuestas son D = 1 0 0 1 ans = 1.0e-15 * 0 0 0.2220 0 esto es, D es una matriz diagonal con el único autovalor doble en la diagonal, y las columnas de V son autovectores de A salvo errores del tamaño de la unidad de redondeo. Como en principio los autovalores son todos proporcionales a v = [1, 0]T , las columnas V debe ser de la forma ¸ · √ ± 1 − ²2 , ±² para ² del tamaño de la unidad de redondeo. De hecho, ejecutando format short e; V la respuesta es V = 19 1.0000e+00 0 -1.0000e+00 2.2204e-16 esto es, las columnas de V , siendo independientes, son casi paralelas. La matriz V −1 será de tamaño grande (piense en su cálculo por la Regla de Cramer), y por tanto la matriz V estará ° muy mal ° ° acondicionada. Si calculamos una estimación de su número de condición, cond(V ) = kV k V −1 °, format short; condest(V) la respuesta es ans = 9.0072e+15 Ello explica que, aunque a efectos numéricos A es una matriz diagonalizable con 1 como único autovalor (i.e., la identidad), sin embargo An no tiene dicho comportamiento salvo para n → ∞, pues ° ° °f l(An ) − An ° ° ° ≤ C cond(V ). °An ° Las matrices que tienen una base de autovectores en la que hay al menos dos de ellos que, siendo independientes, son casi paralelos, se dicen fuertemente no normales, puesto que las matrices normales son aquéllas que poseen una base ortonormal de autovectores Aparte de las matrices simétricas, son también matrices normales las matrices antisimétricas y las matrices ortogonales. La mala noticia es que las matrices fuertemente no normales existen, y están acechándole para complicarle la vida en algún momento de su vida profesional (tal vez cuando haga el proyecto de n de carrera). Le complicarán la vida porque, como acabamos de ver, en las matrices fuertemente no normales, el número de condición tan alto de la matriz V de sus autovectores, hace irrelevante cualquier información que se tenga sobre los autovalores de la misma. Esto suele plantear problemas, por ejemplo, en Mecánica de Fluidos cuando el número de Reynolds es alto, o en problemas de convección térmica ante fuertes corrientes convectivas. En fín, si tiene mala suerte, ya lo descubrirá.5 4. CUESTIONES Y PROBLEMAS CUESTIONES Ejercicio 1 Calcule el polinomio característico de la matriz 1 0 1 A = 0 1 1 , 1 1 0 y obtenga sus autovalores y autovectores asociados. 5 Puede encontrar más información sobre este tema en L. N. Trefethen & D. Bau, III, Numerical Linear Algebra SIAM, Philadelphia, 1997. 20 Ejercicio 2 Sabiendo que los autovalores de la matriz simétrica 3 −1 3 1 −1 3 1 3 , A= 3 1 3 −1 1 3 −1 3 son λ1 = 2, λ2 = −2, y λ3 = λ4 = 6, encuentre la matriz ortogonal Q de modo que QT AQ sea diagonal. Ejercicio 3 Aplique el método de la potencia a la matriz · 1 1 1 1 A= ¸ , dos veces, la primera partiendo del vector [−2, 0]T , y la segunda partiendo del vector [1, −1]T . ¾Son esperables los resultados? ¾Están mal las explicaciones que hemos dado en la lección? ¾Es esperable un comportamiento similar en la práctica si se parte de un vector aleatorio? Ejercicio 4 Determine los valores del parámetro α para los que, partiendo de los vectores [1, 0]T y [1, 1]T , converge el método de la potencia cuando se aplica a la matriz · ¸ α 1 A= , 1 α Revise el ejercicio anterior. Ejercicio 5 Aplique la iteración QR a la matriz 2 0 0 A = 0 0 1 . 0 1 0 ¾Convergerá la sucesión de iterantes a una matriz triangular superior? ¾Qué autovalores tiene A? Ejercicio 6 ¾Por qué en los ejemplos de la lección, cuando aplicamos el método de la potencia a la matriz inversa resolvemos sistemas en vez de calcular la inversa? ¾Pór qué en esos mismos ejemplos hacemos primero una descomposición LU y luego en cada paso resolvemos sistemas con L y con U en lugar de resolver sistemas directamente con la matriz A? Ejercicio 7 Aplique la iteración QR a matrices aleatorias antisimétricas de orden 4 (pruebe con varias). Puede crear dichas matrices en Matlab con los comandos A=rand(4); A=(A-A')/2. Convénzase de que la iteración no converge pero, que a partir de un punto determinado podemos obtener sus autovalores. Ejercicio 8 Obtenga la factorización de Schur de la matriz · −1 2 3 0 21 ¸ . Ejercicio 9 Idem con la matriz 0 0 1 −2 2 1 , 4 −3 0 sabiendo que su polinomio característico es (x + 1)(x − 2)(x − 1). Ejercicio 10 Sabiendo que los autovalores de 5 6 −4 2 A= 2 6 −2 6 1 son λ1 = 9, λ2 = 6 y λ3 = −3, calcule una descomposición de Schur A = QT QT de la matriz A que satisfaga que |t11 | ≥ |t22 | ≥ |t33 | . Ejercicio 11 Obtenga mediante transformaciones de Householder la forma de Hessenberg de la matriz 2 6 7 A = 1 5 0 . 1 1 0 Ejercicio 12 Es posible que cuando estudió ecuaciones diferenciales aprendiese que dado el polinomio p(x) = xm + αm−1 xm−1 + · · · + α1 x + α0 , se llama matriz compañera del mismo a 0 1 0 ... 0 .. .. .. .. .. . . . . . A = 0 ... . 0 1 0 0 ... 0 0 1 −α0 . . . −αm−3 −αm−2 −αm−1 a) Utilizando el procedimiento de inducción, demuestre que el polinomio característico de A es p(x). b) Pruebe también que si ξ es una raíz de dicho polinomio, entonces el vector v = [1, ξ, . . . , ξ m−1 ]T es autovector asociado. c) Pruebe que si ξ es raíz de p, entonces A − ξI siempre tiene rango m − 1, y por tanto, si p tiene raíces múltiples, la matriz A nunca es diagonalizable. Ejercicio 13 (Junio 2009) Para α con valores 0 < α ≤ 1, encuentre las matrices Q y T (con |t1,1 | ≥ |t2,2 | ≥ |t3,3 | de la descomposicón de Schur A = QT QT de la matriz 3 0 2 A = α 4 − 2α −α 2 0 3 Ejercicio 14 Para α > 0 y β ∈ IR, calcular la forma de Hessenberg de la matriz A= α α α α α α β β β β 22 α β β β β α β β β β α β β β β Ejercicio 15 Demuestre que la matriz tridiagonal de orden n formada por cuatros en la diagonal principal y unos en las dos subdiagonales es simétrica denida positiva y su determinante es menor o igual que 6n . Ejercicio 16 Para α con valores 0 < α ≤ 5, encuentre las matrices Q y T (con |t1,1 | ≥ |t2,2 | ≥ |t3,3 | de la descomposicón de Schur A = QT QT de la matriz 4 0 4 A = 2 − 2α 6 − α −4 + 2α 3/2 0 3 Ejercicio 17 Sea Q una matriz m × n con m > n y tal que QT Q es la matriz identidad de orden n. Calcule los autovalores y autovectores de QQT . 23 PROBLEMAS Problema 1 Se considera la matriz 5 −5 6 1 1 0 10 −4 4 . A= 8 5 2 −1 −1 −5 −5 10 7 1. Diseñe una función de Matlab que ejecute el método de la potencia. Los argumentos de entrada deben ser, además de la matriz, el vector inicial, la toleracia T OL para la cual la iteración ¯se detiene en¯ el¯ momento en que dos aproximaciones sucesivas, λ(n) y λ(n+1) satisfa¯ (n+1) (n) (n+1) ¯ < T OL, y el número máximo de iteraciones permitidas. Los gan que ¯λ − λ ¯/¯λ argumentos de salida¯ deben ser el¯ autovalor ¯ ¯ calculado y el número de iteraciones realizadas, (n+1) (n) ¯ ¯ (n+1) ¯ ¯ y el último valor de λ −λ / λ 2. Para un número máximo de iteraciones permitidas igual a 10, 20 y 30, aplique la función diseñada en el apartado anterior a la matriz A, con T OL = 10−6 y vector inicial [1, 1, 1, 1]T . Idem con [−1, 1, 0, 0]. Describa y justique las diferencias observadas. 3. Mediante el comando eig, calcule los autovalores de A − 2I . Convergerá el método de la potencia con esta nueva matriz? 4. Repita el apartado 2 pero en lugar de tratar de aproximar el autovalor de módulo máximo de A, hágalo para el de módulo mínimo de A − 2I . Para ello, modique la función del apartado 1. 24 Problema 2 El método de la potencia sólo es efectivo cuando hay un autovalor de módulo mayor que los demás. Si en una matriz real el autovalor de mayor mayor módulo es complejo, se puede modicar el método de la potencia para que proporcione una aproximación a dicho autovalor. 1. Pruebe que si λ es autovalor complejo de A, x un autovector asociado y el polinomio real p(t) = t2 + βt + γ tiene por raíces λ y su conjugada λ entonces se satisface que A2 x + βAx + γx = 0, (4) y que si y es autovector no nulo de A asociado a otro autovalor µ 6= λ entonces A2 y+βAy+γy 6= 0. 2. Basándose en (4), se tiene el siguiente algoritmo para una matriz A de dimensiones m × m partiendo de u(0) ∈ Rm , para n = 0, 1, . . . , v (n) = Au(n) , w(n) = Av (n) . Obtener la solución x(n) = [β (n) , γ (n) ]T ∈ R2 del problema de mínimos cuadrados B (n) x(n) = −w(n) , donde B (n) es la matriz de dimensiones m × 2 cuyas dos columas son v (n) y u(n) , B (n) = [v (n) , u(n) ]. λ(n) =raiz de p(t) = t2 + β (n) t + γ (n) con parte imaginaria de signo opuesto a β (n) . ° ° u(j+1) = w(n) /°w(n) °. Si λ y λ tienen módulo estrictamente mayor que el resto de los autovalores de A, entonces λ(n) → λ cuando n → ∞. Elabore una función de Matlab que ejecute este algoritmo. Los argumentos de salida deben ser el autovalor y el número de iteraciones realizadas, y los de entrada deben ser A, el vector inicial u(0) , el número máximo de iteraciones a realizar, y la tolerancia T OL para la que la iteración se detiene si dos estimaciones consecutivas del autovalor distan menos que T OL. Nota: Para resolver el problema de mínimos cuadrados puede emplear la orden \ de Matlab. 3. Aplique la función desarrollada en el apartado anterior a la matriz 2,5 −0,5 4 −1 −2,5 2,5 2 −1 , A= 1 2 1 −1 0,5 0,5 1 4 con las siguientes especicaciones. el vector de partida es [1, 1, 1, 1]T , la tolerancia debe ser menor que 10−6 , y el número máximo de iteraciones es 10, 20, 40. Escriba los valores obtenidos de λ y de las iteraciones. ¾Qué conclusiones se pueden sacar cuando el algoritmo devuelve un valor de iteraciones igual al máximo permitido? 4. ¾Qué ocurre si se repite el proceso anterior esta vez partiendo del vector [1, −1, 0, −1]T ?. Describa y justique las diferencias observadas. 25 Problema 3 Se consideran el par de matrices (A, M ) donde 0 −5 8 −1 4 0 A= −1 −1 5 −5 −5 10 3 3 , 3 6 5 1 −1 −1 1 5 −1 −1 . M = −1 −1 6 0 −1 −1 0 6 (5) Dado un par de matrices cuadradas, A y M , se llama autovalor generalizado de dicho par a cualquier escalar λ para el que existe un vector no nulo v tal que Av = λM v . Los autovalores de una matriz son un caso particular de autovalores generalizados (correspondientes al par (A, I)). Observe que si M es invertible, entonces λ es autovalor generalizado del par (A, M ) si y sólo si λ es autovalor de M −1 A. 1. Diseñe una función de Matlab que calcule el autovalor generalizado de mayor módulo de un par (A, M ), mediante la aplicación del método de la potencia a una matriz adecuada. Los argumentos de salida deben ser el autovalor y el número de iteraciones realizadas, y en los de entrada deben estar A y M . Aplíquelo al par (A, M ) dado en (5) con las siguientes especicaciones: el vector de partida es [1, 2, 3, 4]T , la tolerancia (diferencia entre el valor absoluto de dos estimaciones sucesivas del autovalor generalizado) debe ser menor que 10−6 , y el número máximo de iteraciones es 10, 20, 40. Escriba los valores obtenidos de λ y de las iteraciones. ¾Qué conclusiones se pueden sacar cuando el algoritmo devuelve un valor de iteraciones igual al máximo permitido? 2. ¾Qué ocurre si se repite el proceso anterior esta vez partiendo del vector [−1, 1, 0, 0]T ?. Describa y justique las diferencias observadas. 3. Diseñe una función de Matlab similar a la del apartado 1 pero implementando el método de la potencia inversa para encontrar el autovalor generalizado de módulo más pequeño del par (A, M ). Pruébelo con el par (A − 1,2M, M ). ¾Cuál es pues el autovalor generalizado de módulo más pequeño de dicho par? Escriba también la función de Matlab diseñada. 4. Calcule con 6 cifras decimales correctas el valor de (N ) lı́m λmin , N →∞ (N ) donde λmin es el autovalor generalizado de módulo más pequeño AN y BN son las matrices tridiagonales de orden N − 1, 2 −1 0 ... ... 0 4 . . .. −1 1 2 −1 . . . .. .. .. .. . . . . . 1 0 . 0 (N ) , M = A(N ) = N . . .. . . . . . . . . . . . 6N ... 0 . . 0 0 . −1 2 −1 0 ... ... 0 −1 2 0 del par (A(N ) , B (N ) ) donde 1 0 ... ... 0 .. . 4 1 .. . . .. .. .. .. . . . . .. .. .. .. .. . . . . 0 .. . 1 4 1 ... ... 0 1 4 Describa cómo lo ha hecho y las instrucciones de Matlab empleadas. 26 . Problema 4 (Septiembre 2009) La iteración ortogonal es una generalización del método de la potencia y sirve para calcular los autovalores de mayor módulo de una matriz. Si en el método de la potencia se parte de un vector v de norma 1, y se repite w ← Av, λ ← v T w, v ← w/ kwk , (esta variante es equivalente a la explicada en el curso) hasta que el error relativo de dos valores de λ consecutivos sea menor que una tolerancia jada de antemano o se supere un número de iteraciones prejado, en la iteración ortogonal para calcular los p autovalores de mayor módulo se parte de una matriz V de p columnas, ortogonales entre sí y de norma 1 (por ejemplo, p columnas distintas de la identidad) y se repite W ← AV, C ← V T W, e ← autovalores de C , V ← Q, donde W = QR es descomp. QR reduducida de W , hasta que el error relativo en la norma euclídea de dos valores consecutivos de e sea menor que una tolerancia jada de antemano (o se supere el máximo de iteraciones prejado). 1. Diseñe una función de Matlab (o modique la hecha en su día para el método de la potencia) que implemente la iteración ortogonal. Los argumentos de entrada deben ser la matriz A, la matriz V inicial, la tolerancia T OL para la cual la iteración se detiene ° en el momento ° en que dos aproximaciones consecutivas, digamos e(n) y e(n−1) , satisfagan que °e(n) − e(n−1) ° /ke(n) k < T OL, y el número máximo de iteraciones permitidas. Los argumentos de salida deben ser el vector de autovalores calculado, el número de iteraciones realizadas y el último valor de ° (n) e (n−1) ° °e − e ° /ke(n) k. Escriba el listado en la hoja de respuestas. Nota. En cada iteración, después de calcular el vector e y antes de calcular el error, debe ordenar las componentes de e con el comando e=sort(e,'descend'). La descomposición QR reducida de una matriz rectangular W se calcula con el comando [Q,R]=qr(W,0). Las p primeras columnas de la identidad de tamaño m se obtienen con el comando eye(m,p). 2. Para un número máximo de iteraciones permitidas igual a 10, 20 y 30, aplique la función diseñada en el apartado anterior a la matriz 5 −5 6 1 0 10 −4 4 . A= −1 −1 8 5 −5 −5 10 7 con T OL = 10−6 y matriz inicial igual a las p primeras columnas de la identidad, para p = 1 y p = 3. Escriba los autovalores obtenidos (bastan las cuatro primeras cifras signicativas) en su hoja de respuestas. 3. Para J = 800, considere la matriz A simétrica de dimensiones (J −1)×(J −1) cuyos elementos son nulos salvo, por cada la, i = 1, . . . , J − 1, ai,i−50 = −1, ai,i = 1,3, ai,i+50 = −1. Calcule con 6 cifras signicativas correctas los 50 de mayor módulo, λ1 ≥ λ2 ≥ . . . ≥ λ50 , y escriba en su hoja de respuestas únicamente el primero λ1 y el λ50 . 27 4. Repita el punto anterior pero con J = 2400. Problema 5 Muchos comandos de Matlab son lineales (su valor en una combinación lineal de vectores es la combinación lineal de los valores de dicho comando en cada uno de los vectores). Por eso, su valor es equivalente al producto por una matriz, esto es comando(x) y A ∗ x coinciden (salvo cantidades del orden del error de redondeo), donde A es la matriz cuyas columnas son el valor de comando en las columnas de la matriz identidad. Dicha matriz recibe el nombre de matriz asociada al mencionado comando y sus autovaloresse denominan los autovalores del comando. Para vectores x de longitud N , considere el siguiente comando: real(fft(cumsum(x))) -sum(x))/sqrt(length(x)) 1. Para N = 4, escriba los autovalores del comando anterior con tres cifras signicativas. 2. Para N = 4096, calcule el autovalor dominante del comando que nos ocupa con seis cifras signicativas correctas. Nota: No intente construir la matriz asociada al comando pues se quedará sin memoria. Problema 6 Considere la matriz A simétrica de dimensiones J × J dada por (J > 1) · A= αJ rT r T ¸ donde α = 10, r = [1, 1/2, ..., 1/(J − 1)]T y T es la matriz (J − 1) × (J − 1) cuyos elementos son nulos salvo los que están en torno a la diagonal principal que toman los valores ti,i−2 = 1 2 16 30 16 1 J , ti,i−1 = − J 2 , ti,i = J 2 , ti,i+1 = − J 2 , ti,i+2 = J 2 , 12 12 12 12 12 para cada i = 1, ..., J − 1. 1. Para J = 103 , 104 , 105 , calcule la solución de Ax = b donde b es un vector de unos y escriba las ocho primeras cifras signicativas de xJ/2 . 2. Para J = 103 , 104 , 105 , calcule con ocho cifras signicativas correctas el autovalor de módulo más pequeño de A. 28