How should the power iteration be modified to handle complex yet Hermitian matrices? Because the matrix is Hermitian, the eigenvalues are real. I realize that the power method will fail if the eigenvalues are non-real, but I would think that it should work in my case.

It seems to me that the naive algorithm should be unchanged. There is a possible complication when doing the scaled power iteration, where one computes the norm of the current iterate.

There is also a potential issue with deflation for computing multiple eigenpairs. Does the simple Hotelling deflation method not work for complex Hermitians?


There are two simple changes that need to be made.

First, in the power iteration itself, the full complex version of the Rayleigh quotient $R(M, x) = x^H M x / (x^H x)$ must be used, instead of its simplified real version $x^T M x / (x^T x)$. Thus, the algorithm would be: $$ \begin{align} \textrm{while not converged}: & \\ w \leftarrow& A v \\ v \leftarrow& w / \|w\|_2 \\ \lambda \leftarrow& v^H A v \end{align} $$ (See this PR to TheAlgorithms to see Python code for this change.)

In addition, deflation for computing multiple eigenvalues/eigenvectors must also account for the fact that the eigenvector may be complex. For example, Hotelling deflation would now be

$$ A \leftarrow A - \lambda v v^H / (v^H v). $$