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 /

Matrix-GrundoperationenEigenwerte und Eigenvektoren

3.7.8 Lösen linearer Systeme

In vielen Berechnungen bedarf es der Lösung linearer Gleichungssysteme. Häufig wird es zweckmäßig sein, die Gleichungen explizit aufzuschreiben und dann mit Solve zu lösen.

In einigen Fällen wird man es jedoch möglicherweise vorziehen, das System der linearen Gleichungen in eine Matrix-Gleichung umzuwandeln, um dann Matrixmanipulations-Operationen zum Lösen dieser Gleichung einzusetzen. Dieses Vorgehen ist oft nützlich, wenn das Gleichungssystem als Teil eines allgemeinen Algorithmus erscheint, und man nicht bereits vorher weiß, wieviele Variablen enthalten sein werden.

Ein System linearer Gleichungen kann in Matrixform als formuliert werden, wobei der Vektor der Variablen ist.

Zu beachten ist: Wenn das Gleichungssystem schwach besetzt ist, also die meisten Elemente in der Matrix Null sind, dann wird es normalerweise sehr viel effizienter sein, mit Solve direkt mit den ursprünglichen Gleichungen zu arbeiten, ohne diese jemals in Matrixform zu wandeln.

Funktionen zum Lösen linearer Systeme

Hier ist eine -Matrix.

In[1]:= m = {{1, 5}, {2, 1}}

Out[1]=

Dies ergibt zwei lineare Gleichungen.

In[2]:= m . {x, y} == {a, b}

Out[2]=

Sie können diese Gleichungen mit Solve direkt lösen.

In[3]:= Solve[%,{x, y} ]

Out[3]=

Sie können den Lösungsvektor auch durch Aufruf von LinearSolve erhalten. Das Resultat ist gleichwertig zu dem, was Sie mit Solve erhalten.

In[4]:= LinearSolve[m,{a, b}]

Out[4]=

Eine andere Möglichkeit der Lösung von Gleichungen besteht darin, die Matrix m zu invertieren und dann {a, b} mit der Inversen zu multiplizieren. Der Einsatz von LinearSolve ist jedoch effizienter.

In[5]:= Inverse[m] . {a, b}

Out[5]=

RowReduce führt eine Version der Gaußschen Elimination durch und kann auch zum Lösen von Gleichungen verwendet werden.

In[6]:= RowReduce[{{1, 5, a}, {2, 1, b}}]

Out[6]=

Für eine quadratische Matrix , deren Determinante ungleich Null ist, kann stets eine eindeutige Lösung der Matrix-Gleichung für jedes gefunden werden. Wenn die Determinante der Matrix jedoch Null ist, dann gibt es entweder keinen Vektor oder unendlich viele Vektoren , die für ein bestimmtes erfüllen. Das kommt vor, wenn die Zeilen in nicht unabhängig sind.

Wenn die Determinante Null hat, ist es trotzdem immer möglich, Vektoren ungleich Null zu finden, die erfüllen. Die Menge der Vektoren , die diese Gleichung erfüllen, bildet den Nullraum oder den Kern der Matrix . Jeder dieser Vektoren kann als Linearkombination eines bestimmten Satzes von Basisvektoren ausgedrückt werden, welche man durch NullSpace[m] erhalten kann.

Hier ist eine einfache Matrix, die zwei identischen linearen Gleichungen entspricht.

In[7]:= m = {{1, 2}, {1, 2}}

Out[7]=

Die Determinante der Matrix ist Null.

In[8]:= Det[ m ]

Out[8]=

LinearSolve kann in diesem Fall keine Lösung der Gleichung finden.

In[9]:= LinearSolve[m, {a, b}]

Out[9]=

Es gibt einen einzigen Basisvektor für den Nullraum von m.

In[10]:= NullSpace[ m ]

Out[10]=

Die Multiplikation des Basisvektors des Nullraums mit m ergibt den Nullvektor.

In[11]:= m . %[[1]]

Out[11]=

Hier ist eine einfache symbolische Matrix mit der Determinante Null.

In[12]:= m = {{a, b, c}, {2 a, 2 b, 2 c}, {3 a, 3 b, 3 c}}

Out[12]=

Die Basis des Nullraums von m enthält zwei Vektoren. Das Produkt jeder Linearkombination dieser Vektoren mit m ergibt Null.

In[13]:= NullSpace[ m ]

Out[13]=

Eine wichtige Eigenschaft von LinearSolve und NullSpace ist, daß sie sowohl mit rechteckigen als auch mit quadratischen Matrizen arbeiten.

Wird ein System linearer Gleichungen durch eine Matrix-Gleichung der Form dargestellt, so liefert die Spaltenanzahl in die Anzahl der Variablen und die Zeilenanzahl ergibt die Anzahl der Gleichungen. Es treten verschiedene Fälle auf.

Klassen von linearen Systemen, die durch rechteckige Matrizen dargestellt werden

Hier wird nach der Lösung des inkonsistenten Satzes der Gleichungen und gefragt.

In[14]:= LinearSolve[{{1}, {1}}, {1, 0}]

Out[14]=

Diese Matrix repräsentiert zwei Gleichungen für drei Variablen.

In[15]:= m = {{1, 3, 4}, {2, 1, 3}}

Out[15]=

LinearSolve liefert eine der möglichen Lösungen für diesen unterbestimmten Satz Gleichungen.

In[16]:= v = LinearSolve[m, {1, 1}]

Out[16]=

Wenn eine Matrix ein unterbestimmtes Gleichungssystem repräsentiert, hat die Matrix einen nicht-trivialen Nullraum. In diesem Fall wird der Nullraum durch einen einfachen Vektor aufgespannt.

In[17]:= NullSpace[m]

Out[17]=

Wenn Sie zu der Lösung, die Sie von LinearSolve erhalten, eine beliebige Linearkombination der Basisvektoren des Nullraumes addieren, erhalten Sie wieder eine Lösung.

In[18]:= m . (v + 4 %[[1]])

Out[18]=

Die Anzahl redundanter Gleichungen einer bestimmten Matrix läßt sich durch Evaluierung von Length[NullSpace[m]] bestimmen. Nach Subtraktion dieser Größe von der Spaltenanzahl in m ergibt sich der Rang der Matrix m.

Effiziente wiederholte Lösung linearer Systeme

Bei einer großen Anzahl zu lösender numerischer Matrix-Gleichungen der Form , alle mit derselben Matrix , kann häufig auf folgende Weise Zeit gespart werden: Zuerst wird mit LUDecomposition[m] vorverarbeitet und dann wird mit den dabei erhaltenen Daten wiederholt für jedes LUBackSubstitution[daten, b] angewendet.

Matrix-GrundoperationenEigenwerte und Eigenvektoren