Let's calculate the eigenvalues of a matrix:
A = np.mat("3 -2;1 0") print("A ", A)
The matrix we created looks like the following:
A [[ 3 -2] [ 1 0]]
eigvals()
function:print("Eigenvalues", np.linalg.eigvals(A))
The eigenvalues of the matrix are as follows:
Eigenvalues [ 2. 1.]
eig()
function. This function returns a tuple, where the first element contains eigenvalues and the second element contains corresponding eigenvectors, arranged column-wise:eigenvalues, eigenvectors = np.linalg.eig(A) print("First tuple of eig", eigenvalues) print("Second tuple of eig ", eigenvectors)
The eigenvalues and eigenvectors appear as follows:
First tuple of eig [ 2. 1.] Second tuple of eig [[ 0.89442719 0.70710678] [ 0.4472136 0.70710678]]
dot()
function by calculating the right and left side of the eigenvalues equation Ax = ax
:for i, eigenvalue in enumerate(eigenvalues): print("Left", np.dot(A, eigenvectors[:,i])) print("Right", eigenvalue * eigenvectors[:,i]) print()
The output is as follows:
Left [[ 1.78885438] [ 0.89442719]] Right [[ 1.78885438] [ 0.89442719]]
We found the eigenvalues and eigenvectors of a matrix with the eigvals()
and eig()
functions of the numpy.linalg
module. We checked the result using the dot()
function (see eigenvalues.py
):
from __future__ import print_function import numpy as np A = np.mat("3 -2;1 0") print("A ", A) print("Eigenvalues", np.linalg.eigvals(A) ) eigenvalues, eigenvectors = np.linalg.eig(A) print("First tuple of eig", eigenvalues) print("Second tuple of eig ", eigenvectors) for i, eigenvalue in enumerate(eigenvalues): print("Left", np.dot(A, eigenvectors[:,i])) print("Right", eigenvalue * eigenvectors[:,i]) print()