Descomposición de matrices: valores y vectores propios
Resumen
¿Qué significa descomponer una matriz?
Descomponer una matriz implica encontrar una o más matrices que, al multiplicarlas, nos permitan recrear la matriz original, cumpliendo con ciertas propiedades. Un ejemplo sencillo es el número 6, que puede descomponerse como 3x2, donde 3 y 2 tienen la propiedad de ser números primos. Aplicado a matrices, buscamos matrices componentes que nos faciliten ciertos cálculos o análisis.
¿Cómo se realiza la descomposición usando autovalores y autovectores?
Para realizar la descomposición de una matriz utilizando autovalores y autovectores, seguimos un proceso sistemático. Supongamos que tenemos una matriz A. Este proceso consta de varios pasos:
Determinación de autovalores y autovectores:
Calculamos los autovalores ((\lambda)) y los autovectores (v) de la matriz.
Construcción de la matriz diagonal:
Creamos una matriz diagonal que contiene todos los autovalores.
Composición de la matriz original:
Escribimos la matriz A como el producto de la matriz de autovectores, la matriz diagonal de autovalores, y la inversa de la matriz de autovectores.
Ejemplo práctico con código
import numpy as np
# Definimos la matriz AA = np.array([[3,2],[4,1]])# Calculamos autovalores y autovectoresautovalores, autovectores = np.linalg.eig(A)# Mostramos resultadosprint("Autovalores:", autovalores)print("Autovectores:\n", autovectores)# Composición de la matriz originalmatrizA_calculada = np.dot(autovectores, np.dot(np.diag(autovalores), np.linalg.inv(autovectores)))print("Matriz Calculada:\n", matrizA_calculada)
Al ejecutar este código, deberías observar que la matriz calculada es idéntica a la matriz original, lo que confirma que la descomposición ha sido exitosa.
¿Qué beneficios tiene usar matrices simétricas reales?
Cuando trabajamos con matrices simétricas reales, las propiedades de estas matrices nos ofrecen ventajas computacionales importantes. Estas matrices cumplen con que A es igual a su transpuesta ((A = A^T)), lo que implica que en lugar de calcular su inversa, podemos trabajar con su transpuesta.
Uso de matrices simétricas en descomposiciones
Renovación del proceso de descomposición:
Si la matriz es simétrica, podemos reformular nuestra descomposición usando la transpuesta de los autovectores en lugar de su inversa.
Ejecución del cálculo:
Esta forma es no solo más fácil de calcular, sino también más eficiente en términos computacionales.
Ejemplo de matriz simétrica
# Definimos una matriz simétricaA_sim = np.array([[3,2],[2,3]])# Calculamos autovalores y autovectoresautovalores, autovectores = np.linalg.eig(A_sim)# Composición con transpuestaresultante_sim = np.dot(autovectores, np.dot(np.diag(autovalores), autovectores.T))print("Matriz Simétrica Calculada:\n", resultante_sim)
Con este método, verificamos que obtenemos la matriz original sin tener que calcular una inversa, lo cual es especialmente útil para aplicaciones que requieren rapidez y eficiencia.
Ventajas y recomendaciones
Eficiencia Computacional: Utilizar matrices simétricas o trabajar con matrices que nos permitan evitar la inversa nos brinda ventajas de velocidad y precisión.
Simplicidad de Cálculo: Usar la transpuesta es más sencillo y fiable que la calculadora inversa de matrices.
Aquellos que buscan optimizar procesos donde las matrices juegan un papel crucial deben considerar estas metodologías para lograr resultados efectivos y robustos. Continúa explorando esta área fascinante y sigue fortaleciendo tus habilidades matemáticas y computacionales para destacar en el análisis de matrices.
Descomponer una matriz: Quiere decir encontrar dos o más matrices que me ayuden a escribir la matriz original y que tengan ciertas propiedades.
Una matriz A la podemos escribir como: sus autovectores producto punto una matriz diagonal, donde la matriz diagonal tiene todos los autovalores encontrados, producto punto la matriz inversa de sus autovectores.
Descomposición 2: Restricciones:Nuestra Matriz A sea real y simétrica (A = A-transpuesta). Decimos que A = la matriz de autovectores producto punto la matriz diagonal con los autovalores, producto punto la transpuesta de la matriz de autovectores. NOTA: Calcular la transpuesta de una matriz es mucho más económico en cómputo que calcular la inversa de una matriz. Y hay que recordar que el cómputo cuesta dinero.
Descomposición de matrices
Consiste en reescribir una matriz cuadrada X como un producto de A x B x C, es decir X = AxBxC, donde:
A: es la matriz formada por los autovectores
B: matriz diagonal formada por los autovalores
C: matriz inversa de A.
++Nota++: En matrices reales y simétricas, C = A.T (matriz traspuesta de los autovectores). Esta propiedad tiene menor costo computacional.
Recordatorio: Una matriz cuadrada es aquella que tiene igual número de filas y columnas, y cuyos vectores que la componen son linealmente independientes.
Una matriz puede ser cuadrada y singular.
Gracias por el aporte.
faltó hacer la claridad: la matriz de autovectores que devuelve eig es una matriz ortonormal, por eso cumple la propiedad que utiliza en el minuto 7
Amigo en clases anteriores el profesor menciona que no existe como tal la definición de matriz ortonormal , existe la definición de matriz ortogonal que es cuando todas sus filas y columnas son ortonormales .
Efectivamente compañeros, es un detalle muy importante que se pasa por alto. La matriz de vectores propios de una matriz de transformación lineal simétrica, es un matriz ortogonal. Solo eso explica que inv(v) = v.T
Están geniales tu apuntes, much thanks for you.U! Oye, ¿cómo creas los hipervínculos en el índice para que te mande a partes del mismo documento?
Te dejo un ejemplo en forma de codigo para que el sistema de comentarios no me lo tome como un recurso.
[clase 1 bienvenida al curso](#clase-1-bienvenida-al-curso)
pero no te compliques, mejor instala el plugin de VS Code Markdown All in One
Descomposición de matrices
# ImportamosNumpyimport numpy as np
# Creamos una matriz
A= np.array([[3,2],[4,1]])print(A)# Calculamos los autovalores y los autovectores
autovalores , autovectores = np.linalg.eig(A)# Mostramos los autovectores y los autovalores
print(autovalores)print(autovectores)A_calc= autovectores.dot(np.diag(autovalores)).dot(np.linalg.inv(autovectores))# Imprimimos la A_calcprint(A_calc)# Creamos y mostramos la matriz
A= np.array([[3,2],[2,3]])print(A)# Demostramos que esta matriz es simétrica, ya que coincide con su traspuesta
print(A==A.T)# Calculamos de nuevo los autovalores y los autovectores
autovalores , autovectores = np.linalg.eig(A)print(autovalores)print(autovectores)# Lo que estamos obteniendo es que los autovalores son el 5 y el 1 y nuestra matriz es la que tiene esos valores
# Podemos reescribirla usando
# Una matriz simétrica es igual a su traspuesta, pero ademas si esto ocurre podremos escribir la descomposición como nuestra
# matriz a es igual a los autovectores por la diagonal de las lambdas por la traspuesta de los autovectores
A_calc= autovectores.dot(np.diag(autovalores)).dot(autovectores.T)print(A_calc)# Entonces, calcular una traspuesta es muchismo más economico que calcular una inversa, entonces nuestro casi ideal es que
# en vez de tener una matriz cualquiera estuvimos una matriz real simétrica, sin tener que realizar la inversa
Convulsión: Podemos escribir a nuestra matriz cuando es cuadrada en función de los autovalores y autovectores, y en el caso de que sea simétrica podemos usar la traspuesta en lugar de la inversa.
gracias!
Descomposición de Matrices Cuadradas
Podemos descomponer una matriz cuadrada en el producto de otras dos: la matriz de autovectores y la matriz diagonal de autovalores:
M = autovectores * diag(autovalores) * inv_autovectores
Una manera de imprimir los autovalores y autovectores para que sea más entendible es:
print(*zip(eigenvalues, eigenvectors.T))
La descomposición de matrices es una técnica utilizada en álgebra lineal para expresar una matriz como una combinación de matrices más simples o estructuradas.
Descomposición LU
Descomposición de Cholesky
Descomposición de valores singulares (SVD)
Descomposición QR
Estas son solo algunas de las descomposiciones de matrices más utilizadas
import numpy as np
# Definir una matriz
A= np.array([[1,2,3],[4,5,6],[7,8,9]])# Calcular la descomposición SVDU,S,V= np.linalg.svd(A)# Imprimir las matrices U,S y Vprint("Matriz U:")print(U)print("Matriz S:")print(np.diag(S))print("Matriz V:")print(V)
La descomposición de matrices basada en sus autovalores y autovectores se conoce como "descomposición espectral" o "factorización espectral". Esta descomposición es fundamental en el álgebra lineal y tiene importantes aplicaciones en diversas áreas, como la diagonalización de matrices, análisis de sistemas dinámicos, procesamiento de señales y reducción de dimensionalidad.
No toda matriz cuadrada se puede descomponer en autovectores y autovalores en el campo de los R (reales), un ejemplo es una matriz que transforme el espacio rotando 90° antihorario [[0,-1],[1,0]], como el espacio rota, no hay vector que mantenga su inclinación y "no hay" vectores propios.
.
Sin embargo tiene soluciones imaginarias, como se ve ejecutando código:
.
Fun fact:
Cuando se representa un grafo no dirigido en una matriz de adyacencia, se obtiene una matrix cuadrada simétrica.
En la clase se menciona "lambda" como una referencia a los autovalores de una matriz. En el contexto de la descomposición de matrices, cada "lambda" representa un autovalor que se obtiene al calcular los autovalores y autovectores de la matriz original. Estos autovalores son fundamentales para entender cómo se puede descomponer y representar la matriz en términos de sus autovectores y una matriz diagonal de autovalores.
La descomposición en valores y vectores propios (también llamada descomposición espectral) es una técnica fundamental del álgebra lineal, con múltiples aplicaciones en machine learning, física, estadísticas, compresión de datos y más.
🔷 ¿Qué es la descomposición en valores y vectores propios?
Dada una matriz cuadrada AA, si es diagonalizable, podemos escribirla como:
A=VΛV−1A = V \Lambda V^{-1}
Donde:
VV: matriz cuyos columnas son los autovectores de AA
Λ\Lambda: matriz diagonal con los autovalores de AA
V−1V^{-1}: inversa de VV
Esta descomposición permite entender cómo AA transforma el espacio.
✅ Condiciones
Solo funciona para matrices cuadradas.
Requiere que AA tenga un conjunto completo de autovectores linealmente independientes (es decir, que sea diagonalizable).
🧠 ¿Por qué es útil?
Reduce la complejidad computacional de operaciones (como exponenciar matrices).
Permite entender geometría de transformaciones.
Se usa en PCA, sistemas dinámicos, compresión de imágenes, etc.
🐍 Ejemplo en Python con NumPy
import numpy as np
# Matriz cuadrada A
A = np.array([[4, 2],
[1, 3]])
# Autovalores y autovectores
eigenvalues, eigenvectors = np.linalg.eig(A)
# Matriz diagonal de autovalores
Lambda = np.diag(eigenvalues)
# Matriz de autovectores
V = eigenvectors
# Verificación de la descomposición
A_reconstructed = V @ Lambda @ np.linalg.inv(V)
Si A_reconstructed ≈ A, entonces la descomposición es correcta ✅
📌 ¿Qué pasa si la matriz no es diagonalizable?
Si no se puede escribir como VΛV−1V \Lambda V^{-1}, aún puedes usar la descomposición de Schur o la SVD (Singular Value Decomposition), más general para matrices no cuadradas o no diagonalizables.
Tengo una pregunta: el profesor asume que porque A es simétrica, entonces V también lo es, y por eso reemplaza el término de V-inversa por V-transpuesta. Esto está bien? Me hace mucho ruido, preguntandole a Chat GPT me dice que "En general, si una matriz A es simétrica, no necesariamente su matriz de autovectores V también lo será."
Mis apuntes con un pequeño resumen de aplicaciones de los conceptos: