Diagonalization Strategy ------------------------ Diagonalization algorithms usually have three significant steps. The first step is to convert the matrix to upper Hessenberg form, where all matrix elements below the subdiagonal are zeros. A sequence of similarity transforms can put a matrix into Hessenberg form. The second step is the Schur decomposition, where an algorithm uses a sequence of similarity transforms to convert the matrix to upper triangular form per the Triangularization Theorem. The Schur decomposition requires an iterative algorithm. The final step is to find the eigenvectors from the Schur vectors and the eigenvectors of the upper triangular matrix. The triangular structure of the matrix allows for computing the eigenvectors with a direct calculation.