Crea una cuenta o inicia sesión

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

Cómo calcular los autovalores y autovectores

4/18
Recursos

Aportes 28

Preguntas 5

Ordenar por:

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

Los cursos de python con álgebra lineal y este tienen mucho potencial, y eso es por que este hombre es un muy bueno explicando, sin duda uno de los mejores profesores en platzi

🤔🤔 Si toman el primer autovector que arrojó numpy, resulta que es ortogonal a los demas que calculamos 🤔🤔

  • np.linalg.eig(x) - Obtiene los autovalores y autovectores asociados
  • Los autovectores encontrados por numpy son un múltiplo del propuesto en el ejercicio. Los autovectores son los mismos, lo que varía es la amplitud o el sentido

"Los autovectores son los mismos. Pueden cambiar en amplitud o sentido, pero su dirección se mantiene"

El Eigen Vector se usa mucho en el análisis de redes sociales por medio de grafos. Este identifica la importancia de un nodo sobre la misma red.

Sin duda este curso y el de álgebra lineal con python son los mejor explicados, estoy muy agradecido por este curso, gracias profe no me despegó de sus clases

¿Cómo podemos calcular con las funciones de Python los autovectores y los autovalores?

# Importamos las bibliotecas

%matplotlib inline

import numpy as np
import matplotlib.pyplot as plt

# Creamos una matriz
X = np.array([[3, 2], [4, 1]])
print(X)

# Vemos la biblioteca para calcular los autovectores y autovalores de Numpy
print(np.linalg.eig(X))

# Pedimos que muestre los autovalores
autovalores, autovectores = np.linalg.eig(X)
print(autovalores)

# Pedimos cual es el autovalor asociado a cada autovector 
print(autovectores[:, 0]) 

# Mostramos el autovector numero 1
print(autovectores[:, 1])

# Importamos nuestra función para graficar. 
%run ".\\Funciones auxiliares\graficarVectores.ipynb"

# Definamos un array 
v = np.array([[-1], [2]])
# Calculamos la tranformacion con el calculo del producto interno 
Xv = X.dot(v)
# Y lo comparamos con el autovector anterior 
v_np = autovectores[:, 1]
print(Xv)
print(v_np)

# Graficamos al que calculamos con el producto interno, el vector original y el que nos devolvió el método de Numpy
graficarVectores([Xv.flatten(), v.flatten(), v_np], cols = ['green','orange','blue'])

plt.ylim(-4,2)
plt.xlim(-7,3)

Conclusión:

Entonces, podemos ver que el autovector encontrado por Numpy es un múltiplo del autovector que nosotros propusimos. Eso quiere decir que los autovectores son lo mismo, solo que pueden variar en amplitud o en sentido, pero la dirección se mantiene. Si tenemos un autovector, menos ese autovector también es autovector.

Que buen curso definitivamente uno de los mejores de esta carrera , excelente explicación .

Escribo esta respuesta que le di a un compañero porque es una pregunta frecuente y puede que sirva y servirá para varios:

Lo que sucede en la combinación lineal de una matriz con un vector es que se transforma el espacio, de ahí su nombre “transformación lineal”. Entonces, los ejes que conocemos como “x” e “y” se modifican y van a cambiar dependiendo de la matriz que esté describiendo ese espacio, en este caso, la matriz “x”. Lo que sucede con los autovectores es que son vectores que, durante la transformación del espacio, se mantienen en el subespacio generado por el vector “original” en el espacio “original”. No necesariamente todos los autovectores del nuevo espacio estan dentro del mismo subespacio generado, por eso, este otro vecto ortgonal es también un autovector que se mantiene en el subesapcio generado de otro vector “original”.

Si nosotros quisiéramos averiguar cual es ese vector “original” tendríamos que tratar el problema como un sistema de ecuaciones lineales donde “x” e “y” son las incógnitas de ese vector. Les dejo acá la captura de como se podría solucionar en python.

Lo que pasa con el vector [[0.14142136] , [0.14142136]] es que al transformarse el espacio, se mantiene dentro de su subespacio generado escalándose en 5 (que es su autovalor o el lambda, como arroja la función de Eigenvalues de numpy).

Si este profe si sabe de lo que habla y lo hace con código . Genial !!

Por si necesitan comprender un poco mejor los conceptos
Autovalores y Autovectores

Cálculo de autovalores y autovectores en python
Usamos el método np.linalg,eig(<matriz>) que nos devuelve una tupla con los arreglos de autovalores y autovectores. Ejemplo:

autovalores, autovectores = no.linalg.eig(A)

que curso debo ver antes que este? no he entendido nada 😦

matriz=np.array([[3,2],[4,1]])
autovalores,autovectores=np.linalg.eig(matriz)
print(autovalores)
print(autovectores)
print(np.linalg.norm(autovectores[:,1]))
print(np.rad2deg(np.arccos(np.abs(autovectores[:,1].dot(np.array([1,0]))))))
print(np.rad2deg(np.arccos(np.abs(np.array([1,-2]).dot(np.array([1,0])/np.linalg.norm(np.array([1,-2])))))))```
Y yo feliz con mis vectores: ![](https://static.platzi.com/media/user_upload/image-b125c0aa-6c97-4962-a4cb-50a61433b576.jpg)
Sarpado, los autovectores son ortonormales: ![](https://static.platzi.com/media/user_upload/image-210463bd-77fa-4eab-841d-e552355bfd3b.jpg)![](https://static.platzi.com/media/user_upload/image-2051eb32-b2c1-4b09-8727-b477948c7461.jpg)
En la Universidad donde vi algebra lineal usan el nombre de valores y vectores propios. Por si alguien los conoce con ese nombre.
Excelente profesor, para llegar a demostrar que los autovector son los mismo, solo varian ciertas cosas, pero sigue siendo el mismo autovector.

Recomiendo hacer al menos una vez los cálculos a mano para entender las matemáticas de fondo, al fin y al cabo al llamar a los comandos todo sale solo y arroja solo el resultado, de esa manera uno no entiende de donde salió

En mi caso estaba perdida con este tema, no podía comprenderlo, nunca lo había estudiado.
Busque otras fuentes y las comparto por si les interesa.

Primero entenderlo de forma tradicional:

Usando Python
Con la librería sympy https://youtu.be/sgaE9j5OmLs

Existe un fallo en la explicación específicamente centrada en la grafica del final de la clase que puede generar confusiones ya que aunque es cierto que los vectores cambian de sentido, teniendo en cuenta que el sentido es similar a las coordenadas de ubicación (norte, sur, noroccidente etc…) y dicho sentido en vectores se determina por medio la flecha del vector, sin embargo la dirección también cambia ya que la dirección de un vector la indica el ángulo que forma el vector con el eje x y si el vector apunta en sentido inverso al de referencia entonces cambia el ángulo de este con respecto al eje x por ello cambia su dirección, espero poder aclarar en algo a quien lo necesite

La funciónnp.linalg.eig()devuelve dos valoresautovaloresy autovectores. Los autovalores se almacenanautovalores, yautovectores, donde cada columna representa un autovector.

import numpy as np

# Definir una matriz
A = np.array([[2, 1],
              [1, 2]])

# Calcular los autovalores y autovectores
autovalores, autovectores = np.linalg.eig(A)

# Imprimir los autovalores y autovectores
print("Autovalores:", autovalores)
print("Autovectores:")
for i in range(len(autovectores)):
    print(autovectores[:, i])

A mi consideracion, deberia haber establecido otros valores para “v”, ya que no se aprecia bien lo que esta queriendo explicar, lo que se genera es que por mas que “v” cambie de valores, el vector “Xv” seguira teniendo la misma direccion que “v_np” (autovector)

Los autovectores son los mismos. Pueden cambiar en amplitud o sentido, pero su dirección se mantiene!

Me pueden explicar por qué elige v = np.array([[-1],[2]])?
Por qué no tomó un valor aleatorio para evaluar la transformada

Totalmente de acuerdo, de los mejores profesores

  • Lo que estamos viendo, es que efectivamente los tres son el mismo vector. Conservan la misma dirección, lo único que está cambiando es su amplitud, y en algún caso también el sentido.
  • Entonces, lo que se está teniendo, es que lo que cambia es el Autovalor asociado.
  • Se puede ver que el Autovector encontrado por numpy, es un múltiplo del Autovector que propusimos.