Verás que, aunque una transformación lineal cambia la dirección de la mayoría de los vectores, existen algunos vectores especiales que no rotan, solo se estiran o encogen.
Esos vectores son los autovectores (eigenvector), y la cantidad por la que se estiran o encogen se llama autovalor (eigenvalues).
Intuición: vectores que no cambian de dirección
Imagina una matriz que representa una transformación lineal —por ejemplo, una matriz de “shear” (cizallamiento), que deforma un cuadrado en un paralelogramo.
En la mayoría de los casos, todos los vectores cambian de dirección al aplicar la transformación… excepto algunos muy particulares. Esos vectores especiales mantienen su dirección (aunque pueden cambiar su longitud). Por eso decimos que son autovectores.
Ejemplo de una transformación Lineal:
import numpy as np
M = np.array([[2, 1],
[1, 3]])
square = np.array([[0, 0, 1, 1, 0],
[0, 1, 1, 0, 0]])
transformed = M @ square
Código de la grafica
Código Python con Matplotlib
fig, ax = plt.subplots(figsize=(8,8))
ax.plot(square[0], square[1], 'b--', label='Original')
ax.plot(transformed[0], transformed[1], 'r-', label=f'Shear con b={b}')
ax.set_xlim(-1, 3)
ax.set_ylim(-1, 3)
ax.axhline(0, color='black')
ax.axvline(0, color='black')
ax.set_aspect('equal')
ax.legend()
plt.show()Definición
Un vector \( \vec{v} \) es un autovector de una matriz \( M \) si, al aplicar la matriz transformadora sobre él, el resultado es el mismo vector escalado por un número \( \lambda \):
$$M \vec{v} = \lambda \vec{v}$$
Donde:
- \( M \) → es una matriz cuadrada \(n \times n\)
- \( \vec{v} \) → es un autovector
- \( \lambda \) → es el autovalor asociado
Este número \( \lambda \) indica cuánto se estira o encoge el vector cuando la matriz actúa sobre él.
Interpretación geométrica
- Si \( \lambda > 1 \): el vector se alarga.
- Si \( 0 < \lambda < 1 \): el vector se encoge.
- Si \( \lambda < 0 \): el vector cambia de sentido (se invierte).
- Si \( \lambda = 1 \): el vector queda igual.
Calculando los eigenvectors y eigenvalues
Continuamos con el ejemplo inicial:
import numpy as np
# Calcular eigenvalores y eigenvectores
w, V = np.linalg.eig(M)
print("\nEigenvalores:\n", w)
print("\nEigenvectores (columnas):\n", V)Salida:
Eigenvalores:
[1.38196601 3.61803399]
Eigenvectores (columnas):
[[-0.85065081 -0.52573111]
[ 0.52573111 -0.85065081]]
Código de la grafica
Código Matplotlib
import matplotlib.pyplot as plt
fig, ax = plt.subplots(figsize=(8,8))
# Cuadrado original (azul) y transformado (rojo)
ax.plot(square[0], square[1], 'b--', label='Original (cuadrado unidad)')
ax.plot(transformed[0], transformed[1], 'r-', label='Transformado M·S')
# Ejes
ax.axhline(0, color='black', linewidth=1)
ax.axvline(0, color='black', linewidth=1)
# Eigenvectores
for i in range(len(w)):
v = V[:, i] # vector propio
Mv = M @ v # su transformación
λ = w[i]
# Dibuja el eigenvector (azul)
ax.quiver(0, 0, v[0], v[1], angles='xy', scale_units='xy', scale=1,
color='blue', width=0.007, label=fr'$v_{i+1}$')
# Dibuja el vector transformado (rojo)
ax.quiver(0, 0, Mv[0], Mv[1], angles='xy', scale_units='xy', scale=1,
color='red', width=0.007, label=fr'$M v_{i+1} = \lambda_{i+1} v_{i+1}$')
# Muestra texto con el eigenvalor
ax.text(Mv[0]*1.1, Mv[1]*1.1, fr'$\lambda_{i+1}={λ:.2f}$', color='red', fontsize=10)
ax.set_xlim(-4, 4)
ax.set_ylim(-4, 4)
ax.set_aspect('equal', adjustable='box')
ax.legend(loc='upper left', facecolor='none', edgecolor='none')
ax.set_title("Transformación lineal y Eigenvectores", fontsize=14)
ax.set_xlabel("x")
ax.set_ylabel("y")
plt.grid(True)
plt.show()
Matrices simétricas
Cuando una matriz es simétrica (es decir, \( M = M^T \)), se cumple algo muy útil:
- Todos sus autovectores son perpendiculares entre sí.
- Sus autovalores son reales.
Por ejemplo:
A = np.array([[4, 1],
[1, 4]])
autovalores, autovectores = np.linalg.eig(A)
print("Autovalores:", autovalores)
print("Autovectores:\n", autovectores)
print("Producto punto entre los autovectores:", np.dot(autovectores[:,0], autovectores[:,1]))La salida mostrará que el producto punto es 0, confirmando que los autovectores son ortogonales.
Autovalores: [5. 3.]
Autovectores:
[[ 0.70710678 -0.70710678]
[ 0.70710678 0.70710678]]
Producto punto entre los autovectores: 0.0Aplicaciones en ciencia de datos
Los eigenvectores y eigenvalores son fundamentales en data science:
Análisis de Componentes Principales (PCA)
- Qué hace: Reduce dimensiones de un dataset encontrando los eigenvectores de la matriz de covarianza.
- Ejemplo: Dataset Iris (150×4) → eigenvectores indican las direcciones de mayor variación (ej: longitud vs ancho de pétalo).
Redes Neuronales
- Eigenvectores optimizan transformaciones en capas de redes profundas.
- Ejemplo: Ajustar pesos para maximizar patrones.
Procesamiento de Imágenes
- Eigenvectores en eigenfaces identifican características faciales clave.
- Ejemplo: Reconocimiento facial en apps de seguridad.
Sistemas Dinámicos
- Modelan cómo cambian datos con el tiempo (ej: predicciones financieras).
- Eigenvalores determinan la estabilidad de los sistemas.
Historia real: En 2024, Spotify usó eigenvectores en su sistema de recomendaciones para identificar patrones en gustos musicales, mejorando la precisión en un 10%.
Cómo encontrar los Eigenvalues y Eigenvectors
Para cualquier matriz \(M\):
- Primero encontramos todos los eigenvalores λ.
- Luego, usando esos eigenvalores, encontramos los eigenvectores correspondientes.
La ecuación base \(M \vec{v} = \lambda \cdot \vec{v}\) será la clave de todo.
Pero para trabajar con ella algebraicamente, vamos a transformarla un poco.
La matriz identidad
Necesitamos la matriz especial llamada la matriz identidad, que se denota por \(I\). La matriz identidad es una matriz cuadrada con unos en la diagonal principal (de arriba a la izquierda hasta abajo a la derecha) y ceros en todas las demás posiciones. Ya la vimos como ejemplo anteriormente en el articulo de las matrices.
Por ejemplo, la matriz identidad de tamaño 3×3 es:
$$I = \begin{bmatrix} 1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 1\end{bmatrix}$$
Y se llama “identidad” porque, al multiplicarla por cualquier matriz o vector, el resultado es exactamente el mismo.
Podemos decir que: \(I \cdot M = M\) y tambien que: \(I \cdot v = v\)
Manipulamos la ecuación para llegar al sistema característico
Volvamos a nuestra ecuación:
$$M \vec{v} = \lambda \cdot \vec{v}$$
Podemos escribir el lado derecho como \(\lambda I \cdot v\), ya que \(I \cdot v.\).
Entonces la ecuación queda así:
$$M \vec{v} = \lambda I \cdot \vec{v}$$
Restamos el término del lado derecho en ambos lados:
$$M \cdot \vec{v} \ – \lambda I \cdot \vec{v} = 0 $$
Sacamos vvv como factor común (como si fuera un número):
$$(M \ – \lambda I) \cdot \vec{v} = 0 $$
Y esta ecuación es fundamental: se conoce como la ecuación característica.
La condición de existencia de eigenvectores
Esta ecuación tiene dos tipos de soluciones posibles:
- La trivial, cuando \(v=0\).
Pero ese vector no nos dice nada (no tiene dirección ni longitud), así que lo descartamos. - La no trivial, cuando \(v≠0\).
Para que exista esta solución, debe cumplirse una condición especial.
Recuerda una propiedad del álgebra lineal:
Una ecuación de la forma \(A \cdot v=0\) solo tiene una solución no trivial \(v≠0\) si la matriz A es singular, es decir, su determinante es igual a cero.
Aplicando esto a nuestra ecuación \((M \ – \lambda I) \cdot \vec{v} = 0 \), la condición será: \(det(M \ – \lambda I) \cdot \vec{v} = 0 \)
Esta ecuación nos permitirá encontrar los valores de \( \lambda \), los eigenvalores.
Interpretación geométrica: el área que se hace cero
Detrás de todo esto hay una idea visual muy poderosa.
Imagina que tienes una matriz \(M\) que transforma puntos del plano \(XY\). Puedes representarla como una transformación del cuadrado unitario (un cuadrado de lado 1 anclado en el origen).
Cuando multiplicas \(M\) por las coordenadas de los vértices de ese cuadrado, obtienes un nuevo cuadrilátero. En general, este nuevo cuadrilátero es un paralelogramo.
- Si \(M\) solo escala el cuadrado, obtienes un rectángulo.
- Si además deforma el cuadrado (por ejemplo, en un cizallamiento), obtienes un paralelogramo inclinado.
El área de ese paralelogramo es una medida de cuánto “estira” o “encoge” la transformación de \(M\).
Y el determinante de la matriz está directamente relacionado con esa área.
Cuando el determinante es cero, significa que la transformación ha colapsado el plano en una línea o un punto, es decir, ha perdido una dimensión. Eso ocurre exactamente cuando estamos en un eigenvalor, porque en ese caso el espacio queda “aplastado” en una dirección particular: la del eigenvector.
Ejemplo visual con una matriz 2×2
Imaginemos una matriz genérica \(M\) de 2×2:
$$M = \begin{bmatrix} a & b \\ c & d \end{bmatrix}$$
Y tomemos el cuadrado unitario cuyos vértices son (0,0), (1,0), (1,1) y (0,1).
Cuando aplicamos \(M\) sobre esos puntos, el cuadrado se transforma en un paralelogramo cuyos vértices vienen dados por los productos matriciales:
$$M \cdot S$$
donde \(S\) contiene las coordenadas de los vértices del cuadrado.
El área de ese nuevo paralelogramo se puede calcular directamente como:
$$\text{Área} = ad – bc$$
que es precisamente el determinante de \(M\).
Así que cuando el determinante \(ad−bc=0\), el paralelogramo “se aplasta” y pierde área. Geométricamente, eso es lo que ocurre cuando hay un eigenvalor: la transformación ya no conserva el área y “colapsa” el espacio en una dirección.
Cálculo con Python: encontrar los eigenvalores
Ejemplo con matriz 2×2.
$$M = \begin{bmatrix} 2 & 1 \\ 1 & 2 \end{bmatrix}$$
M = np.array([[2, 1],
[1, 2]])Calculamos eigenvalores y eigenvectores
eigenvalores, eigenvectores = np.linalg.eig(M)
print("Matriz M:")
print(M)
print("\nEigenvalores:")
print(eigenvalores)
print("\nEigenvectores (por columnas):")
print(eigenvectores)Eigenvalores:
[1.38196601 3.61803399]
Eigenvectores (por columnas):
[[-0.85065081 -0.52573111]
[ 0.52573111 -0.85065081]]Ejemplo con matriz 3×3.
M3 = np.array([
[4, -2, 1],
[0, 3, -1],
[0, 0, 2]
])
eigenvalores3, eigenvectores3 = np.linalg.eig(M3)
print("Matriz M3:")
print(M3)
print("\nEigenvalores:")
print(eigenvalores3)
print("\nEigenvectores (por columnas):")
print(eigenvectores3)Matriz M3:
[[ 4 -2 1]
[ 0 3 -1]
[ 0 0 2]]
Eigenvalores:
[4. 3. 2.]
Eigenvectores (por columnas):
[[1. 0.89442719 0.33333333]
[0. 0.4472136 0.66666667]
[0. 0. 0.66666667]]
Deja una respuesta