Wie kann ich so eine Matrix mit Python berechnen?
Hallo
Ich habe eine Matrix gegeben. Nun soll ich
- die Summe aller Elemente dieser Matrix ermitteln => summe= sum...
- die Spur der Hauptdiagonalen => spur=...
- den Maximalwert in jener Spalte ermitteln
Das ist die Matrix um die es sich handelt
U = [
[5, 5, 6, 9, 3, 4],
[5, 0, 8, 4, 7, 2],
[0, 5, 0, 4, 5, 3],
[4, 0, 4, 6, 0, 5],
[0, 6, 1, 5, 0, 4],
[4, 0, 5, 0, 8, 1],
]
Wie gehe ich hier an die Aufgabe ran? Bzw. was genau sollen die Befehle sein?
2 Antworten
- Durch jedes Element iterieren mit 2 Kaskadierten Schleifen und einfach jedes Element auf eine Variable sum addieren
- Eine Schleife, wobei nur eine Variable vergrößert wird und man dementsprechend immer den Wert [n,n] aus der Matrix bekommt. Damit einfach die Spur berechnen
- Jede Spalte der Matrix durchlaufen mit 2 kaskadierten Schleifen und jeweils den Höchsten wert speichern
Die konkrete Implementierung solltest du selber hinbekommen und meine Vorschläge sind keine optimalen Lösungen sondern der einfachste Weg der mir auf die Schnelle eingefallen ist.
Wenn du eh immer alle Ergebnisse berechnen musst kannst du die 3 Operationen auch in einem Verknüpfen und bei jedem Element eine Art Fallunterscheidung machen
Sorry, aber ich habe gerade keine Lust, länger zu erklären, wie man an die Aufgabe rangehen könnte. Ich habe das nur gerade selbst als kleine Übung genutzt und kann dir meinen Lösungsvorschlag liefern... (In wieweit dich das beim Lernen weiterbringt, ist wiederum eine andere Frage. Wenn du aber versuchst, das nachzuvollziehen, kann dir das evtl. auch helfen.)
U = [
[5, 5, 6, 9, 3, 4],
[5, 0, 8, 4, 7, 2],
[0, 5, 0, 4, 5, 3],
[4, 0, 4, 6, 0, 5],
[0, 6, 1, 5, 0, 4],
[4, 0, 5, 0, 8, 1],
]
summe = sum([sum(zeile) for zeile in U])
print("Summe aller Elemente:", summe)
spur = sum([U[i][i] for i in range(len(U))])
print("Spur:", spur)
spaltenmaxima = [max([U[i][j] for i in range(len(U))]) for j in range(len(U[0]))]
print("Maximalwerte der Spalten:", spaltenmaxima)
Mir ist übrigens aufgefallen, dass ich vielleicht sogar
spur = sum([zeile[i] for i, zeile in enumerate(U)])
statt
spur = sum([U[i][i] for i in range(len(U))])
bei der Spur verwenden würde.
Beispielsweise so:
def spaltenmax(matrix, spalte):
return(max([zeile[spalte] for zeile in matrix]))
Dabei liefert [zeile[spalte] for zeile in matrix] für einen gewissen Spaltenindex spalte eine Liste, in der die Einträge der entsprechenden Spalte stehen. Mit einem max davor erhält man dann das entsprechende Maximum.
Wie würde das dann hier aussehen?