Ich habe eine dichte echte symmetrische quadratische Matrix. Die Abmessung beträgt ca. 1000x1000. Ich muss die erste Hauptkomponente berechnen und mich fragen, welcher Algorithmus dafür am besten geeignet ist.
Es scheint, dass MATLAB die Arnoldi / Lanczos- Algorithmen (für eigs
) verwendet. Aber wenn ich über sie lese, bin ich mir nicht sicher, ob sie Vorteile gegenüber einer einfachen Potenziteration haben , da meine Matrix nicht dünn ist und ich nur am ersten Eigenvektor interessiert bin.
Irgendwelche Empfehlungen, was ist der schnellste Algorithmus in diesem Fall?
linear-algebra
algorithms
eigensystem
Mika Fischer
quelle
quelle
Antworten:
Die schnellste Methode hängt wahrscheinlich vom Spektrum und der Normalität Ihrer Matrix ab, aber in allen Fällen sollten Krylov-Algorithmen strikt besser sein als die Leistungsiteration. GW Stewart hat eine nette Diskussion dieses Themas in Kapitel 4, Abschnitt 3 von Matrixalgorithmen, Band II: Eigensysteme :
und er fährt fort zu zeigen, dass für eine Diagonalmatrix mit dem -ten Diagonalwert, der auf (ab ), der Krylov-Unterraum nach 25 Iterationen den dominanten Eigenvektor acht Größenordnungen erfasst besser als Power-Iteration.i .95 i i = 0100×100 i .95i i=0
quelle
Die Leistungsiteration ist die einfachste, aber wie oben erwähnt, würde sie wahrscheinlich sehr langsam konvergieren , wenn die Matrix sehr nicht normal ist. Sie erhalten ein "Buckel" -Phänomen, bei dem die Sequenz für viele Iterationen zu divergieren scheint, bevor asymptotisches Verhalten einsetzt.
Da Ihre Matrix symmetrisch ist, können Sie RQI-Iterationen in Betracht ziehen, die im symmetrischen Fall eine kubische Konvergenz ergeben: http://en.wikipedia.org/wiki/Rayleigh_quotient_iteration .
Was Arnoldi- oder Lanczos-Iterationen sehr schön macht (zumindest meiner Meinung nach, aber ich erforsche keine numerische lineare Algebra), ist, dass sie sehr vielseitig sind. Es ist normalerweise möglich zu steuern, welche Eigenwerte sie Ihnen geben und wie viele Sie erhalten. Dies gilt insbesondere im symmetrischen Fall (und noch besser, wenn Ihre Matrix eindeutig ist). Für symmetrische Probleme sind sie sehr robust. Als Black Box funktionieren sie gut, sind aber auch sehr empfänglich für neue Probleminformationen, wie beispielsweise die Fähigkeit, Systeme zu lösen, an denen die Matrix beteiligt ist.
quelle