8
$\begingroup$

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.

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

1 Answer 1

11
$\begingroup$

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} *)
$\endgroup$
2
  • $\begingroup$ 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) $\endgroup$
    – L.K.
    Jan 31, 2017 at 15:58
  • 1
    $\begingroup$ @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. $\endgroup$
    – ybeltukov
    Jan 31, 2017 at 16:27

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.