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