  Given an $n \times n$ nonsingular matrix A and the characteristic polynomial
of A as the starting point, we will leverage the Cayley-Hamilton Theorem to
efficiently calculate the maximal length Jordan Chains for each distinct
eigenvalue of the matrix. Efficiency and speed are gained by seeking a certain
type of starting vector as the first step of the algorithm. The method for
finding this starting vector does not require calculating the $ker[(A-\lambda
I)^k]$ which is quite an expensive operation, and which is the usual approach
taken in solving the Jordan Canonical basis problem. Given this starting
vector, all remaining vectors in the Jordan Chain are calculated very quickly
in a loop. The vectors comprising the Jordan Chains will then be used to
minimize the amount of equation solving in order to find the remaining
generalized eigenvector basis. We will prove a theorem that justifies why the
resulting Jordan Chains are of maximal length. We will also justify how to
derive the starting vector which will subsequently be used to calculate the
Maximal Jordan Chains.
