This is documentation for Mathematica 4, which was
based on an earlier version of the Wolfram Language.
View current documentation (Version 11.1)

 Documentation /  Mathematica /  Das Mathematica Buch /  Höhere Mathematik in Mathematica /  Lineare Algebra /

Eigenwerte und EigenvektorenFortgeschrittenes Thema: Tensoren

3.7.10 Fortgeschrittenes Thema: Zerlegungen von Matrizen

Singulärwert-Zerlegung und Pseudoinverse

Die Singulärwert-Zerlegung ist ein wichtiger Bestandteil vieler numerischer Matrix-Algorithmen. Die Grundidee dabei ist, eine beliebige Matrix in der Form zu schreiben, wobei eine Diagonalmatrix ist, und zeilen-orthonormale Matrizen sind, und die Hermite-Transponierte von u ist.

Die Funktion SingularValues[m] gibt eine Liste zurück, die die Matrix , die Liste der Diagonalelemente von und die Matrix enthält.

Die Diagonalelemente von heißen Singulärwerte der Matrix . Eine Interpretation der Singulärwerte lautet folgendermaßen: Wenn Sie von einer Einheitskugel im -dimensionalen Raum ausgehen und jeden darin enthaltenen Vektor mit einer -Matrix multiplizieren, so werden Sie ein Ellipsoid im -dimensionalen Raum erhalten. Die Singulärwerte liefern die Längen der Hauptachsen des Ellipsoids. Ist die Matrix irgendwie singulär, wird dies in der Gestalt des Ellipsoids reflektiert. Tatsächlich ergibt das Verhältnis des größten zum kleinsten Singulärwert einer Matrix eine Konditionszahl einer Matrix, die beispielsweise die Genauigkeit der numerischen Inversen einer Matrix bestimmt.

Im allgemeinen sind sehr kleine Singulärwerte numerisch bedeutungslos. SingularValues entfernt alle Singulärwerte, die kleiner als eine bestimmte Toleranz multipliziert mit dem größten Singulärwert sind. Die Option Tolerance spezifiziert die zu benutzende Toleranz.

Hier ist die Singulärwert-Zerlegung für eine nicht-singuläre -Matrix.

In[1]:= SingularValues[N[{{1, 3}, {-4, 3}}]]

Out[1]=

Auf diese Weise lassen sich Teile des Ergebnisses herausgreifen.

In[2]:= {u, md, v} = %

Out[2]=

Dies liefert eine Matrix, die ungefähr gleich der ursprünglichen Matrix ist.

In[3]:= Transpose[u] . DiagonalMatrix[md] . v

Out[3]=

Hier ist die Singulärwert-Zerlegung einer singulären Matrix. Nur ein Singulärwert wird angegeben.

In[4]:= SingularValues[N[{{1, 2}, {1, 2}}]]

Out[4]=

Die übliche Definition für die Inverse einer Matrix versagt, wenn die Matrix nicht quadratisch ist. Mit Hilfe der Singulärwert-Zerlegung läßt sich eine Pseudoinverse sogar für nicht-quadratische Matrizen und singuläre quadratische Matrizen definieren. Die Pseudoinverse wird mit den Objekten , und als definiert. Die Pseudoinverse hat die Eigenschaft, daß sie die Summe der Quadrate aller Matrixelemente in , wobei eine Einheitsmatrix ist, minimiert. Die so gefundene Pseudoinverse ist beispielsweise wichtig für die Ausführung von Anpassungen an numerische Daten. Manchmal ist die Pseudoinverse auch als verallgemeinerte Inverse oder als Moore-Penrose-Inverse bekannt.

Andere Matrix-Zerlegungen

Die Singulärwert-Zerlegung schreibt eine beliebige Matrix als ein Produkt einer Diagonalmatrix mit zeilen- und spalten-orthonormalen Matrizen. Bei einigen Algorithmen ist es auch wichtig, daß man Matrizen in ein Produkt mit Dreiecksmatrizen zerlegen kann.

Bei der QR-Zerlegung wird jede Matrix als Produkt geschrieben, wobei eine orthonormale Matrix ist, die Hermitesche Konjugation bezeichnet und eine Dreiecksmatrix ist, in der alle Elemente unterhalb der Hauptdiagonalen Null sind. Die Funktion QRDecomposition[m] liefert eine Liste mit den Matrizen und . Die QR-Zerlegung wird oft zur Lösung von Problemen der Kurvenanpassung nach der Methode der kleinsten Quadrate benutzt und ist in der Regel schneller als die Singulärwert-Zerlegung.

Dies berechnet die QR-Zerlegung einer -Matrix und extrahiert dann die Matrizen und .

In[5]:= {q, r} = QRDecomposition[ N[{{1, 5}, {-7, 3}}] ]

Out[5]=

Da orthogonal ist, liefert dies die Einheitsmatrix.

In[6]:= Transpose[q] . q // Chop

Out[6]=

Dies ergibt die ursprüngliche Matrix.

In[7]:= Transpose[q] . r

Out[7]=

Die Schursche Zerlegung schreibt jede Matrix in der Form , wobei eine orthogonale Matrix und eine obere Quasidreiecksmatrix (halbzerfallende Matrix) ist. Die Funktion SchurDecomposition[m] gibt eine Liste mit den Matrizen und zurück. Die Schursche Zerlegung wird oft bei der Evaluierung von Matrix-Funktionen eingesetzt.

Die Stabilität numerischer Matrix-Algorithmen wird manchmal durch „Pivotisierung" oder „Austauschung" verbessert, wenn man vor der Ausführung der QR- oder Schurschen Zerlegung die Zeilen und Spalten der Matrix permutiert und eventuell skaliert. Durch Einstellung der Option Pivoting -> True wird Mathematica angewiesen, derartige Pivotisierungen oder Austauschungen vorzunehmen und die erforderliche Matrix als das letzte Element der zurückgegebenen Liste anzugeben.

Jordan-Zerlegung schreibt jede quadratische Matrix in der Form . Die Matrix ist zumeist nur eine Diagonalmatrix der Eigenwerte, sie kann im allgemeinen aber auch Einsen oberhalb der Diagonalen haben. Die Funktion JordanDecomposition[m] liefert eine Liste, die die Matrizen und enthält. Jordan-Zerlegung wird häufig bei der Evaluierung von Funktionen exakter Matrizen eingesetzt.

LU-Zerlegung eignet sich gut zur Vorverarbeitung von Matrizen, die wiederholt in linearen Gleichungssystemen auftauchen, siehe dazu auch Abschnitt 3.7.8.

Eigenwerte und EigenvektorenFortgeschrittenes Thema: Tensoren