# Is there any faster way than Eigensystem to diagonalize a Hermitian matrix?

Is there any faster way than using Eigensystem to diagonalize (get all the eigenvectors and eigenvalues) of a Hermitian (self-adjoint) matrix?

That would be amazing :).

Thanks.

• You are talking about matrices with numbers as elements, right? Jan 21, 2014 at 14:34
• @halirutan , yes indeed, complex numbers in general. Jan 21, 2014 at 14:35
• In the case where it is positive definite, possibly diagonalizing, via eigensystem, a Cholesky factor might give a speed boost. Jan 21, 2014 at 15:33

I think the answer is no. Eigensystem already uses faster algorithms for Hermitian matrices. See what happens when I add a small non-Hermitian matrix:

n = 1000;

m = RandomComplex[1 + I, {n, n}];
h = m + ConjugateTranspose[m];
d = 10^-10 RandomComplex[1 + I, {n, n}];

Eigensystem[h]; // AbsoluteTiming
(* {2.971269, Null} *)

Eigensystem[h + d]; // AbsoluteTiming
(* {14.567275, Null} *)

• A query after your helpful answer. Is there a chance where Mathematica assumes Matrix not to be Hermitian, even though it is Hermitian?(This is what happened with me)
– L.K.
Jan 31, 2017 at 15:58
• @L.K. Your matrix can be Hermitian up to some numerical precision depending on your previous computations. You can make it Hermitian in a strict sense with h = (h + ConjugateTranspose[h])/2. Jan 31, 2017 at 16:27