Ich habe Jacobi-Methode verwendet, um alle Eigenwerte und Eigenvektoren in c-Code zu finden. Obwohl die Komplexität der Jacobi-Methode O (n^3) ist, ist die Dimension meiner Matrix sehr groß (17814 X 17814). Es benötigt viel Zeit. Ich möchte einen besseren Algorithmus kennen, mit dem ich dieses Problem lösen kann. Wenn Sie möchten, kann ich meinen c-Code anhängen.Wie finde ich einen besseren Algorithmus zur Berechnung von Eigenwert und Eigenvektor einer sehr großen Matrix?
6
A
Antwort
2
Der in den Kommentaren vorgeschlagene Algorithmus ist nicht unbedingt der beste.
Wie Sie sehen können here, kann die Jacobi-Methode erheblich schneller sein, wenn Sie spezielle Techniken verwenden.
Darüber hinaus ist Jacobi ziemlich einfach parallel zu laufen, und es ist viel schneller für dünn besetzte Matrizen als für dichte Matrizen, so dass Sie auch davon profitieren können, abhängig von Ihrer Architektur und der Art der Matrix, die Sie haben.
Ich würde sagen, dass das Beste ist, ein paar verschiedene Methoden zu testen und in der Praxis zu sehen, wo Sie die besten Ergebnisse erzielen können.
O(n^2.376)
ist nicht unbedingt besser als O(n^3)
abhängig von Konstanten.
Diese Frage wurde [bereits hier beantwortet] (http://mathoverflow.net/questions/62904/complexity-of-eigenvalue-decomposition) –
Der Coppersmith und Winograd Algorithmus kann das Problem in O lösen (n^2.376) –