MATLAB-Eigenwerte und Eigenvektoren
In diesem Tutorial wird das Finden der Eigenwerte und Eigenvektoren einer gegebenen Matrix mit der Funktion eig()
in MATLAB erläutert.
Finden von Eigenwerte und Eigenvektoren mit der Funktion eig()
in MATLAB
Matlab bietet eine eingebaute Funktion eig()
, um die Eigenwerte und Eigenvektoren einer gegebenen Matrix zu finden. Die Matrix sollte eine quadratische Matrix sein. Andernfalls zeigt Matlab einen Fehler an; die Syntax: E = eig(mat)
liefert einen Spaltenvektor, der die Eigenwerte der Matrix mat enthält. Lassen Sie uns zum Beispiel eine Zufallsmatrix erstellen und ihre Eigenwerte mit der Funktion eig()
ermitteln. Siehe den Code unten.
mat = [1 3; 4 2]
E = eig(mat)
Ausgabe:
mat =
1 3
4 2
E =
-2
5
Die Syntax: [EV, DV] = eig(mat)
gibt eine Matrix EV zurück, deren Spalten die rechten Eigenvektoren und die Diagonalmatrix DV der Eigenwerte der gegebenen Matrix mat sind. Lassen Sie uns zum Beispiel die Eigenwerte und Eigenvektoren der obigen Matrix finden. Siehe den Code unten.
mat = [1 3; 4 2]
[EV,DV] = eig(mat)
Ausgabe:
mat =
1 3
4 2
EV =
-0.7071 -0.6000
0.7071 -0.8000
DV =
-2 0
0 5
Sie können das Ergebnis auch anhand der Beziehung verifizieren: mat x EV - EV x DV = 0. Das Ergebnis der linken Seite der Gleichung sollte nahe Null, aber nicht genau Null sein, da eig()
die Zerlegung mit Hilfe von Fließkommaberechnungen durchführt. Wie Sie sehen, enthält die Variable DV die sortierten Eigenwerte an den Diagonaleinträgen. In vielen Fällen sind sie jedoch unsortiert. Um diese Werte zu sortieren, können wir die Funktion diag()
verwenden, um die diagonalen Einträge zu extrahieren, und mit der Funktion sort()
können wir die Werte sortieren. Lassen Sie uns zum Beispiel mit der Funktion magic()
eine weitere Matrix erstellen und deren sortierte Werte finden. Siehe den Code unten.
mat = magic(3)
[EV,DV] = eig(mat)
[SV, indi] = sort(diag(DV))
Ausgabe:
mat =
8 1 6
3 5 7
4 9 2
EV =
-0.5774 -0.8131 -0.3416
-0.5774 0.4714 -0.4714
-0.5774 0.3416 0.8131
DV =
15.0000 0 0
0 4.8990 0
0 0 -4.8990
SV =
-4.8990
4.8990
15.0000
indi =
3
2
1
Die Eigenwerte innerhalb der Matrix DV sind unsortiert, aber die Funktion diag()
und sort()
sortiert die Werte nun in der Variablen SV. Die Funktion sort()
lieferte auch die Indizes der Eigenwerte. Wir können die Indizes verwenden, um die sortierten Eigenwerte wieder in die Matrix DV einzufügen. Jetzt können wir die sortierte DV- und EV-Matrix anhand der Indizes und des SV-Vektors finden. Siehe den Code unten.
mat = magic(3);
[EV,DV] = eig(mat);
[SV, indi] = sort(diag(DV));
DVs = DV(indi,indi)
SVs = EV(:,indi)
Ausgabe:
DVs =
-4.8990 0 0
0 4.8990 0
0 0 15.0000
SVs =
-0.3416 -0.8131 -0.5774
-0.4714 0.4714 -0.5774
0.8131 0.3416 -0.5774
Wie Sie können, enthält die Diagonalmatrix DVs jetzt sortierte Eigenwerte. Mit obiger Relation können Sie das Ergebnis auch bestätigen: mat x SVs - SVs x DVs = 0
. Die Syntax: [EV, DV, WV] = eig(mat)
gibt die rechten Eigenvektoren EV, Eigenwerte DV und die linken Eigenvektoren WV zurück. Lassen Sie uns zum Beispiel die rechten Eigenvektoren, Eigenwerte und linken Eigenvektoren der obigen Matrixmatte finden. Siehe den Code unten.
mat = magic(3)
[EV,DV,WV] = eig(mat)
Ausgabe:
EV =
-0.5774 -0.8131 -0.3416
-0.5774 0.4714 -0.4714
-0.5774 0.3416 0.8131
DV =
15.0000 0 0
0 4.8990 0
0 0 -4.8990
WV =
-0.5774 -0.7416 -0.0749
-0.5774 0.6667 -0.6667
-0.5774 0.0749 0.7416
Wir können auch die Funktion eig()
verwenden, um die verallgemeinerten Eigenwerte und rechten Eigenvektoren von zwei Matrizen zu finden. Die Syntax: [EV,DV] = eig(mat1, mat2)
, liefert die verallgemeinerten Eigenwerte und rechten Eigenvektoren des Paares (mat1, mat2). Lassen Sie uns zum Beispiel zwei Matrizen erstellen und ihre verallgemeinerten Eigenwerte und rechten Eigenvektoren mit der Funktion eig()
ermitteln. Siehe den Code unten.
mat1 = magic(2)
mat2 = [1 2; 2 1]
[EV,DV] = eig(mat1,mat2)
Ausgabe:
mat1 =
1 3
4 2
mat2 =
1 2
2 1
EV =
1.0000 -0.5000
-1.0000 1.0000
DV =
2.0000 0
0 1.6667
Wir können das Ergebnis anhand der Beziehung verifizieren: mat1 x EV - mat2 x EV x DV = 0. Die linke Seite der Gleichung wird nahe Null sein.