8

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.

J. M.'s missing motivation
  • 124,525
  • 11
  • 401
  • 574
Mencia
  • 1,324
  • 12
  • 26

1 Answers1

11

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} *)
J. M.'s missing motivation
  • 124,525
  • 11
  • 401
  • 574
ybeltukov
  • 43,673
  • 5
  • 108
  • 212
  • 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 '17 at 15:58
  • 1
    @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. – ybeltukov Jan 31 '17 at 16:27