Method for choosing the shift c: First compute some power of A, say A^16. Let u be
the unit vector obtained by normalizing the first column of A^16. Compute
u · Au .
Then check to see if
|Au − (u · Au)u| < (sigma) (*)
where this is our tolerance level. For purposes of this project, take = 10−8.
If (*) is satisfied, great – we have our approximate eigenvector u. If not, shift by
c = u · Au, and replace A by (A − cI)−1. (Were this not invertible, c would be an
eigenvalue). Now repeat. Since the passage from A to (A − cI)−1 changes only the
eigenvalues, and not the eigenvectors, finding an eigenvector u of (A − cI)−1 gives us an
eigenvector of A.