Crea una cuenta o inicia sesión

¡Continúa aprendiendo sin ningún costo! Únete y comienza a potenciar tu carrera

Descomposición de matrices

5/18
Recursos

Aportes 23

Preguntas 0

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

  • 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.
  • A_calc = autovectores.dot(np.diag(autovalores)).dot(np.linalg.inv(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.
  • A_calc = autovectores.dot(np.diag(autovalores)).dot(autovectores.T)

Exijo el botón de like para estos videos!!! 😄

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.

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

Dejo mis apuntes del curso anterior como referencia, despues los de este curso
https://github.com/rb-one/curso_fundamentos_algebra_lineal/blob/master/Notes/notes.md

Descomposición de matrices

# Importamos Numpy

import 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_calc

print(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.





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 SVD
U, S, V = np.linalg.svd(A)

# Imprimir las matrices U, S y V
print("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.

Es muy clave el metodo de numpy \<vector>.dot() or \<matrix>.dot() pero si quieres simplificar tu codigo y que use algo que se llama metodos vectoriales los cuales son mejores en cuestion de rendimiento solo basta con la siguiente sintaxis. dot\_product\_a\_b = matrix\_a @ matrix\_b
Este es igual a la diagonalización de Matrices visto en el curso anterior de Algebra Lineal. $$A = P \cdot D \cdot P^{-1}$$

En mi carrera en ingeniería mecánica, se podría decir que en casi todos los problemas a resolver se presentaban situaciones donde la matriz resultante era simétrica. Para resolverla y tomar el menor tiempo computacional posible utilizábamos la descomposición de Cholesky.

Un genio el profe !!

Este curso esta genial hasta ahora…!!!

comparto mis apuntes:

wowowoow meses de leer sobre esto y hasta por fin entendí estas propiedades gracias profeeee

Hola. Este caso que comenta el profesor es un caso particular de un proceso al que se le conoce como “cambiar de base” o “expresar a la matríz en otra base”. Esas matrices de eigenvectores se conocen como la “matriz de cambio de base” y en este caso se trata de la matríz de cambio de base a la base que diagonaliza la matríz, justamente la base de eigenvectores. El tema es denso pero muy divertido. Los invito a profundizar en el tema en el capítulo 2 y 5 del siguiente libro

A = EigenVects · diag(EigenValues) · EigenVects⁻¹

A = V · Lambda · V⁻¹