Dies ist eine alte Version des Dokuments!


Inhaltsverzeichnis

Matrixmultiplikation

Theorie

Eine Matrix kann als Aneinanderreihung von Vektoren verstanden werden. Während ein Vektor nur eine Spalte (oder eine Zeile hat), ist eine Matrix zweidimensional und kann mehr als eine Zeile und eine Spalte besitzen. Beispiel für eine 3×3-Matrix (also drei Zeilen und drei Spalten, ergo 9 Zahlen):

1 2 1
4 9 6
5 3 8

Bei der Multiplikation von Matrizen ist es wichtig, ob man A*B oder B*A rechnet. Die Multiplikation ähnelt da eher dem von den Vektoren bekannten Kreuzprodukt, als der bekannten Multiplikation. Kurz: man rechnet Zeile mal Spalte. Will man zwei Matrizen multiplizieren, so gibt es folgende Einschränkungen:

  • Als Eingaben haben wir NxM und MxN Matrizen (die erste Matrix muss so viele Spalten (Zeilen) haben, wie die zweite Zeilen (Spalten).)
  • Es ergibt sich eine NxN-Matrix oder eine MxM-Matrix.

Ein Element der Ergebnismatrix C c[i][j] (wobei der erste Index für die Spalte, der Zweite für die Zeile steht) ergibt sich aus:

c_{ij} = sum { x = 0 } { m } { a_xj * b_{i x}  }

Das heißt, das Element c[1][1] ergibt sich aus der Multiplikation jedes Zahlenpaars von a[x][1]*b[1][x] und deren Summierung.

Aufgabe

Entwerfen Sie eine Funktion, die Matrizen multiplizieren kann. Es sollten beliebige Matrizen unterstützt werden (also nicht nur 3×3-Matrizen, sondern allgemeine NxM-Matrizen). Sie dürfen den Eingabewertebereich auf Integer-Werte festlegen.

Hinweis: Es empfiehlt sich zB. mittels Struct die Größe der Matrizen pro Matrix mitzuspeichern und der Funktion mit zu übergeben.