Nummerische Behandlung des EWP

Werbung
NUMERISCHE BEHANDLUNG DES EWP
16.05.07
Numerische Behandlung des Eigenwertproblems
Zusammenfassung
Das Ziel dieses Vortrages ist, zwei gute Methoden für die numerische Bestimmung der
Eigenwerte zu zeigen und wie man diese mit Matlab anwenden kann (implementieren).
Namentlich wären das die Vektoriteration und die QR-Zerlegung.
0.
Einleitung
Wie wir bereits gesehen haben, benötigt man zum Lösen von den verschiedensten Problemen
oft die Eigenwerte (EW) einer Matrix; sei es um die Hauptspannungen einer belasteten Probe
auszurechnen oder eine Matrix in der Normalform zu schreiben.
Deshalb möchte man die Eigenwerte möglichst gut und einfach berechnen können. In der
Praxis geschieht dies natürlich numerisch mittels Computern.
Mit der Methode des charakteristischen Polynoms, die wir ja meist anwenden, hat der
Computer seine Mühen, besonders wenn die Eigenwerte sehr nahe beieinander liegen. In
diesem Fall können unverhältnismässig grosse Fehler entstehen, was gelinde gesagt, nicht
wünschenswert ist.
Ein Auszug vom Buch „Lineare Algebra“ von K. Nipp auf der Seite 215 soll diese
Problematik verdeutlichen:
P3 (λ ) = −(λ − 1.4)(λ − 2 )(λ − 2)
= −λ3 + 4.8142λ2 − 7.6083λ + 3.9598
Das Polynom mit 5-stelliger Numerik ausgerechnet, ist mit 3-stelligen Fehlern behaftet.
∆ 1 = [λ1 − λ1* ] ≈ 1.6 * 10 −3
∆ 2 = [λ 2 − λ*2 ] ≈ 1.6 * 10 −3
∆ 3 = [λ3 − λ*3 ] ≈ 1.3 * 10 −15
Wobei das die exakten Eigenwerte sind
λ1 = 1.4 λ2 = 2 λ3 = 2
Zusammenfassend kann man sagen, dass die Methode des charakteristischen Polynoms
folgende Nachteile besitzt:
-
Bei Polynomen höheren Grades ist die Bestimmung der Nullstellen schwer und
fehleranfällig
imaginäre Lösungen können auftreten
relativ grosse Fehler bei nah zusammenliegenden EWs
(es werden alle EW ausgerechnet)
Es sind also andere Methoden von Nöten, um die EW zu bestimmen.
Dimitri Kokkinis, Martin Kubli
Samuele Laffranchini, Maya Matthias
1
NUMERISCHE BEHANDLUNG DES EWP
16.05.07
1. Vektoriteration
1.1.1 Vektoriteration für symmetrische Matrizen
Die Vektoriteration ist ein Verfahren zur Berechung von Eigenvektoren und Eigenwerten. Es
wird dabei jeweils nur der betragsmässig kleinste Eigenwert berechnet, in der Praxis reicht
das aber oft aus.
Wir betrachten hier nur die Vektoriteration für symmetrische Matrizen, am Beispiel einer 2x2
Matrix A. Für eine solche Matrix A gilt:
− Alle Eigenwerte sind reell
− Es existiert eine orthonormale Eigenbasis zu A
Aufgrund dieser Voraussetzungen lässt sich ein beliebiger 2x1 Vektor xa als
Linearkombination der beiden normierten Eigenvektoren x(1) und x(2) der Matrix A schreiben:
xa = c1a x(1) + c2a x(2)
Es gelten ausserdem folgende Identitäten:
A x(1) = λ1 x(1)
A x(2) = λ2 x(2)
(Definition des Eigenwerts)
A xa = A c1a x(1) + A c2a x(2) = λ1 c1a x(1) + λ2 c2a x(2)
1.1.2 erste Iteration
Wir definieren nun eine Folge von Vektoren x0, x1, x2, … , xk.
Der obere Index ohne Klammer bezeichnet den jeweiligen Iterationsschritt. x0 ist ein zufällig
gewählter Startvektor.
Es soll nun gelten:
A x 1 = x0
A x 2 = x1
A x 3 = x2
Usw.
Dies ist unsere Iterationsvorschrift. Für die Iteration muss in jedem Schritt eine Gleichung
A xk = xk-1
mit Hilfe einer LR-Zerlegung gelöst werden, dies führt am Ende zu einem Vektor xk.
1.1.3 Eigenschaften dieser Iteration
Unter Anwendung obiger Identitäten lässt sich die Gleichung schreiben als:
λ1 c11 x(1) + λ2 c21 x(2) = c10 x(1) + c20 x(2)
(λ1 c11 - c10) x(1) + (λ2 c21 – c20) x(2) = 0
Da x(1) und x(2) die Eigenbasis von A bilden, sind sie linear unabhängig und die obige
Gleichung wird nur Null, wenn die Koeffizienten gleich Null sind:
(λ1 c11 - c10) = 0
(λ2 c21 - c20) = 0
⇒ c11 = (1/ λ1) c10
c21 = (1/ λ2) c20
Dimitri Kokkinis, Martin Kubli
Samuele Laffranchini, Maya Matthias
2
NUMERISCHE BEHANDLUNG DES EWP
16.05.07
Der Iterationsvorschrift zufolge lässt sich der Vektor:
x1 = c11 x(1) + c21 x(2)
also schreiben als:
x1 = (1/ λ1) c10 x(1) + (1/ λ2) c20 x(2)
In einem 2. Iterationsschritt können wir x2 bestimmen:
A x 2 = x1
⇒ λ1 c12 x(1) + λ2 c22 x(2) = c11 x(1) + c21 x(2)
Mit der gleichen Rechung wie oben lassen sich wieder c12 und c22 durch c11 und c21
ausdrücken:
c12 = (1/ λ1) c11
c22 = (1/ λ2) c21
⇒ c12 = (1/ λ1)2 c10
c22 = (1/ λ2)2 c20
Daraus folgt für den Vektor x2:
x2 = (1/ λ1)2 c10 x(1) + (1/ λ2)2 c20 x(2)
= (1/ λ1)2 (c10 x(1) + (λ1/ λ2)2 c20 x(2))
Für k Iterationsschritte gilt:
xk = (1/ λ1)k (c10 x(1) + (λ1/ λ2)k c20 x(2))
Wir definieren nun λ1 als den betragsmässig kleinsten Eigenvektor der Matrix A.
Dann konvergiert der zweite Term der Summe für k → ∞ gegen Null, da (λ1/ λ2) < 1.
Es gilt dann:
xk = (1/ λ1)k c10 x(1) = d x(1)
d ist dabei nur ein Skalar, d.h. die Iteration führt zu einem xk , welches gegen einen Vektor in
Richtung des Eigenvektors konvergiert.
1.1.4 zweite Iteration
Mit diesem Wissen modifizieren wir die Iterationsvorschrift so, dass wir jeden iterierten
Vektor normieren. Dies spielt vor allem für die spätere Berechnung von λ1 eine Rolle. Wir
starten mit einem normierten x0:
A x 1 = x0
A x2 = (x1 / ||x1||)
A x3 = (x2 / ||x2||)
usw.
Für k → ∞ gilt dann:
(xk/ ||xk||)= x(1)
Somit kann man mit dieser Iteration den Eigenvektor zum kleinsten Eigenwert der Matrix A
berechnen. Die Iteration wird solange durchgeführt bis die Vektoren (xk/ ||xk||) und (xk-1/||xk1
||) bis zur gewünschten Genauigkeit übereinstimmen.
Dimitri Kokkinis, Martin Kubli
Samuele Laffranchini, Maya Matthias
3
NUMERISCHE BEHANDLUNG DES EWP
16.05.07
Für die Berechnung des Eigenwertes λ1 zu diesem Eigenvektor, betrachten wir die folgende
Gleichung:
Für k gross genug gilt:
(xk/ ||xk||)= x(1)
A(xk/ ||xk||)= Ax(1)
(Axk)/ ||xk||= λ1x(1)
(xk-1/ ||xk-1||)/||xk|| = λ1x(1)
||((xk-1/ ||xk-1||)/||xk||)|| = ||λ1x(1)||
1/||xk|| = λ1
(Da x(1) und (xk-1/ ||xk-1||) die Norm 1 besitzen)
Somit kann man durch die Vektoriteration bis zum k-ten Schritt den kleinsten Eigenwert und
den dazugehörigen Eigenvektor berechnen.
1.2 Die Implementierung der Vektoriteration in Matlab
1.2.1 Vorgehensweise
Um ein Algorithmus erfolgreich zu implementieren, ist es sicher sinnvoll die einzelnen
Schritte des Verfahrens in der logischen Reihenfolge zu skizzieren:
Zur Erinnerung:
Gegeben ist:
Gesucht ist:
Input:
A sei eine beliebige, symmetrische ( A = AT ) Matrix vom Rang r und
x0 sei ein beliebiger Spaltenvektor ( r x 1), jedoch kein EV von A
Betragsmässig kleinster EW von A
x0 normieren
Dimension
Toleranz
Matrix
Gleichungssystem
Ax = x0
nach x lösen
Nein
x normieren
Output: kl. Eigenwert
Eigenvektor
Dimitri Kokkinis, Martin Kubli
Samuele Laffranchini, Maya Matthias
Ja
x mit x0 vergleichen
Genügend genau?
4
NUMERISCHE BEHANDLUNG DES EWP
16.05.07
1.2.2 Das Programm
Das Schema aus 1.2.1 in die Sprache von Matlab übersetzt wäre dann:
% Vektoriteration
d=3
A = randn(d,d);
A = A'*A;
A = round(10*A)
x0 = randn(d,1);
x0 = round(x0)
Titel
legt die Dimension fest
erstellt eine dxd Matrix, hier 3x3
macht sie symmetrisch
rundet Werte (zwischen 0 und 10)
erstellt zufälliger Spaltenvektor
rundet den Spaltenvektor
x0 = x0/norm(x0);
for i=1:100
x = A\x0;
n = norm(x);
x = x/n;
x0 wird durch seine Norm ersetzt (Normierung)
Begin der Schleife (*)
neuer Vektor x
if (abs(x-x0)<1.e-5)
break;
else
x0 = x;
end
end
Abbruchsbedingung, Toleranz
normiert den Vektor x
Definiert x als neues x0
(es geht zurück zu (*))
fprintf('Anzahl von Schritten %i\n',i)
fprintf('Eigenwert ist %f\n',1/n)
x
Ausgabe der benötigten Schritte
zeigt den EW
zeigt den EV
[V D] = eig(A);
D(1,1)
V(:,1)
Kontrollrechnung
zeigt den EW
zeigt den EV
Es muss nicht jeder einzelne Tag (Code) verstanden werden, sondern die Vorgehensweise ist
entscheidend.
Zeichenerklärung:
%
;
fprintf(' ')
for
break
if else
randn
norm()
round()
[V D] = eig(A)
kommentiert eine Zeile aus (deaktiviert)
Unterdrückt die Anzeige dieser Zeile im Output
Textfeld
Erstellt i Schleifen (i geht von 1 bis 100)
Stoppt die for-Schleife
Wenn (if) die Bedingung erfüllt ist, dann mache dies, sonst (else) mach das.
Erzeugt eine Zufallszahl
Normiert einen Vektor
Rundet Zahlen
Erstellt eine Matrix V bestehend aus den EV und einer Diagonalmatrix D mit den
EW.
Hier wurde eine Zufallsmatrix der Dimension d erstellt. Man kann auch eine selbstgewählte
(symmetrische) Matrix verwenden.
Beispielsweise:
A =[ 1 2 ; 2 1]
Die Toleranz oder die Mindestgenauigkeit wird bei if mit: (abs(x-x0)<1.e-5) bestimmt. Das
Programm läuft bis diese Genauigkeit erreicht wurde (oder i=100).
Dass das Programm tatsächlich funktioniert, zeigt das Beispiel im Anhang 3.1
Dimitri Kokkinis, Martin Kubli
Samuele Laffranchini, Maya Matthias
5
NUMERISCHE BEHANDLUNG DES EWP
16.05.07
1.2.3 Vergleich: Methode des charakteristischen Polynoms und der
Vektoriteration
Wir kommen zurück zur Methode des charakteristischen Polynoms und möchten diese mit
der Vektoriteration vergleichen. Dazu wurde auch die Methode des charakteristischen
Polynoms in Matlab implementiert. (Der Quellcode befindet sich im Anhang 3.2)
Da es schwer ist Rechenschritt an sich zu zählen, möchten wir die benötigte Zeit der beiden
Algorithmen vergleichen. Die Zeit ist schlussendlich ja das entscheidende Effizienzkriterium.
Dazu wurde die Zeit mit der Funktion ’tic’ ’toc’ vom Computer selbst gemessen. Natürlich
mussten die beiden Algorithmen die gleiche Zufallsmatrix bearbeiten.
Es wurden verschiedene d für die Dimension verwendet. Dabei hat sich herauskristallisiert,
dass bei kleinen d beide Algorithmen praktisch gleich schnell sind, hingegen bei grösseren d,
die Vektoriteration deutlich schneller ist.
Jedoch muss man eingestehen, dass bei der Methode des charakteristischen Polynoms alle
Eigenwerte ausgerechnet wurden.
1.2.4 Gesamtbeurteilung der Vektoriteration
Somit hat die Vektoriteration gegenüber der Methode des charakteristischen Polynoms
folgende Vorteile:
- Liefert beliebig genaue Resultate
- Geringe Fehleranfälligkeit, keine komplexen Zahlen
- Hohe Effizienz
- Es wird nur das berechnet, was man wirklich braucht.
Eine Schwachstelle des Algorithmus ist, wenn der zufällige Vektor gerade ein Eigenvektor
der Matrix ist. Dies ist aber unwahrscheinlich und deshalb nicht weiter störend.
Da es aber auch vielfach Fälle gibt, wo man alle Eigenvektoren und alle Eigenwerte einer
Matrix ausrechnen will, braucht man noch einen zweiten Algorithmus.
2.
QR Algorithmus
2.1 Ziel QR-Algorithmus:
Finden alle Eigenwerte und Eigenvektoren ( auch Komplexe) einer allgemeinen reellen n x nMatrix.
2.1.2 Vorwissen aus QR-Zerlegung:
Zu jeder m x n-Matrix A, mit m > n, existiert eine orthogonale m x m-Matrix Q, so dass gilt:
A = QR mit R = ( R0/ 0)
Wobei R0 eine n x n-Rechtsdreiecksmatrix ist und 0 die (m-n) x n-Nullmatrix.
Dimitri Kokkinis, Martin Kubli
Samuele Laffranchini, Maya Matthias
6
NUMERISCHE BEHANDLUNG DES EWP
16.05.07
2.1.3 Theorie:
Zwei quadratischen Matrizen A und B werden ähnlich genannt, falls es eine reguläre n x nMatrix T gibt, so dass:
B = T-1AT
In diesen Fall, haben A und B die gleiche Eigenwerte, nämlich, wenn λ Eigenwerte von A ist,
und wenn x seine Eigenvektor ist, es gilt:
BT-1x = T-1Ax = λ T-1x
Beweis:
Ist λ Eigenwert von A und x seine Eigenvektor, es gilt
Ax1 = λx1
Wir müssen beweisen, dass es gilt:
B x2 = λx2
x1 ≠ x2
Wir wissen auch dass es gilt: B = T-1AT
Wir können probieren, diese Gleichung zu benutzen, aber es folgt:
T-1AT x = λ x !!!!! Diese ist falsch!!! Das T zwischen A und x muss verschwinden!
Um diese T zu eliminieren, können wir B multiplizieren nach T-1.
B T-1 = T-1AT T-1 = T-1AI = T-1A
Jetzt können wir T-1A benutzen:
T-1Ax = λ T-1x = BT-1x
Wir sehen, dass die Eigenwert von A und B ist gleich, aber die Eigenvektoren sind
verschiedene:
Eigenvektor von A = x= x1
Eigenvektor von B = T-1x = x2
Also λ ist auch Eigenwerte von B und seine Eigenvektor ist T-1x.
Die Methoden, die sie gleichzeitig alle Eigenwerte von einer Matrix zu aproximieren
erlauben, sind generell auf die Idee begründet sich die Anfangsmatrix in eine ähnliche
Dreiecksmatrix zu verwandeln. Davon entsteht, dass die Eigenwerte von die Diagonalelement
dargestellt werden.
Die QR-Algorithmus ist das mehr benutzte Methode, um die Eigenwerte zu berechnen, auch,
weil das wirksamste ist.
Dimitri Kokkinis, Martin Kubli
Samuele Laffranchini, Maya Matthias
7
NUMERISCHE BEHANDLUNG DES EWP
16.05.07
2.1.4 QR-Algorithmus:
Zerlege: A1 = Q1R1
Bilde A2 = R1Q1 [ = Q1TAQ1]
Dieser zwei Schritte sind die Basis des QR-Algorithmus, findet einmal A1, es muss dem
gleichen Verfahren folgen, um A3 A4,… An zu finden.
Je höher n wird, desto genauer sind die gefundene Eigenwerte.
In allgemein für das QR-Algorithmus gilt:
Ak = QkRk
und
Ak+1 = RkQk
Von diese zwei Beziehungen folgt, dass:
Rk = Qk-1Ak
Ak+1 = Qk-1AkQk =QkTAkQk
Also die Matrizen der Folge {Ak} sind alle ähnliche, und also haben die gleiche Eigenvektor.
Die Matrix Ak für k ∞ konvergiert zu eine Dreiecksmatrix.
2.1.5 Die Eigenvektoren:
Um die Eigenvektor x(j) der Matrix A zu finden, muss man die folgende Gleichung zu lösen:
x(j) = Q y(j)
Wobei y(j) ist die Eigenvektor der Matrix Ak (und es ist einfach zu berechnen!) und Q =
Q1*Q2*…..*Qk ist die Produkt aller orthogonale Matrizen Qi, die wir benutzen haben, um das
QR-Algorithmus zu führen.
2.1.6 Einfach Beispiel: (mit MATLAB durchgeführt)
Bestimmen alle Eigenwerte dieser Matrix mit das QR-Algorithmus:
A1 = [ 3 4 ; 4 1]
Zerlegung von A1:
A1 = Q1R1 = [ -0.6000 -0.8000 ; -0.8000 -0.6000] * [ -5.0000 -3.2000 ; 0 -2.6000]
Bildung von A2:
A2 = R1Q1 = [5.5600 2.0800 ; 2.0800 -1.5600]
Zerlegung von A2:
A2 = Q2R2 =[-0.9366 -0.3504 ; -0.3504
Dimitri Kokkinis, Martin Kubli
Samuele Laffranchini, Maya Matthias
0.9366] * [-5.9363 -1.4015 ; 0 -2.1899]
8
NUMERISCHE BEHANDLUNG DES EWP
Bildung von A3:
A3=R2Q2= [6.0511
0.7673 ; 0.7673 -2.0511]
Zerlegung von A3:
A3=Q3R3= [-0.9921 -0.1258 ; -0.1258
Bildung von A4:
A4= R3Q3= [6.1144
16.05.07
0.9921] *[-6.0996 -0.5032 ; 0 -2.1313]
0.2681 ; 0.2681 -2.1144]
….
….
Bildung von A7:
A7= R6Q6 = [6.1231
0.0112 ; 0.0112 -2.1231]
Jetzt können wir stoppen, weil wir eine hinlänglich Genauigkeit erreichen haben.
Die gefundene Eigenwerte sind deshalb 6.1231 und -2.1231.
Wenn wir mit der Methode der Determinante die Eigenwerte berechnen, erhalten wir die
gleiche Resultat.
Berechnen nun die Eigenvektoren:
Q = [0.7891 -0.6143 ; 0.9295 -0.3688]
y(1) = [ 0.0014 ; -1]
y(2)= [ -1 ; -0.0014]
Benutzen wir jetzt die Formel x(j) = Q y(j) :
x(1) = [ 0.6154 ; 0.3701]
x(2) = [ -0.7882 ; -0.9290]
Dimitri Kokkinis, Martin Kubli
Samuele Laffranchini, Maya Matthias
9
NUMERISCHE BEHANDLUNG DES EWP
16.05.07
2.2 Beispiele zum QR-Algorithmus [mit Matlab]
2.2.1 Einfache 2x2-Matrix
A = [1 2;2 1]
A=
1
2
2
1
Kontrolle
eig(A)
ans =
-1
3
Eigenwerte: -1 und 3
Dimitri Kokkinis, Martin Kubli
Samuele Laffranchini, Maya Matthias
10
NUMERISCHE BEHANDLUNG DES EWP
16.05.07
2.2.1.1 Schrittweise Berechnung
[Q R] = qr(A)
Q=
-0.4472 -0.8944
-0.8944 0.4472
R=
-2.2361 -1.7889
0 -1.3416
A= Q*R
A=
1.0000 2.0000
2.0000 1.0000
A1= R*Q
A1 =
2.6000 1.2000
1.2000 -0.6000
[Q1 R1]= qr(A1)
Q1 =
-0.9080 -0.4191
-0.4191 0.9080
R1 = -2.8636 -0.8381
0 -1.0476
A2= R1*Q1
A2 =
2.9512 0.4390
0.4390 -0.9512
A3=R2*Q2
A3 = 2.9945 0.1479
0.1479 -0.9945
[Q3 R3]= qr(A3)
Q3 = -0.9988 -0.0493
-0.0493 0.9988
R3 =
-2.9982 -0.0987
0
-1.0006
A4=R3*Q3
A4 = 2.9994 0.0494
0.0494 -0.9994
usw.
[Q2 R2]=qr(A2)
Q2 =
-0.9891 -0.1471
-0.1471 0.9891
R2 = -2.9837 -0.2943
0 -1.0055
Dimitri Kokkinis, Martin Kubli
Samuele Laffranchini, Maya Matthias
11
NUMERISCHE BEHANDLUNG DES EWP
16.05.07
2.2.1.2 Direkte Berechnung mit Matlab
A = [1 2;2 1]
Matrix
A=
1
2
2
1
Genauigkeit oder Toleranz
tol=1.e-5;
Maximaler Lauf
maxn=100;
Titel
fprintf('QR Algorithmus\n')
QR Algorithmus
for i=1:maxn
[Q R] = qr(A);
A= Q'*A*Q;
Abbruchbedingung
if (abs(A(2,1))<tol)
Eigenwerte von A
ev= diag(A);
break
end
end
i=
12
Dimitri Kokkinis, Martin Kubli
Samuele Laffranchini, Maya Matthias
ev =
3.0000
-1.0000
12
NUMERISCHE BEHANDLUNG DES EWP
16.05.07
2.2.2 Beliebige 5x5 Matrix
tol= 1.e-5;
maxn=700;
Beliebige 5x5-Matrix
B= randn(5,5);
Symmetrische Matrix
B=B'*B
Matrix
B =
4.8707
0.3102
-2.5578
0.3060
-2.2967
0.3102
1.5799
-1.2100
-0.9150
-0.0056
-2.5578
-1.2100
4.9952
0.6148
-0.4092
0.3060
-0.9150
0.6148
2.1305
-0.9062
-2.2967
-0.0056
-0.4092
-0.9062
2.7951
Titel
fprintf('QR Algorithmus\n')
QR Algorithmus
for i=1:maxn
[Q R]=qr(B);
B=Q'*B*Q;
if (abs(B(2,1))<tol)
Dimitri Kokkinis, Martin Kubli
Samuele Laffranchini, Maya Matthias
13
NUMERISCHE BEHANDLUNG DES EWP
16.05.07
Eigenwerte von B
ev=diag(B);
break
end
end
Kontrolle
i=
26
eig(B)
ev =
8.0322
5.0220
1.9916
1.0449
0.2808
Dimitri Kokkinis, Martin Kubli
Samuele Laffranchini, Maya Matthias
ans =
8.0322
5.0220
1.9916
1.0449
0.2808
14
NUMERISCHE BEHANDLUNG DES EWP
3.
16.05.07
Anhang
3.1
Matlab Ausgabe einer Vektoriteration
Ein Beispiel einer Vektoriteration mit Matlab
d=
4
Gewählte Dimension
A=
80 -5 -52 -51
-5 9 -4 13
-52 -4 66 36
-51 13 36 50
Zufällige symmetrische Matrix
x0 =
0
1
-1
-1
Zufälliger Startvektor
x=
-0.1389
0.8159
0.2159
-0.5181
Erste Iteration
x=
-0.1264
0.8170
0.2312
-0.5129
Zweite Iteration
x=
-0.1259
0.8171
0.2316
-0.5126
Dritte Iteration
x=
-0.1259
0.8172
0.2316
-0.5126
Vierte Iteration
x=
-0.1259
0.8172
0.2316
-0.5126
Fünfte Iteration
Anzahl von Schritten 5
Eigenwert ist 0.481955
Eigenwert (Lösung)
x=
-0.1259
0.8172
0.2316
-0.5126
Eigenvektor (Lösung)
Dimitri Kokkinis, Martin Kubli
Samuele Laffranchini, Maya Matthias
15
NUMERISCHE BEHANDLUNG DES EWP
16.05.07
3.2
Programm: Algorithmen-Vergleich
Dieses Programm vergleicht die Laufdauer der beiden Methoden.
% Parameter festlegen
tol = 1.e-6;
maxn = 100;
d = 4;
% Matrix wird erstellt
A = randn(d,d);
A = A'*A;
A = round(10*A)
% Eigenwerte ausrechnen
fprintf('Genaue Eigenwerte\n')
[EV EW] = eig(A);
ev = diag(EW)
% Toleranz
% Maximale Anzahl Schleifen
% Dimension
% Erstellt eine beliebige Matrix
% Wird symmetrisch gemacht
% Kontrollrechnung
% Gibt die Ews aus
% Errechnet die EW mit dem charakteristischem Polynom
fprintf('Löst mit der Methode des charakteristischen Polynoms\n')
tic
% Startet Zeitmessung
syms lambda
p = det(A-lambda*eye(d));
% Das charakteristische Polynom
ev = solve(p);
% Findet Nullstellen
ev = eval(ev)
% Gibt die Ews aus
toc
% Stoppt Zeitmessung
% Vektoriteration
fprintf('Löst mit der Methode der Vektoriteration\n')
tic
y0 = randn(d,1);
y0 = y0/norm(y0);
for i=1:maxn
y = A\y0;
n = norm(y);
y = y/n;
if (abs(y-y0)< tol)
ev = 1/n;
break;
else
y0 = y;
end
end
ev
toc
% Startet Zeitmessung
% Zufälliger Startvektor
% Normiert
% Nächster Vektor
% Normiert
% Prüft das Stoppkriterium
% Stoppt
% Neue Itineration
% Gibt den EW aus
% Stoppt Zeitmessung
return
Dimitri Kokkinis, Martin Kubli
Samuele Laffranchini, Maya Matthias
16
Herunterladen