Was kosten zwei Gerichte?
Eine Matrix ist eine Tabelle von Zahlen mit Zeilen und Spalten. Wer Matrizen multiplizieren kann, rechnet viele Skalarprodukte auf einmal.
Eine Mensa kennt, wie viel von jeder Zutat in jedes Gericht geht, und den Preis jeder Zutat. Eine einzige Matrixrechnung liefert die Kosten aller Gerichte.
Am Ende dieser Lektion
Notiz
Ich kann eine Matrix mit einem Vektor und mit einer anderen Matrix multiplizieren.
Schlüsselwörter
| Begriff | Was er bedeutet | Beispiel |
|---|---|---|
| Matrix | eine Tabelle von Zahlen in Zeilen und Spalten | |
| Zeile | eine waagerechte Reihe einer Matrix | |
| Spalte | eine senkrechte Reihe einer Matrix | |
| Form | die Zahl der Zeilen mal die Zahl der Spalten | 2 mal 3 |
| Einheitsmatrix | eine Matrix, die jeden Vektor unverändert lässt |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Jede Zeile bildet ein Skalarprodukt mit dem Vektor
Eine Matrix hat Zeilen und Spalten. Um sie mit einem Vektor zu multiplizieren, nehmen Sie eine Zeile nach der anderen und bilden das Skalarprodukt mit dem Vektor.
Ergebnis ist ein Vektor mit einer Zahl je Zeile. Der Vektor muss so viele Komponenten haben, wie die Matrix Spalten hat.
Beispiel: Kosten zweier Gerichte in Cent
| Gericht | Tomaten, Käse, Brot | Rechnung | Kosten |
|---|---|---|---|
| Tomatensuppe | 3, 0, 1 | 3 mal 50 plus 0 mal 150 plus 1 mal 200 | 350 |
| Pizza | 2, 2, 1 | 2 mal 50 plus 2 mal 150 plus 1 mal 200 | 600 |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Matrix mal Vektor in Python
# Zeilen: Gerichte. Spalten: Tomaten, Käse, Brot (Stück je Gericht)
zutaten = [[3, 0, 1], [2, 2, 1]]
preise = [50, 150, 200] # Cent je Stück
kosten = []
for zeile in zutaten:
summe = 0
for n in range(3):
summe = summe + zeile[n] * preise[n]
kosten.append(summe)
print("Kosten in Cent:", kosten)
# Ändern Sie den Preis für Brot auf 100 und starten Sie erneut.
Dieselben Kosten mit NumPy
docker exec jupyter python3 -c "import numpy as np; z = np.array([[3, 0, 1], [2, 2, 1]]); p = np.array([50, 150, 200]); print(z @ p)"Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Zwei Matrizen multiplizieren Zeile mit Spalte
Bei zwei Matrizen steht an jeder Stelle des Ergebnisses ein Skalarprodukt: die Zeile der linken Matrix mit der Spalte der rechten.
Die Formen müssen passen. Hat die linke 2 Zeilen und 3 Spalten, braucht die rechte 3 Zeilen. Das Ergebnis hat dann 2 Zeilen und so viele Spalten wie die rechte.
Beispiel: ein Produkt Zelle für Zelle
| Stelle | Zeile mal Spalte | Wert |
|---|---|---|
| Oben links | 1 mal 5 plus 2 mal 7 | 19 |
| Oben rechts | 1 mal 6 plus 2 mal 8 | 22 |
| Unten links | 3 mal 5 plus 4 mal 7 | 43 |
| Unten rechts | 3 mal 6 plus 4 mal 8 | 50 |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Matrix mal Matrix in Python
a = [[1, 2], [3, 4]]
b = [[5, 6], [7, 8]]
ergebnis = [[0, 0], [0, 0]]
for i in range(2):
for j in range(2):
for k in range(2):
ergebnis[i][j] = ergebnis[i][j] + a[i][k] * b[k][j]
print(ergebnis)
# Tauschen Sie a und b in der ersten und zweiten Zeile.
# Das Ergebnis wird ein anderes.
Das Produkt mit NumPy
docker exec jupyter python3 -c "import numpy as np; a = np.array([[1, 2], [3, 4]]); b = np.array([[5, 6], [7, 8]]); print((a @ b).tolist())"Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Die Form eines Produkts
docker exec jupyter python3 -c "import numpy as np; print((np.ones((2, 3)) @ np.ones((3, 4))).shape)"Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Ein häufiger Fehler
Warnung
Viele denken, A mal B sei dasselbe wie B mal A, wie bei einfachen Zahlen. Das stimmt nicht. Mit den Zahlen oben ergibt B mal A [[23, 34], [31, 46]], nicht [[19, 22], [43, 50]]. Die Reihenfolge ist Teil der Rechnung.
Die Einheitsmatrix ändert nichts
Die Einheitsmatrix hat Einsen auf der Diagonalen und sonst Nullen. Mal sie mit einer Matrix oder einem Vektor, kommt dasselbe heraus.
Sie spielt die Rolle der 1 bei Zahlen. Ein Test gegen sie fängt oft Vertauschungen von Zeile und Spalte.