„Matrizenmultiplikation“ – Versionsunterschied
[gesichtete Version] | [gesichtete Version] |
Quartl (Diskussion | Beiträge) K →Beispiel: dunkleres grün |
Quartl (Diskussion | Beiträge) |
||
Zeile 235: | Zeile 235: | ||
:<math>O(n^{\log_2 7}) \approx O(n^{2{,}807})</math>. |
:<math>O(n^{\log_2 7}) \approx O(n^{2{,}807})</math>. |
||
Allerdings lohnt sich der Strassen-Algorithmus aufgrund der in der Notation versteckten Konstanten nur für sehr große Matrizen. Der Algorithmus mit der derzeit besten Komplexität ist eine Verbesserung des [[Coppersmith–Winograd-Algorithmus]] mit einer Laufzeit der näherungsweisen Ordnung<ref>{{Literatur|Autor=Virginia Vassilevska Williams|Titel=Multiplying matrices faster than coppersmith-winograd|Sammelwerk=STOC '12 Proceedings of the 44th symposium on Theory of Computing|Seiten= |
Allerdings lohnt sich der Strassen-Algorithmus aufgrund der in der Landau-Notation versteckten Konstanten nur für sehr große Matrizen.<ref>{{Literatur|Autor=Paolo D'Alberto, Alexandru Nicolau|Titel=Using recursion to boost ATLAS's performance|Sammelwerk=High-Performance Computing|Reihe=Lecture Notes in Computer Science|Band=Volume 4759|Verlag=Springer|Seiten=142–151|Jahr=2010|DOI=10.1007/978-3-540-77704-5_12}}</ref> Der Algorithmus mit der derzeit besten Komplexität ist eine Verbesserung des [[Coppersmith–Winograd-Algorithmus]] mit einer Laufzeit der näherungsweisen Ordnung<ref>{{Literatur|Autor=Virginia Vassilevska Williams|Titel=Multiplying matrices faster than coppersmith-winograd|Sammelwerk=STOC '12 Proceedings of the 44th symposium on Theory of Computing|Seiten=887–898|Verlag=ACM|Jahr=2012|DOI=10.1145/2213977.2214056}}</ref> |
||
:<math>O(n^{2{,}3727})</math>. |
:<math>O(n^{2{,}3727})</math>. |
||
Zeile 244: | Zeile 244: | ||
da jedes der <math>n^2</math> Elemente der Ausgabematrix erzeugt werden muss. Die Ermittlung optimaler unterer und oberer Komplexitätsschranken für die Matrizenmultiplikation ist Gegenstand aktueller Forschung. |
da jedes der <math>n^2</math> Elemente der Ausgabematrix erzeugt werden muss. Die Ermittlung optimaler unterer und oberer Komplexitätsschranken für die Matrizenmultiplikation ist Gegenstand aktueller Forschung. |
||
<references /> |
|||
== Verwendung == |
== Verwendung == |
Version vom 20. August 2013, 16:21 Uhr
Die Matrizenmultiplikation oder Matrixmultiplikation ist in der Mathematik eine wichtige Verknüpfung von Matrizen. Um zwei Matrizen miteinander multiplizieren zu können, muss die Spaltenzahl der ersten Matrix mit der Zeilenzahl der zweiten Matrix übereinstimmen. Das Ergebnis einer Matrizenmultiplikation wird dann Matrizenprodukt oder Matrixprodukt genannt. Das Matrizenprodukt ist wieder eine Matrix, deren Einträge durch komponentenweise Multiplikation und Summation der Einträge der entsprechenden Zeile der ersten Matrix mit der entsprechenden Spalte der zweiten Matrix ermittelt werden.
Die Matrizenmultiplikation ist assoziativ und mit der Matrizenaddition distributiv. Sie ist jedoch nicht kommutativ, das heißt die Reihenfolge der Matrizen darf bei der Produktbildung nicht vertauscht werden. Die Menge der quadratischen Matrizen mit Elementen aus einem Halbring bildet zusammen mit der Matrizenaddition und der Matrizenmultiplikation den Halbring der quadratischen Matrizen. Weiter bildet die Menge der regulären Matrizen über einem unitären Ring mit der Matrizenmultiplikation die allgemeine lineare Gruppe. Matrizen, die durch spezielle Multiplikationen mit regulären Matrizen ineinander überführt werden können, bilden darin Äquivalenzklassen.
Der Standardalgorithmus zur Multiplikation zweier quadratischer Matrizen weist eine kubische Laufzeit auf. Zwar lässt sich der asymptotische Aufwand mit Hilfe spezieller Algorithmen verringern, die Ermittlung optimaler oberer und unterer Komplexitätsschranken für die Matrizenmultiplikation ist jedoch noch Gegenstand aktueller Forschung.
Die Matrizenmultiplikation wird häufig in der linearen Algebra verwendet. So wird beispielsweise die Faktorisierung einer Matrix als Produkt von Matrizen mit speziellen Eigenschaften bei der numerischen Lösung linearer Gleichungssysteme oder Eigenwertprobleme eingesetzt. Weiterhin ist die Abbildungsmatrix der Hintereinanderausführung zweier linearer Abbildungen gerade das Matrizenprodukt der Abbildungsmatrizen dieser Abbildungen. Anwendungen der Matrizenmultiplikation finden sich unter anderem in der Computergrafik, der Optik, der Elektrotechnik und der Ökonomie.
Die Matrizenmultiplikation wurde erstmals von dem französischen Mathematiker Jacques Philippe Marie Binet im Jahr 1812 beschrieben.[1]
Definition
Die Matrizenmultiplikation ist eine binäre Verknüpfung auf der Menge der Matrizen über einem Halbring (oft der Körper der reellen Zahlen), also eine Abbildung
- ,
die zwei Matrizen und eine weitere Matrix zuordnet. Die Matrizenmultiplikation ist dabei nur für den Fall definiert, dass die Spaltenzahl der Matrix mit der Zeilenzahl der Matrix übereinstimmt. Die Zeilenzahl der Ergebnismatrix entspricht dann derjenigen der Matrix und ihre Spaltenzahl derjenigen der Matrix . Jeder Eintrag des Matrizenprodukts berechnet sich dabei über
- ,
also durch komponentenweise Multiplikation der Einträge der -ten Zeile von mit der -ten Spalte von und durch Summation über alle diese Produkte. Häufig wird bei der Notation einer Matrizenmultiplikation der Malpunkt weggelassen und man schreibt kurz statt .
Beispiel
Gegeben seien die beiden reellen Matrizen
- und .
Da die Matrix ebenso viele Spalten wie die Matrix Zeilen besitzt, ist die Matrizenmultiplikation durchführbar. Nachdem zwei Zeilen und zwei Spalten hat, wird das Matrizenprodukt ebenfalls zwei Zeilen und Spalten aufweisen. Um das erste Matrixelement der Ergebnismatrix zu berechnen, betrachtet man die erste Zeile von und die erste Spalte von . Nun multipliziert man die jeweils entsprechenden Einträge miteinander und summiert die Ergebnisse auf (die Sternchen stehen für noch nicht berechnete Elemente):
Für das nächste Matrixelement in der ersten Zeile und zweiten Spalte betrachtet man entsprechend die erste Zeile von und die zweite Spalte von :
Dieses Schema setzt man nun mit dem Matrixelement in der zweiten Zeile und ersten Spalte fort:
Schließlich langt man bei dem letzten Element in der zweiten Zeile und zweiten Spalte an:
Als Ergebnis erhält man am Ende das Matrizenprodukt . Eine alternative Möglichkeit zur Berechnung des Matrizenprodukts bietet das falksche Schema.
Spezialfälle
Zeilenvektor mal Spaltenvektor
Besteht die erste Matrix aus nur einer Zeile und die zweite Matrix aus nur einer Spalte, so ergibt das Matrizenprodukt eine -Matrix. Interpretiert man eine einzeilige Matrix als Zeilenvektor und eine einspaltige Matrix als Spaltenvektor , so erhält man im Fall reeller Vektoren das Standardskalarprodukt
zweier Vektoren, wobei den zu transponierten Vektor darstellt, beide Vektoren gleich lang sein müssen und das Ergebnis dann eine reelle Zahl ist. Jeder Eintrag eines reellen Matrizenprodukts kann somit als Skalarprodukt eines (Zeilen-)Vektors der Matrix mit einem (Spalten-)Vektor der Matrix angesehen werden.
Spaltenvektor mal Zeilenvektor
Besteht umgekehrt die erste Matrix aus nur einer Spalte der Länge und die zweite Matrix aus nur einer Zeile der Länge , so ergibt das Matrizenprodukt eine -Matrix. Interpretiert man wieder eine einspaltige Matrix als Spaltenvektor und eine einzeilige Matrix als Zeilenvektor , so nennt man das entstehende Produkt von Vektoren dyadisches Produkt
- .
Jeder Eintrag der resultierenden Matrix ist dabei das Produkt eines Elements des ersten Vektors mit einem Element des zweiten Vektors.
Matrix-Vektor-Produkt
Ein wichtiger Spezialfall einer Matrizenmultiplikation entsteht, wenn die zweite Matrix aus nur einer Spalte besteht. Das Ergebnis der Matrizenmultiplikation ist dann ebenfalls eine einspaltige Matrix. Interpretiert man einspaltige Matrizen wieder als Spaltenvektoren, so heißt das entstehende Produkt Matrix-Vektor-Produkt
- ,
wobei , und sind. Das Matrix-Vektor-Produkt wird beispielsweise in der Matrixschreibweise linearer Gleichungssysteme verwendet. Umgekehrt ergibt das Vektor-Matrix-Produkt aus einem Zeilenvektor und einer Matrix passender Größe wieder einen Zeilenvektor.
Quadrat einer Matrix
Wird eine quadratische Matrix mit sich selbst multipliziert erhält man wieder eine Matrix gleicher Größe, die als das Quadrat der Matrix bezeichnet wird, das heißt
- .
Entsprechend dazu wird mit die Matrixpotenz, also das -fache Produkt einer Matrix mit sich selbst, bezeichnet.
Blockmatrizen
Weisen die beiden Matrizen und eine Blockstrukturierung auf, wobei die Blockbreiten der ersten Matrix mit den Blockhöhen der zweiten Matrix übereinstimmen müssen, so lässt sich auch das Matrizenprodukt blockweise notieren. Im Fall von jeweils zwei mal zwei Blöcken erhält man beispielsweise
- .
Eigenschaften
Assoziativität
Die Matrizenmultiplikation ist assoziativ, das heißt für Matrizen , und gilt
Bei der Multiplikation mehrerer Matrizen ist es also unerheblich, in welcher Reihenfolge die Teilprodukte gebildet werden, solange die Gesamtreihung nicht verändert wird. Es gilt nämlich für einen Eintrag der so entstehenden Matrix
Die Matrizenmultiplikation ist auch verträglich mit der Multiplikation von Skalaren , das heißt
- .
Distributivität
Betrachtet man neben der Matrizenmultiplikation auch noch die komponentenweise Matrizenaddition zweier Matrizen , dann sind auch die Distributivgesetze erfüllt, das heißt für alle Matrizen gilt
- .
Entsprechend dazu gilt für alle Matrizen
- .
Die Distributivität folgt dabei direkt aus der Distributivität der Addition und Multiplikation im Halbring .
Nichtkommutativität
Die Matrizenmultiplikation ist jedoch nicht kommutativ, das heißt für und ist im Allgemeinen
- .
Für die beiden Matrizenprodukte gilt nämlich und , womit sie für schon von den Dimensionen her nicht übereinstimmen können. Aber selbst wenn und quadratisch sind müssen beiden Matrizenprodukte nicht gleich sein, wie das Gegenbeispiel
zeigt. Die Nichtkommutativität der Matrizenmultiplikation gilt demnach sogar wenn die Multiplikation im Halbring kommutativ sein sollte, wie es beispielsweise bei Zahlen der Fall ist.
Weitere Rechenregeln
Für die Transponierte eines Matrizenprodukts gilt
- .
Die Reihenfolge bei der Multiplikation wird durch die Transposition also vertauscht. Für die Adjungierte des Produkts komplexer Matrizen gilt entsprechend
- .
Die Spur des Produkts zweier Matrizen und ist hingegen unabhängig von der Reihenfolge:
- .
Gleiches gilt auch für die Determinante des Produkts zweier quadratischer Matrizen über einem kommutativen Ring:
- .
Die Determinante des Produkts zweier nicht notwendigerweise quadratischer Matrizen kann mit dem Satz von Binet-Cauchy berechnet werden.
Algebraische Strukturen
Halbring der quadratischen Matrizen
Die Menge der quadratischen Matrizen bildet zusammen mit der Matrizenaddition und der Matrizenmultiplikation einen nichtkommutativen Halbring . Das Nullelement dieses Halbrings ist die Nullmatrix . Wenn die Null in absorbierend ist, fungiert die Nullmatrix auch als absorbierendes Element, das heißt für alle Matrizen gilt
- .
Der Halbring der quadratischen Matrizen ist, wenn die Null in absorbierend ist, nicht nullteilerfrei, denn aus folgt nicht notwendigerweise oder .[2] Entsprechend darf bei Matrixgleichungen auch nicht gekürzt werden, denn aus folgt nicht notwendigerweise . Ist ein unitärer Ring, dann ist auch der zugehörige Matrizenring unitär, wobei das Einselement durch die Einheitsmatrix dargestellt wird. Für die Einheitsmatrix gilt damit für alle
- .
Gruppe der regulären Matrizen
Die Menge der regulären Matrizen über einen unitären Ring bildet mit der Matrizenmultiplikation die allgemeine lineare Gruppe . Die zur Matrix inverse Matrix ist dann eindeutig über
definiert. Für die Inverse des Produkts zweier regulärer Matrizen gilt dann
- .
Durch die Invertierung wird die Reihenfolge bei der Multiplikation demnach ebenfalls vertauscht.
Gruppen der orthogonalen und unitären Matrizen
Eine reelle quadratische Matrix heißt orthogonal, wenn
gilt. Die orthogonalen Matrizen bilden mit der Matrizenmultiplikation die orthogonale Gruppe , eine Untergruppe der allgemeinen linearen Gruppe . Entsprechend dazu heißt eine komplexe quadratische Matrix unitär, wenn
gilt. Die unitären Matrizen bilden mit der Matrizenmultiplikation die unitäre Gruppe , eine Untergruppe der allgemeinen linearen Gruppe .
Äquivalenzklassen von Matrizen
Mit Hilfe der Matrizenmultiplikation werden Äquivalenzrelationen zwischen Matrizen über einem Körper definiert. Wichtige Äquivalenzrelationen sind:
- Äquivalenz: Zwei Matrizen und heißen äquivalent, wenn es zwei reguläre Matrizen und gibt, sodass gilt.
- Ähnlichkeit: Zwei quadratische Matrizen und heißen ähnlich, wenn es eine reguläre Matrix gibt, sodass gilt.
- Kongruenz: Zwei quadratische Matrizen und heißen kongruent, wenn es eine reguläre Matrix gibt, sodass gilt.
Matrizen, die durch solche Multiplikationen mit regulären Matrizen ineinander überführt werden können, bilden demnach Äquivalenzklassen.
Algorithmen
Standardalgorithmus
In Pseudocode kann die Matrizenmultiplikation wie folgt implementiert werden:
function matmult(A,B,l,m,n)
C = zeroes(l,n) // Ergebnismatrix C mit Nullen initialisieren
for i = 1 to l // Schleife über die Zeilen von C
for k = 1 to n // Schleife über die Spalten von C
for j = 1 to m // Schleife über die Spalten von A / Zeilen von B
C(i,k) = C(i,k) + (A(i,j) * B(j,k)) // Bildung der Produktsumme
end
end
end
return C
Die Reihenfolge der drei For-Schleifen kann dabei beliebig vertauscht werden. Da die drei Schleifen unabhängig voneinander sind, ist die Anzahl der benötigten Operationen von der Ordnung
- .
Die Laufzeit des Algorithmus ist demnach für quadratische Matrizen kubisch, also von der Ordnung
- .
Bei der Matrix-Kettenmultiplikation, also der Multiplikation von drei oder mehr nichtquadratischen Matrizen, kann durch eine geschickte Wahl der Reihenfolge die Gesamtzahl arithmetischer Operationen minimiert werden.
Algorithmen mit besserer Komplexität
Asymptotisch effizienter lassen sich zwei Matrizen mit dem Strassen-Algorithmus multiplizieren. Hierbei wird die Anzahl der Multiplikationen, die zur Multiplikation zweier -Matrizen benötigt werden, durch geschicktes Zusammenfassen von acht auf sieben reduziert, was auf Kosten zusätzlicher Additionen geschieht. Wendet man dieses Verfahren rekursiv an, ergibt sich eine Komplexitätsordnung von
- .
Allerdings lohnt sich der Strassen-Algorithmus aufgrund der in der Landau-Notation versteckten Konstanten nur für sehr große Matrizen.[3] Der Algorithmus mit der derzeit besten Komplexität ist eine Verbesserung des Coppersmith–Winograd-Algorithmus mit einer Laufzeit der näherungsweisen Ordnung[4]
- .
Für den praktischen Einsatz ist dieser Algorithmus jedoch nicht geeignet. Eine untere Schranke für die Komplexität der Matrizenmultiplikation ist
- ,
da jedes der Elemente der Ausgabematrix erzeugt werden muss. Die Ermittlung optimaler unterer und oberer Komplexitätsschranken für die Matrizenmultiplikation ist Gegenstand aktueller Forschung.
- ↑ John J. O’Connor, Edmund F. Robertson: Jacques Philippe Marie Binet. In: MacTutor History of Mathematics archive (englisch).
- ↑ Ein Gegenbeispiel bilden zwei Matrizen mit je genau einem Eintrag ungleich null an der gleichen Außerdiagonalstelle.
- ↑ Paolo D'Alberto, Alexandru Nicolau: Using recursion to boost ATLAS's performance. In: High-Performance Computing (= Lecture Notes in Computer Science). Volume 4759. Springer, 2010, S. 142–151, doi:10.1007/978-3-540-77704-5_12.
- ↑ Virginia Vassilevska Williams: Multiplying matrices faster than coppersmith-winograd. In: STOC '12 Proceedings of the 44th symposium on Theory of Computing. ACM, 2012, S. 887–898, doi:10.1145/2213977.2214056.
Verwendung
Faktorisierungen
Auf gewisse Weise die Umkehrung der Matrizenmultiplikation ist die Faktorisierung einer gegebenen Matrix als Produkt zweier Matrizen und , das heißt die Ermittlung einer Darstellung der Form
- .
Eine solche Faktorisierung ist nicht eindeutig, daher werden an die Matrizen und zusätzliche Anforderungen gestellt, wie Orthogonalität, Symmetrie oder eine bestimmte Besetzungsstruktur. Wichtige Zerlegungen reeller oder komplexer Matrizen dieser Art sind:
- die LR-Zerlegung einer quadratischen Matrix in eine untere und eine obere Dreiecksmatrix
- die Cholesky-Zerlegung, eine spezielle LR-Zerlegung einer symmetrisch positiv definiten Matrix
- die ILU-Zerlegung, eine Art unvollständige LR-Zerlegung speziell für dünnbesetzte Matrizen
- die QR-Zerlegung einer Matrix in eine orthogonale Marix und eine obere Dreiecksmatrix
- die Schurzerlegung einer quadratischen Matrix in drei Matrizen: eine unitäre Matrix, eine obere Dreiecksmatrix und die Inverse der ersten Matrix
- die Singulärwertzerlegung einer Matrix in drei Matrizen: eine unitäre Matrix, eine Diagonalmatrix bestehend aus den Singulärwerten und die Adjungierte einer unitären Matrix
Solche Zerlegungen von Matrizen werden häufig in der numerischen linearen Algebra etwa zur Lösung linearer Gleichungssysteme oder Eigenwertprobleme eingesetzt. So lassen sich beispielsweise die Zeilen- und Spaltenumformungen im gaußschen Eliminationsverfahren als Produkt von Elementarmatrizen angeben.
Komposition linearer Abbildungen
Sind allgemein und zwei endlichdimensionale Vektorräume über dem gleichen Körper, dann kann jede lineare Abbildung nach Wahl je einer Basis in den beiden Vektorräumen über ihre Abbildungsmatrix dargestellt werden. Das Bild eines Vektors unter der Abbildung in den jeweiligen Basen kann dann über das Matrix-Vektor-Produkt
ermittelt werden. In der Geometrie lässt sich beispielsweise auf diese Weise jede Drehung um den Ursprung und jede Spiegelung an einer Ursprungsebene durch ein solches Matrix-Vektor-Produkt ausführen. Ist nun ein weiterer Vektorraum und eine weitere lineare Abbildung, dann gilt für die Abbildungsmatrix der Hintereinanderausführung dieser beiden Abbildungen
- .
Die Abbildungsmatrix einer Hintereinanderausführung zweier linearer Abbildungen ist also das Matrizenprodukt der beiden zugehörigen Abbildungsmatrizen. Auf diese Weise lässt sich beispielsweise jede Drehspiegelung als Produkt einer Drehmatrix und einer Spiegelungsmatrix darstellen.
Komposition differenzierbarer Funktionen
Sind und zwei differenzierbare Funktionen, so ist auch ihre Verkettung differenzierbar. Die Ableitung der Verkettung in einem Punkt ist nach der verallgemeinerten Kettenregel dann die Hintereinanderausführung der Ableitung von im Punkt und der Ableitung von im Punkt . Für die zugehörigen Jacobi-Matrizen gilt damit
- .
Die Jacobi-Matrix der Verkettung zweier differenzierbarer Funktionen ist also das Matrizenprodukt von Jacobi-Matrizen der beiden Funktionen.
Komposition von Relationen
Distributive Verbände, wie beispielsweise boolesche Algebren, sind Halbringe. Fasst man ihre Elemente als Wahrheitswerte auf, sind Matrizen über ihnen zweistellige Relationen. Die Matrizenmultiplikation entspricht in dem Fall der Komposition von Relationen.
Anwendungen
Anwendungen der Matrizenmultiplikation finden sich unter anderem:
- in der Computergrafik bei der Durchführung von Koordinatentransformationen in einer Grafikpipeline
- in der Optik bei der Berechnung von Lichtstrahlen durch optische Bauelemente mittels der Matrizenoptik
- in der Ökonomie bei der Input-Output-Analyse einer Produktion
- in der Elektrotechnik bei der Zweitortheorie elektrischer Netzwerke
Verwandte Produkte
Neben dem Matrizenprodukt existieren noch eine Reihe weiterer Produkte von Matrizen:
- Das Hadamard-Produkt ist für zwei Matrizen gleicher Größe definiert und ergibt wieder eine Matrix derselben Größe, deren Einträge einfach durch komponentenweise Multiplikation der Einträge der Ausgangsmatrizen entstehen. Im Vergleich zum Matrizenprodukt ist es allerdings weit weniger bedeutend.
- Das Kronecker-Produkt ist für beliebige Matrizen definiert und liefert als Resultat eine große Matrix, die durch Betrachtung aller möglichen Produkte von Einträgen der beiden Ausgangsmatrizen entsteht.
- Das Hilbert-Schmidt-Skalarprodukt ist für gleich große Matrizen über den reellen oder komplexzen Zahlen definiert und liefert als Resultat eine reelle oder komplexe Zahl. Das Hilbert-Schmidt-Skalarprodukt entsteht durch komponentenweise Multiplikation der Einträge der Ausgangsmatrizen und nachfolgende Summation über all diese Produkte. Im komplexen Fall wird dabei immer ein Element komplex konjugiert.
Literatur
- Michael Artin: Algebra. Springer, 1998, ISBN 3-7643-5938-2.
- Charles Leiserson, Ronald L. Rivest, Clifford Stein: Algorithmen – eine Einführung. Oldenbourg, 2010, ISBN 3-486-59002-2.
- Frank Hettlich, Christian Karpfinger, Ulrich Kockelkorn, Klaus Lichtenegger, Hellmuth Stachel: Mathematik. 2. Auflage. Spektrum Akademischer Verlag, 2011, ISBN 3-8274-2347-3.
Einzelnachweise und Anmerkungen
Weblinks
- Eric W. Weisstein: Matrix Multiplication. In: MathWorld (englisch).
- djao: Matrix operations. In: PlanetMath. (englisch)
- Matrixmultiplikation Online Rechner