Berechnen Sie alle Eigenwerte einer sehr großen und sehr spärlichen Adjazenzmatrix


13

Ich habe zwei Graphen mit jeweils fast n ~ 100000 Knoten. In beiden Diagrammen ist jeder Knoten mit genau drei anderen Knoten verbunden, sodass die Adjazenzmatrix symmetrisch und sehr dünn ist.

Der schwierige Teil ist, dass ich alle Eigenwerte der Adjazenzmatrix brauche, aber keine Eigenvektoren. Um genau zu sein, wird dies einmal in meinem Leben sein (soweit ich das sehe!), Also möchte ich alle Eigenwerte erhalten und es macht nichts aus, ein paar Tage darauf zu warten.

Ich habe scipyWrapper ausprobiert ARPACK, aber es dauert viel zu lange. Ich habe mehrere Bibliotheken gefunden, aber sie eignen sich am besten, um eine Teilmenge der größten / kleinsten Eigenwerte zu erhalten. Gibt es eine Bibliothek, die für symmetrisch dünne Matrizen mit möglicherweise paralleler Implementierung funktioniert, um alle Eigenwerte zu erhalten?


6
Warum brauchen Sie aus Neugier alle Eigenwerte? Die meisten Probleme dieser Größe sind Annäherungen an noch größere (oder sogar unendlich dimensionale) Probleme, und daher nähern sich die Eigenwerte der kleinen Probleme nur dem Problem an, das man wirklich lösen möchte. Meistens ist die Qualität der Approximation nur für die kleinsten oder größten Eigenwerte gut, und alle anderen sind nur schlecht approximiert und folglich nicht von großem praktischem Interesse.
Wolfgang Bangerth


@WolfgangBangerth: (Verzeih mir, wenn dir das klar ist) Das Problem kommt von der Physik der Materialien. Dies hängt mit der engen Bindungsannäherung von Materialien zusammen, um die Bandstruktur sowie die Schwingungs- und elektrischen Eigenschaften zu erhalten. Um diese zu erhalten, brauche ich das gesamte Spektrum der Eigenwerte. Übrigens, das ist nichts Neues und geht bis in die 70er und 80er Jahre zurück, aber da mein System amorph ist, musste ich ein sehr großes System haben, um gute Ergebnisse zu erzielen. Obwohl sich die meisten Menschen nur um Kristalle kümmern, ist das im Vergleich zu meinem Fall extrem einfach.
Mahdi

2
@ Mahdi: Nun, ich meinte, dass die physikalischen Eigenschaften durch das Spektrum eines partiellen Differentialoperators bestimmt werden. Ich vermute (aber natürlich nicht, weil Sie nicht beschreiben, wo das Problem herkommt), dass das große Matrixeigenwertproblem, das Sie haben, nur eine Annäherung an das PDE-Problem ist. Folglich sind Ihre Eigenwerte auch nur Annäherungen.
Wolfgang Bangerth

Antworten:


8

Sie können die Shift-Invert-Spektraltransformation [1] verwenden und das Spektrum Band für Band berechnen.

Die Technik wird auch in meinem Artikel [2] erklärt. Neben der Implementierung in [1] ist eine Implementierung in C ++ in meiner Graphite-Software [3] verfügbar ( Update 17. Januar) : Jetzt ist alles auf Geogramm / Graphit Version 3 portiert ), für die ich die Eigenfunktionen des Laplace-Operators berechnet habe Maschen mit bis zu 1 Million Scheitelpunkten (ein ähnliches Problem wie bei Ihnen).

Wie es funktioniert:

EIN(V,λ)EIN(V,1/λ)EIN-1EINEIN-1EIN: man kann es stattdessen faktorisieren (zum Beispiel unter Verwendung einer spärlichen LU oder einer spärlichen -Faktorisierung) und dann A x = b lösen, wenn ARPACK nach einem Matrixvektorprodukt fragt. Dies ist die "invert" -Transformation. Wenn nun die Anzahl der Eigenwerte groß wird, wird ARPACK langsam, aber es gibt einen anderen Trick / eine andere Transformation, die verwendet werden kann, und man berechnet die Eigenwerte von A - σ I d, wobei σ eine "Verschiebung" ist, die bestimmt, von welchem ​​Teil Das Spektrum wird untersucht (dies ist die "Shift" -Transformation). Durch Kombination beider Transformationen wird eine bestimmte Anzahl von Eigenwerten von ( A - σ I berechnetLLtEINx=bEIN-σichdσ und untersucht dann das gesamte Spektrum Band für Band, indemσerhöht wird(EIN-σichd)-1σ

[1] http://www.mcs.anl.gov/uploads/cels/papers/P1263.pdf

[2] http://alice.loria.fr/index.php/publications.html?redirect=0&Paper=ManifoldHarmonics@2008

[3] http://alice.loria.fr/software/graphite/doc/html/


Danke Bruno! Diese sehen sehr vielversprechend aus, ich werde sie untersuchen!
Mahdi

1

Eine andere Option wäre die Verwendung von Jacobi-Rotationen. Da Ihre Matrix bereits fast diagonal ist, sollte die Konvergenz nicht lange dauern. Im Allgemeinen konvergiert es in der linearen Rate, aber nach genügend Iterationen wird die Konvergenzrate quadratisch.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.