|
Simultane Vektoriteration: A reell symmetrisch |
| -
Bei der simultanen Vektoriteration wird ähnlich
vorgegangen wie beim von Mises-Verfahren: aus einer Folge
Xk=AkX0 wird Eigenwertinformation
auf dem
Weg über Eigenvektorinformation gewonnen. Hier wird nun nicht mit
einem einzelnen Vektor iteriert, sondern mit einem linear unabhängigen
System von p Vektoren. Die lineare Unabhängigkeit wird dadurch
garantiert, dass nicht die hier zunächst angedeutete primitive Variante
benutzt wird. Vielmehr wird nach jeder Matrixanwendung das neue Vektorsystem
orthogonalisiert und darüber hinaus sogar orthogonal in ein im Sinne der
Fehlerabschätzung optimales System transformiert. So findet man
unter analogen Voraussetzungen an die Startmatrix die p
grössten Eigenwerte von A, wobei die Konvergenzrate sich
wie
lambdap+1/lambdai, i=1,...,p
verhält, d.h. z.B., dass der grösste Eigenwert die schnellste
Konvergenz aufweist.
- Hier wird A als reell-symmetrisch vorausgesetzt, es gibt aber auch
eine Variante für den allgemeinen Fall.
Da hier in jedem Schritt ein
vollständiges Eigenwertproblem der Dimension p gelöst
wird, ist das alles nur sinnvoll wenn n > > p .
- Bei der Diskretisierung des Schwingungsproblems einer
eingespannten Membran, d.h. des Eigenwertproblems des Laplaceoperators,
entsteht ein symmetrisches Eigenwertproblem hoher Dimension, von dem
einige der kleinsten Eigenwerte gesucht sind. D.h. bei diesem Beispiel
setzen wir die Technik der inversen Iteration (Wielandt) ein.
- Die Eigenvektoren der Matrix geben die Eigenschwingungen (Moden)
der Membran wieder.
- Hier ist das Grundgebiet das Einheitsquadrat. Die Membran ist
am Rand eingespannt, d.h. wir haben homogene Dirichletdaten.
Aufgrund der Symmetrie des Problems gibt es hier mehrfache Eigenwerte.
- Zur Berechnung der Eigenwerte wird das Verfahren RITZIT von Rutishauser verwendet.
Sind p Eigenwerte gesucht, so iterieren wir p+3 Vektoren
simultan. Es wird dabei eine Orthogonalbasis iteriert und in jedem Schritt
wiederhergestellt.
Xk = A Qk-1 bzw. A Xk = Qk-1
Xk = Uk Rk
Mit Qk und Uk orthonormiert und Rk als oberer
Dreiecksmatrix.
Die nächste Basis von Xk wird so gewählt,
dass der Fehler im matriziellen
Rayleighquotienten minimal ist bezüglich dieser Basis. Im Fall des Membranbeispiels
benutzen wir das Wielandtverfahren.
RkRkT = Vk Dk2VkT
Spektralzerlegung
Qk = Uk Vk
Für geeignet gewähltes Q0=X0 konvergieren die Diagonalelemente von Dk
gegen die dominanten Eigenwerte bzw. gegen die Reziprokwerte der kleinsten Eigenwerte von A und die Spalten von Qk
gegen die zugehörigen Eigenvektoren.
Da dieser Prozess sehr aufwendig ist, werden bei Rutishauser zusätzliche
Matrix-Vektoriterationen ohne Orthogonalisierung sowie konvergenzbeschleunigende
Massnahmen durchgeführt. Deshalb ist die hier protokollierte Anzahl
von Schritten der ''Lambda-History'' viel kleiner als die Anzahl der
durchgeführten Matrix-Vektor-Multiplikationen.
|
|
|
Die Eingaben |
| - Sie können entweder ein eigenes Problem definieren,
indem Sie ein Programmstück eingeben, das die Matrix-Vektormultiplikation
y = A*x realisiert, (es werden dann die p grössten
Eigenwerte bestimmt) oder sich das Beipiel mit der schwingenden Membran anschauen.
- Im Falle eines selbstdefinierten Problems geben Sie ein:
- Die Matrix wird hier durch ein Unterprogrammstück repräsentiert,
das die Matrixvektormultiplikation y=A*x ausführt. Dazu
müssen Sie natürlich A nicht als Matrix speichern,
siehe Vorlage im Formular.
- Die Steuergrössen sind
- n die Dimension der Matrix
- p die Anzahl der gewünschten Eigenwerte.
- steps die maximale Anzahl der Schritte, die dazu
aufgewendet werden sollen.
- die Abbruchgenauigkeit epsaccept
- auf Wunsch auch die Startmatrix X0, die dann
intern erst noch orthogonalisiert wird.
|
| Beispiel schwingende Membran: |
|
- Die Schrittweite hx der Gitterpunkte in x- Richtung als
nx = 1/hx .
Die Dimension der
Matrix ist dann n = (nx-1)2. Wichtig: 2 <= nx <=
33 ! Es ist hier hy=hx
- Die Anzahl p der zu berechnenden kleinsten Eigenwerte. Wichtig:
1 <= p <= 10 !
|
|
|
Die Ausgaben |
|
- Ausgegeben werden die berechneten Eigenwerte zusammen mit der
bekannten relativen Fehlerschranke
||A*x - lambda*x||/||A*x||
und
- eine Grafik, die die Konvergenz der Eigenwerte über der
k-Achse zeigt sowie im Fall der schwingenden Membran
- ein animiertes Bild der zugehörigen Eigenschwingungen. Im Abstand
von einigen Sekunden wird für je einen Eigenwert die Darstellung
des Eigenvektors als interpolierte Fläche über dem
Einheitsquadrat gezeigt.
|
|
|
Fragen ?! |
|
- Entspricht das Resultat den theoretischen Erwartungen?
- wie hängt die Genauigkeit der Eigenwerte von der
Diskretisierung ab ? Wie gut werden die Grundschwingungen wiedergegeben ?
|
|
|
|