Der Schnellste Weg zur Berechnung der Eigenwerte großer Matrizen

Ich bis jetzt verwendet numpy.linalg.eigvals zur Berechnung der Eigenwerte von quadratischen Matrizen mit mindestens 1000 Zeilen/Spalten, und in den meisten Fällen, über ein Fünftel der Einträge, die nicht null ist (ich weiß nicht, ob das in Betracht gezogen werden ein sparse matrix). Ich fand einen anderen Thema darauf hinweist, dass scipy können möglicherweise einen besseren job machen.

Da ich jedoch zur Berechnung der Eigenwerte für Hunderte von tausenden von großen Matrizen Zunehmender Größe (möglicherweise bis zu 20000 Zeilen/Spalten, und ja, ich brauche ALLE Ihre Eigenwerte), das wird immer schrecklich lange. Wenn ich kann die Dinge beschleunigen, auch nur das kleinste bisschen, wäre es wahrscheinlich die Mühe Wert sein.

Also meine Frage ist: gibt es einen schnelleren Weg zur Berechnung der Eigenwerte, wenn nicht, beschränke mich auf python?

  • Wenn python ist nicht unbedingt ein muss, dann ist jede andere Low-level-Sprache (C++ oder auch C#) geben Sie einen Geschwindigkeitsschub. Nur Frage der geeigneten Umsetzung.
  • Was auch immer Sie tun, Bedenken Sie, dass eine Menge numpy ist ein Python-freundlich wrapper-Funktionen geschrieben, die in Sprachen wie C, Fortran, assembler. Ich sehe aus den docs, die numpy.linalg.eigvals ich eine wrapper-Funktionen in der LINPACK-Bibliothek. Dies bedeutet nicht, dass Sie nicht finden können, schneller Löser, aber Sie müssen möglicherweise ein Blick über numpy, scipy und LAPACK um Sie zu finden.
  • Verwenden Sie eine iterative Methoden ? Wenn ja, vielleicht kannst du parallelise Sie ?
InformationsquelleAutor alice | 2013-07-04
Schreibe einen Kommentar