characteristic polynomial
How do you actually hunt down a matrix's eigenvalues? You build a single polynomial out of the matrix: det(A - lambda*I). This is the characteristic polynomial, and its magic is that its roots are exactly the eigenvalues. Wherever this polynomial equals zero, you have found a stretch factor lambda for which a genuine eigenvector exists.
The reasoning is simple. A*v = lambda*v can be rearranged to (A - lambda*I)*v = 0. For a nonzero v to satisfy that, the matrix A - lambda*I must be non-invertible, which happens precisely when its determinant is zero. So setting det(A - lambda*I) = 0 turns the search for eigenvalues into solving one equation.
For an n-by-n matrix the polynomial has degree n, so there are always n eigenvalues counting multiplicity, though some may repeat or be complex. Example: for A = [[2,1],[0,3]], det(A - lambda*I) = (2 - lambda)*(3 - lambda), giving lambda = 2 and lambda = 3.
The roots lambda = 2 and lambda = 3 are the eigenvalues of A.
Because the polynomial may have complex or repeated roots, a real matrix can have complex eigenvalues (a pure rotation is the classic case with no real ones).