Wie kann ich so eine Matrix mit Python berechnen?

2 Antworten

  1. Durch jedes Element iterieren mit 2 Kaskadierten Schleifen und einfach jedes Element auf eine Variable sum addieren
  2. 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
  3. 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)

Kiki284 
Beitragsersteller
 08.01.2022, 16:36
??? spaltenmax(matrix,??? ):
    return ??? ([???[spalte] for zeile in U ])

print(spaltenmax(U,spalte))

Wie würde das dann hier aussehen?

0
mihisu  08.01.2022, 16:51
@Kiki284

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.

0
mihisu  08.01.2022, 16:54

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.

0