My goal is to prove why normalized eigen values and eigen vectors have imaginary number.

According to this website: normalized eigen vector is just an eigen vector divided by the length of the vector.

I can prove it by comparing the eigen vector that I got manually with det(A - λ*I) = 0 with the normalized eigen vector from the numpy library.

However, I just don't get it how the numpy library can come up with an imaginary number for the returned eigen values and vectors.


import numpy as np

A = np.array([[1,-1],
              [6, 4]])
eigvalues, eigvectors = np.linalg.eig(A)
display(eigvalues, eigvectors)


array([2.5+1.93649167j, 2.5-1.93649167j])
array([[-0.23145502+0.29880715j, -0.23145502-0.29880715j],
       [ 0.9258201 +0.j        ,  0.9258201 -0.j        ]])

Isn't the normalized eigen vector formula is x / np.sqrt(x1^2 + xn^2)

If x = [ -1 ], then normalized x = [ -1 / √3 ]
       [ 2. ]                      [  2 / √3 ]


I tried to manually calculate the Code.

λ = (5 +- i√15) / 2

which roughly translate to 2.5 +- 1,93i. New question: why when I call eigenvalues.real it return [2.5, 2.5] instead of whatever is the calculation of 2.5 +- 1,93i is?


1 Answer 1


So answering your new question so $$ \lambda = 2.5 \pm i \sqrt{15}$$ have two eigenvalues encoded in the equation is $ \lambda_1 = 2.5 + i \sqrt{15}$ and $ \lambda_2 = 2.5 - i \sqrt{15}$. So every complex number consists of two parts real part and an imaginary part. Notice that the real part for the same for $\lambda_1$ and $\lambda_2$ hence when you ask for the real part it returns [2.5, 2.5].

In your case, both eigenvalues are complex hence and the eigenvector which is a tuple $( x_1, x_2)$ where $x_i$ is complex as well, but you are right you divide by the magnitude which is a real number.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.