Ich habe ein Programm, das den größten Eigenwert vieler reeller symmetrischer 50x50-Matrizen berechnet, indem es Singulärwertzerlegungen für alle durchführt. Die SVD ist ein Engpass im Programm.
Gibt es Algorithmen, die viel schneller den größten Eigenwert finden, oder würde eine Optimierung dieses Teils nicht viel Kapitalrendite bringen?
Antworten:
Abhängig von der Genauigkeit, die Sie für den größten Eigenwert benötigen, können Sie die Power-Iteration verwenden .
Für Ihr spezielles Beispiel würde ich so weit gehen, dass ich nicht explizit bilde, sondern x ← X ( X T x ) in jeder Iteration berechne . Die Berechnung von A würde O ( n 3 ) -Operationen erfordern, wohingegen das Matrixvektorprodukt nur O ( n 2 ) erfordert .A=XXT x←X(XTx) A O(n3) O(n2)
Die Konvergenzrate hängt von der Trennung zwischen den beiden größten Eigenwerten ab. Dies ist daher möglicherweise nicht in allen Fällen eine gute Lösung.
quelle
Wenn nur 5 Eigenwerte sehr signifikant sind, sollte der Lanczsos-Algorithmus mit als Matrixvektor-Multiplikation nach 5 Anfangsschritten eine schnelle lineare Konvergenz ergeben, daher ein ziemlich genauer größter Eigenwert mit wenigen Iterationen.X(XTx)
quelle
Für eine positive semi-definite Matrix wie kann es sich lohnen, die Konvergenz mit einer Spektrumverschiebung zu beschleunigen . Das heißt, ein geeigneter Skalar μ wird ausgewählt und die Potenzmethode wird auf A - μ I anstelle von A angewendet .A=XXT μ A−μI A
Ein paar Wiederholungen der Grundleistung Methode sollten Sie eine grobe Schätzung geben des größten Eigenwertes λ 1 . Angenommen, der dominante Eigenwert hat die Multiplizität 1 und alle anderen sind in [ 0 , 5||Ax||/||x|| λ1 , dannA-5[0,56λ1] hätte den größten Eigenwert7A−512λ1I und der Rest in[-5712λ1 .[−512λ1,512λ1]
Mit anderen Worten, Sie würden die Dominanz des größten Eigenwerts von 20% über den nächstgrößeren auf 40% über den nächstgrößeren (absoluten Wert eines) Eigenwerts erhöhen. Die geometrische Konvergenz der Potenzmethode würde sich entsprechend beschleunigen. Sobald der größte Eigenwert von mit ausreichender Genauigkeit gefunden wurde, wird λ 1 geschätzt, indem die Verschiebung μ , die weggenommen wurde, zurückaddiert wird.A−μI λ1 μ
quelle