diagonalizacion.nb 1 Diagonalización de matrices Práctica de Álgebra Lineal, E.U.A.T., Grupos 1ºA y 1ºB, 2005 à Algo de teoría ¿Qué es diagonalizar una matriz? Para estudiar una matriz suele ser conveniente expresarla de forma lo más sencilla posible. Diagonalizar una matriz A es precisamente eso: escribirla de manera simple encontrando una matriz invertible P y una diagonal D (si se puede) tales que A = P D P-1 La matriz P se llama matriz de paso. Puede que esto, al principio, no parezca más simple de lo que ya era A directamente. Sin embargo, lo es desde muchos puntos de vista. Dado que las matrices suelen usarse para representar aplicaciones lineales, la expresión anterior puede verse como un cambio de base de la aplicación representada por A; entonces, esta forma de escribirlo dice: hay una base en la que la aplicación lineal A tiene una forma muy simple (diagonal). Esto es útil, por ejemplo, para clasificar una aplicación lineal y estudiar sus propiedades. Las matrices se usan para representar otras cosas como cónicas, cuádricas o formas bilineales, y en estos casos también resulta útil esta forma de expresarlas. La relación anterior entre las matrices A y D es importante y aparece en muchos contextos, así que tiene nombre propio: Cuando dos matrices cuadradas A y B verifican que A = P B P-1 para cierta matriz cuadrada P (invertible, claro) decimos que A y B son semejantes. Una matriz es diagonalizable cuando se puede diagonalizar; es decir, cuando podemos encontrar una matriz diagonal y una invertible de forma que la matriz se escriba como dijimos antes. Dicho de otra forma: una matriz es diagonalizable cuando es semejante a una matriz diagonal. En estas prácticas sólo consideraremos como diagonalizables las matrices que sean semejantes a una matriz diagonal real. Entonces, más exactamente: una matriz es diagonalizable cuando es semejante a una matriz diagonal real. ¿Cuándo y cómo podemos diagonalizar una matriz? Si conseguimos escribir una matriz A como A = P D P-1 , entonces podemos poner también A P = P D. Si D es diagonal y nos fijamos en la columna i de esta última igualdad lo que tenemos es que A xi = Λi xi (donde xi es la columna i de A y Λi es el número en el lugar i de la diagonal de D). Esto nos dice que para diagonalizar una matriz nos hace falta conocer los vectores a los que les pase algo así. Estos vectores también tienen nombre: diagonalizacion.nb 2 Si un número Λ y un vector no nulo x verifican la relación A x = Λ x diremos que Λ es un valor propio o autovalor de la matriz A y que x es un vector propio o autovector de A asociado al valor propio Λ. Es fácil ver que diagonalizar una matriz A de tamaño n×n es lo mismo que encontrar n vectores propios linealmente independientes asociados a valores propios reales, ya que entonces podemos ponerlos por columnas y conseguir así la matriz P (puedes comprobar que entonces se cumple la relación que buscamos). Entonces, para diagonalizar una matriz lo que tenemos que hacer es buscar n vectores propios suyos linealmente independientes asociados a valores propios reales. ¿Cómo encontrar valores y vectores propios de una matriz? Es fundamental, pues, hallar los valores propios de A y los vectores propios asociados. Como un vector propio Λ hace que el sistema Ax = Λx tenga solución x distinta de cero, la matriz de coeficientes A − ΛI (donde I denota la matriz identidad de orden n) debe tener determinante no nulo. Este determinante det(A−Λ I) es un polinomio en Λ de grado n y se denomina polinomio característico de A. Por lo tanto, los valores propios de A serán los ceros del polinomio característico de A. Observa que una matriz puede perfectamente tener valores propios imaginarios. Por otro lado, el conjunto de vectores propios de A asociados a un mismo valor propio Λ forman un subespacio vectorial de Rn que se llama subespacio propio asociado al valor propio Λ, y es el nú clea de la matriz A − ΛI. Para concluir si una matriz A es o no diagonalizable bastará pues averiguar si hay "suficientes" valores propios reales para construir D y si hay "suficientes" vectores propios linealmente independientes asociados; esta información nos la dará la dimensión de los subespacios propios y queda recogida en el siguiente resultado: Una matriz real cuadrada de orden n es diagonalizable si y sólo si tiene n vectores propios linealmente independientes asociados a valores propios reales. Además, el teorema espectral nos confirma un caso en el que siempre es posible diagonalizar: Toda matriz real simétrica es diagonalizable. En este caso,se puede conseguir además que las columnas de la matriz de paso P sean una base ortonormal y por lo tanto que P sea una matriz ortogonal. à Diagonalizar matrices usando Mathematica Un ordenador puede ayudarnos a encontrar los valores y vectores propios de una matriz fácilmente. Desde luego, siempre podemos hacer las mismas cuentas que hacemos a mano (encontrar el polinomio característico, hallar sus raíces, resolver los sistemas lineales necesarios...), pero Mathematica tiene dos órdenes útiles para esto: Eigenvalues y Eigenvectors (los nombres de estos comandos son las palabras en inglés para valor propio y vector propio, que a su vez toman su nombre del alemán). In[8]:= A = 882, 2, -2<, 86, 9, -17<, 86, -3, -5<<; B = 881, 1, 0<, 80, 1, 1<, 80, 0, 1<<; In[10]:= A MatrixForm 2 2 -2 y i j z j z j j z j 6 9 -17 z z k 6 -3 -5 { Out[10]//MatrixForm= diagonalizacion.nb 3 In[11]:= B MatrixForm i1 1 0z y j j z j j z j0 1 1z z k0 0 1{ Out[11]//MatrixForm= Eigenvalues nos da los valores propios de una matriz cuadrada: In[12]:= Eigenvalues@AD Out[12]= 8-8, 2, 12< In[13]:= Eigenvalues@BD Out[13]= 81, 1, 1< Eigenvectors da una lista formada por vectores propios independientes de una matriz n×n y posiblemente algunos vectores nulos. Estos vectores formarán una base cuando la matriz sea diagonalizable e incluirán vectores nulos cuando no lo sea: In[14]:= Eigenvectors@AD Out[14]= 880, 1, 1<, 85, 3, 3<, 8-20, -91, 9<< In[15]:= Eigenvectors@BD Out[15]= 881, 0, 0<, 80, 0, 0<, 80, 0, 0<< Nosotros sólo consideraremos una matriz como diagonalizable cuando sus valores propios sean todos reales: si no aparece ningún vector nulo ni ningún vector complejo en la salida de la orden Eigenvectors, la matriz es diagonalizable. Si no, no lo es. La orden Eigensystem da los mismos resultados que Eigenvalues y Eigenvectors, pero todo junto, y además con la seguridad de que los autovalores y los autovectores van en el orden correcto: el primer vector propio corresponde al primer valor propio, el segundo al segundo... In[16]:= Eigensystem@AD Out[16]= 88-8, 2, 12<, 880, 1, 1<, 85, 3, 3<, 8-20, -91, 9<<< Una última observación sobre estas órdenes: a veces es mejor escribir Eigenvalues[N[A]] en lugar de Eigenvalues[A] para obtener resultados numéricos en lugar de resultados exactos que no podemos manejar bien. à Ejemplos Una matriz diagonalizable In[17]:= A = 8824, -10, 8<, 8-7, 33, 4<, 80, 0, 38<<; A MatrixForm i 24 -10 8 z y j j j z 4 z j z j -7 33 z 0 38 { k 0 Out[18]//MatrixForm= diagonalizacion.nb In[19]:= 8valorespropios, vectorespropios< = Eigensystem@AD Out[19]= 8819, 38, 38<, 882, 1, 0<, 84, 0, 7<, 8-5, 7, 0<<< In[20]:= vectorespropios Out[20]= 882, 1, 0<, 84, 0, 7<, 8-5, 7, 0<< Como el resultado son tres vectores (y ninguno de ellos es cero), sabemos que esta matriz es diagonalizable (si queréis podéis comprobar que estos vectores son de verdad independientes). Para diagonalizar la matriz A no tenemos más que elegir la siguiente como matriz P (los vectores propios, puestos por columnas): In[21]:= P = Transpose@vectorespropiosD Out[21]= 882, 4, -5<, 81, 0, 7<, 80, 7, 0<< Y como matriz D, la siguiente: In[22]:= Diag = DiagonalMatrix@valorespropiosD Out[22]= 8819, 0, 0<, 80, 38, 0<, 80, 0, 38<< In[23]:= Diag MatrixForm i 19 0 0 z y j j z j j z j 0 38 0 z z k 0 0 38 { Out[23]//MatrixForm= In[24]:= A P.Diag.Inverse@PD Out[24]= True Una matriz no diagonalizable In[25]:= B = 880, 1, 0<, 80, 0, 1<, 82, -5, 4<<; MatrixForm@BD 0 1 0y i j z j z j j z j0 0 1z z k 2 -5 4 { Out[26]//MatrixForm= Probemos a hacer lo mismo con la matriz B: In[27]:= Eigenvectors@BD Out[27]= 881, 1, 1<, 80, 0, 0<, 81, 2, 4<< Vemos que aparece un vector nulo en la lista anterior. Esto significa que Mathematica no ha podido encontrar tres vectores propios linealmente independientes (sólo ha encontrado dos) y que no podemos diagonalizar esta matriz. Otro ejemplo: 4 5 diagonalizacion.nb In[28]:= M = 881, 2, -3<, 84, 5, 6<, 87, 8, 9<<; Eigenvalues@N@MDD Out[29]= 813.2969, 0.851565 + 0.792805 ä, 0.851565 - 0.792805 ä< Esta matriz tiene valores propios que no son reales (aparecen números imaginarios). En este caso (aunque es posible diagonalizar estas matrices usando matrices con números complejos) diremos que esta matriz NO es diagonalizable. Si intentáis calcular sus vectores propios veréis que también se obtienen números complejos. Una matriz simétrica: diagonalización con matriz de paso ortogonal In[30]:= F = 88-1, 1, 0<, 81, -1, 0<, 80, 0, -2<<; F MatrixForm -1 1 0 y i j z j z j j z j 1 -1 0 z z 0 -2 { k 0 Out[31]//MatrixForm= In[32]:= 8valorespropiosF, vectorespropiosF< = Eigensystem@FD General::spell1 : Possible spelling error: new symbol name "valorespropiosF" is similar to existing symbol "valorespropios". General::spell1 : Possible spelling error: new symbol name "vectorespropiosF" is similar to existing symbol "vectorespropios". Out[32]= 88-2, -2, 0<, 880, 0, 1<, 8-1, 1, 0<, 81, 1, 0<<< Como hay tres vectores (en la segunda parte de la lista anterior) y ninguno nulo, podemos diagonalizar esta matriz (sabemos que siempre se puede con una matriz simétrica). Pero la matriz P obtenida no es ortogonal, y en el caso especial de una matriz simétrica nos gustaría que la matriz de paso lo fuera: In[33]:= P = Transpose@vectorespropiosFD Out[33]= 880, -1, 1<, 80, 1, 1<, 81, 0, 0<< In[34]:= H* Esto no es la identidad *L P.Transpose@PD Out[34]= 882, 0, 0<, 80, 2, 0<, 80, 0, 1<< Para que además la matriz de paso sea ortogonal necesitamos conseguir tres vectores propios independientes que además formen una base ortonormal. Para eso debemos convertir en ortonormal la base vpF de forma que además sigan siendo vectores propios asociados a valores propios en el mismo orden. El proceso de Gram−Schmidt nos permite esto. Podemos aplicar el proceso nosotros mismos o cargar en memoria un paquete que lo hace automáticamente (¡cuidado con las comillas!): In[35]:= << LinearAlgebra‘Orthogonalization‘ In[36]:= vectorespropiosF2 = GramSchmidt@vectorespropiosFD Out[36]= 980, 0, 1<, 9- !!!! , !!!! , 0=, 9 !!!! , !!!! , 0== 1 2 1 2 1 2 1 2 6 diagonalizacion.nb In[37]:= P = Transpose@vectorespropiosF2D Out[37]= 990, - !!!! , !!!! =, 90, !!!! , !!!! =, 81, 0, 0<= 1 2 1 2 1 2 1 2 In[38]:= H* Comprobamos que ésta sí es ortogonal *L P.Transpose@PD Out[38]= 881, 0, 0<, 80, 1, 0<, 80, 0, 1<< In[39]:= H* Definimos la matriz diagonal *L Diag = DiagonalMatrix@valorespropiosFD Out[39]= 88-2, 0, 0<, 80, -2, 0<, 80, 0, 0<< In[40]:= MatrixForm@DiagD i -2 0 0 z y j j z j j z j 0 -2 0 z z 0 0 0 k { Out[40]//MatrixForm= (Vemos que de verdad es diagonal) In[41]:= H* Comprobamos que de verdad diagonaliza F *L F P.Diag.Inverse@PD Out[41]= True à Ejercicios 1− Diagonaliza la matriz A={{5,2,1},{2,7,0},{1,0,−3}}. ¿Cuál es su polinomio característico? ¿Cuáles son sus valores propios? 2− Calcula los valores propios de la matriz A={{2, 5, 0}, {0, 3, 5}, {0, 0, 3}} y las dimensiones de los subespacios propios asociados a cada uno. Determina si es diagonalizable. 3−Dada la matriz A={{3,0,2},{0,2,0},{2,0,0}}, a) Calcula sus valores propios y comprueba que es diagonalizable. b) Halla una matriz de paso ortogonal que la diagonalice. c) Obtén la expresión de An (para cualquier n). 4−Dada la matriz A={{1,−1,1},{−1,1,−1},{1,−1,1}}, a) Decide si A es diagonalizable. b) Calcula sus valores propios y vectores propios asociados. Da una base del subespacio propios asociado al valor propio 0. c) Encuentra una matriz P tal que A = P D Pt , con D una matriz diagonal. 5−Diagonaliza por semejanza ortogonal la matriz simétrica A={{1,−1,0,0},{−1,0,2,0},{0,2,4,1},{0,0,1,2}} de vectores