Kontinuität der Eigenvektoren der parametrischen Matrix

8

Ich habe -dimensionalen Matrizen H ( K ) in Abhängigkeit von Vektorparametern k .nH^(k)k

Nun geben Eigenwertroutinen Eigenwerte in keiner bestimmten Reihenfolge zurück (sie werden normalerweise sortiert), aber ich möchte Eigenwerte als glatte Funktionen von k verfolgen . Da Eigenwerte nicht in einer bestimmten Reihenfolge zurückgegeben werden, wird nur E i für einen bestimmten Index i { 1 , . . , n } gibt eine Reihe von Linien zurück, die nicht glatt sind, wie im Bild unten gezeigtEikEii{1,..,n}

Bandstruktur

Meine Idee, durchgehende Linien zu verfolgen, war die Verwendung von Eigenvektoren. Für zwei nahe Punkte sollten nämlich und k + d k Eigenvektoren ungefähr orthonormal sein, so dass v i ( k ) v j ( k + d k ) δ p i p j wobei p i , p j& pgr; ( { 1 , . . . ,kk+dkvi(k)vj(k+dk)δpipj und π ist eine Permutation. Dann würde ich die gegebene Permutation verwenden, um die Eigenwerte neu zu ordnen und so glatte Linien zu verfolgen.pi,pjπ({1,...,n})π

Mit anderen Worten, ich würde die Kontinuität von Eigenvektoren verfolgen.

Ich habe jedoch einige Probleme mit numerischen Routinen. Bei einer bestimmten kleinen Teilmenge von Punkten, die ich verwende, sind wenige Eigenvektoren an nahe gelegenen Punkten nicht annähernd orthonormal. Mein erster Verdacht war, dass diese Eigenvektoren einem entarteten Eigenwert entsprechen, aber das ist nicht immer wahr.

Dies gilt auch, wenn ich auf sehr klein reduziere .dk

Darf so etwas passieren? Oder kann garantiert werden, dass numerische Routinen kontinuierliche Eigenvektoren zurückgeben? Die von mir verwendete Routine ist numpy.linalg.eigh, eine Schnittstelle für zheevd von LAPACK.

(Physiker unter euch werden erkennen, dass ich über die Bandstruktur spreche)

Tomic
quelle
1
Deine Matrix ist hermitisch, oder?
k20
Na sicher. Ich habe vergessen, das zu erwähnen.
Tomic
Vielleicht besteht das Problem darin, dass die Eigenvektoren auch dann ein beliebiges Vorzeichen haben können, wenn die Eigenwerte unterschiedlich sind?
k20
Ich denke nicht, dass dies das Problem sein sollte, da ich am Ende nur den absoluten Wert der Matrix der Eigenvektorprodukte nehme.
Tomic
Würden Sie in der Lage sein, numpy.linalg.svdIhre Eigenvektoren zu erzeugen. Zumindest in Matlab gibt die zugrunde liegende Routine für svdimmer die Eigenwerte und Eigenvektoren in absteigender Reihenfolge zurück.
Horchler

Antworten:

3

An Punkten, an denen zwei Linien verschmelzen, haben Sie, dass zwei Eigenwerte gleich sind und folglich der Eigenraum, der diesen beiden Eigenvektoren entspricht, zweidimensional ist. Dies bedeutet, dass zu diesem Zeitpunkt die beiden Eigenvektoren nicht mehr eindeutig sind (nicht nur bis zu einem Vorzeichen), sondern einer der unendlich vielen möglichen orthogonalen Vektoren sein können, die diesen zweidimensionalen Raum überspannen.

k

Wolfgang Bangerth
quelle
Es war das erste, woran ich dachte. Ich war jedoch überrascht, dass dies auch bei nicht entarteten Eigenwerten der Fall war.
Tomic
ziemlich sicher, dass dies für Einsiedlermatrizen nicht für Eigenwerte geschieht, die nicht entartet sind
k20
Diese Frage könnte
Wolfgang Bangerth
2

Ich arbeite in der Elektromagnetik, also muss ich photonische Bandstrukturen berechnen. Früher habe ich versucht, die Bands glatt zu machen, indem ich versucht habe, Überkreuzungspunkte zu erkennen, aber nach vielen Versuchen und Diskussionen mit Kollegen kamen wir letztendlich zu dem Schluss, dass es keinen wirklich guten Weg oder Grund dafür gibt.

Wenn Sie jedoch weiterhin darauf bestehen, das zu tun, was Sie möchten, möchten Sie die Berechnung von Eigenwertableitungen in Bezug auf k betrachten. Es gibt eine ganze Menge Literatur dazu, hauptsächlich zur Störungstheorie von Eigenwertproblemen (klassisches Buch von Kato), und auch zur Störungsanalyse bei Vorhandensein von Eigenwert-Degerazien (ein viel schwierigeres Problem, Literatur von Roger CE Tan). Ich würde versuchen, dies zuerst für den nicht entarteten Fall zu tun, da dies immer noch relativ einfach ist.

Victor Liu
quelle