21. Problema de los valores y vectores propios#
Existen múltiples sistemas en física que ocurren naturalmente como un problema de valores/vectores propios. En esta lección veremos como resolver un problema de este tipo utilizando Python.
21.1. Formulación matemática#
Sea una matriz cuadrada \(A \in \mathbb{R}^{D\times D}\). El siguiente sistema de ecuaciones de \(D\) ecuaciones
que se puede escribir de forma equivalente como
tiene como resultado
\(\lambda\), los valores propios de \(A\)
\(\vec v\) los vectores propios de \(A\)
La solución no trivial de este problema (\(\vec v \neq 0\)) se obtiene si \((A - \lambda I)\) es singular, es decir
que resulta en un polinomio de grado \(D\) cuyas raices son \(\{\lambda_i\}\), \(i=1,2,\ldots, D\)
Una vez determinado \(\lambda_i\) se pueden usar para despejar \(\vec v_i\)
Ejemplo
Para la matriz \(A\) del ejemplo, si igualamos su determinante a cero tenemos
osea \(\lambda_1 = 1.5\) y \(\lambda_2 = 0.5\). Luego para el primer vector propio tenemos un sistema de ecuaciones
osea \(v_{11} = v_{12}\) con esto podemos construir un vector normalizado genérico \(v_1 = \frac{1}{\sqrt{2}}\begin{pmatrix} 1 \\ 1 \end{pmatrix}\)
De forma equivalente para \(v_2 = \frac{1}{\sqrt{2}}\begin{pmatrix} -1 \\ 1 \end{pmatrix}\)
21.2. Cálculo de valores y vectores propios con scipy#
El módulo linalg
de scipy ofrece funciones para obtener vectores y valores propios. Los de aplicación más común son:
eig(X)
: Retorna una tupla con los valores y vectores propios deX
eigvals(X)
: Retorna los valores propios deX
eigh(X)
: Retorna una tupla con los valores y vectores propios deX
, asumiendo queX
tiene simetría hermíticaeigvalsh(X)
: Retorna los valores propios deX
, asumiendo queX
tiene simetría hermítica
Utilicemos eig
para el ejemplo anterior:
import numpy as np
import scipy.linalg
A = np.array([[1., 0.5], [0.5, 1]])
evals, evecs = scipy.linalg.eig(A)
evals, evecs
(array([1.5+0.j, 0.5+0.j]),
array([[ 0.70710678, -0.70710678],
[ 0.70710678, 0.70710678]]))