Ventajas
- (potencia fácil)
- (inversa fácil)
- Revela la estructura de la transformación
Capítulo 5
Un vector es eigenvectorde A si:
El escalar λ es el eigenvalor. Geométricamente, el eigenvector solo seescala (no cambia de dirección) bajo la transformación.
Los eigenvalores satisfacen el polinomio característico:
import numpy as np
A = np.array([[4, -2],
[1, 1]])
eigvals, eigvecs = np.linalg.eig(A)
print("Eigenvalores:", eigvals)
print("Eigenvectores:
", eigvecs)
# Verificación: A @ v = λ * v
v = eigvecs[:, 0]
lam = eigvals[0]
print(f"A @ v = {A @ v}")
print(f"λ * v = {lam * v}")
# Para matrices simétricas, los eigenvectores son ortogonales
B = np.array([[3, 1],
[1, 2]]) # simétrica
vals, vecs = np.linalg.eigh(B) # eigh es más estable para simétricas
print("
Eigenvectores (simétrica):
", vecs)
print("Q^T Q:
", vecs.T @ vecs) # ≈ identidad → ortogonalesSi A tiene n eigenvectores independientes, se puede diagonalizar:
donde P tiene los eigenvectores y D es diagonal con los eigenvalores.
Si , entonces P es ortogonal: . Todos los eigenvalores son reales.
import numpy as np
A = np.array([[4, -2],
[1, 1]])
vals, vecs = np.linalg.eig(A)
P = vecs
D = np.diag(vals)
# Reconstruir
A_rec = P @ D @ np.linalg.inv(P)
print("A reconstruida:
", A_rec)
# Potencia: A^5
A_pow = P @ np.diag(vals**5) @ np.linalg.inv(P)
print("A^5:
", A_pow)
print("A^5 (directo):
", np.linalg.matrix_power(A, 5))A es definida positiva si para todo .
Las matrices de covarianza son semidefinidas positivas. Es la base para PCA, análisis discriminante y más.
import numpy as np
# Matriz de covarianza (simétrica, definida positiva)
A = np.array([[2, 0.5],
[0.5, 1]])
# Verificar eigenvalores > 0
vals = np.linalg.eigvalsh(A) # eighvalsh para simétricas
print(f"Eigenvalores: {vals}")
print("Definida positiva:", all(vals > 0))
# Cholesky
L = np.linalg.cholesky(A)
print("Cholesky L:
", L)
print("L @ L.T:
", L @ L.T) # = A