Matrix-Rechnung
Contents
Matrix-Rechnung#
Typische Aufgaben für Runde 2, denn wir haben es mit verschachtelten Listen zu tun.
Aufgabe: Normalisierung der Zeilen einer Matrix (R1)#
Mit den eingebauten Datenstrukturen von Python kann man eine Matrix als eine Liste von gleichlangen Listen darstellen.
Matrix_2mal3 = [ # 2 Zeilen, 3 Spalten
[ 11, 12, 13 ],
[ 21, 22, 23 ]
]
Gegeben:
Eine 2 mal 3-Matrix
z.B.
Matrix_2mal3
Gesucht:
Liste der Zeilensummen
Liste der Spaltensummen
(In einer Matrix sind alle Zeilen gleich lang.)
def zeilensummen(Matrix):
Ergebnis = []
for zeile in Matrix:
summe = 0
for zahl in zeile:
summe += zahl
Ergebnis.append(summe)
return Ergebnis
zeilensummen(Matrix_2mal3)
[36, 66]
def spaltensummen(Matrix):
Ergebnis = []
for i in range( len(Matrix[0]) ):
Summe = 0
for zeile in Matrix:
Summe += zeile[i]
Ergebnis.append(Summe)
return Ergebnis
spaltensummen(Matrix_2mal3)
[32, 34, 36]
Aufgabe: Matrix mal Vektor (R2)#
Um eine Matrix mit einem Vektor zu multiplizieren, muss – in der Sprache der Mathematik – die Spaltenanzahl der Matrix mit der Zeilenanzahl des Vektors übereinstimmen.
z.B. 2x3 - Matrix aus https://simpleclub.com/lessons/mathematik-matrixvektormultiplikation
# Werte siehe
# https://simpleclub.com/lessons/mathematik-matrixvektormultiplikation
# 2x3 - Matrix
B = [ # 2 Zeilen, 3 Spalten
[ 1, 3, -1 ],
[ 5, 2, 1 ]]
In der Sprache der Mathematik ist v
ein Spalten-Vektor, den man in unserem Beispiel korrekterweise so notieren müsste:
v_spaltenvektor = [ [1], [-1], [2] ] # Spaltenvektor als 3 mal 1-Matrix
Diese mathematisch eingentlich korrekte Notation als Spaltenvektor ist etwa praxisfern. Wir notieren unseren Vektor einfacher (aber mathematisch nicht ganz korrekt) wie oben als (Zeilen-) Vektor:
v = [ 1, -1, 2 ]
Gegeben:
eine n mal m-Matrix, alse eine Liste von Listen zeilenweise notiert
z.B. obige Matrix
B
ein Vektor mit m Spalten (sic!)
z.B. obigen Vektor
v
Gesucht:
Eine Funktion
matrix_mal_vektor(m, v)
, die die Matrixm
mit dem Vektorv
multipliziert.
def matrix_mal_vektor(Matrix, Vektor):
#print(f"{B=}")
#print(f"{v=}")
Ergebnis = []
n = len(Matrix) # Anzahl der Zeilen in der Matrix
m = len(v)
for zeile in Matrix:
... #
... #
... #
... #
... #
return Ergebnis
Cell In [7], line 14
... #
^
IndentationError: unexpected indent
matrix_mal_vektor(B,v)
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
Cell In [8], line 1
----> 1 matrix_mal_vektor(B,v)
NameError: name 'matrix_mal_vektor' is not defined