Operation auf zwei Matrizen

Code-Stücke können hier veröffentlicht werden.
Antworten
Ferromagnet
User
Beiträge: 4
Registriert: Freitag 22. Dezember 2017, 20:32

Hallo zusammen,

Ich soll muss für ein Profekt im Rahmen meines Studiums ein Projekt zur Programmierung in Sage bearbeiten, wobei ich mich an einer Matrizenoperation, die es zu programmieren gilt, den Kopf zerbreche. Es handelt sich um folgende Teilaufgabe:

http://www.bilder-upload.eu/show.php?fi ... 971969.png

Bislang hab ich folgendes, wobei das Ergebnis offensichtlich falsch ist.

Code: Alles auswählen

def Matrizenoperation(X,Y):
    
    Z=matrix(QQ, X.nrows(), X.nrows(), lambda i, j: 1)
    
    for i in range(X.nrows()):
        for k in range(X.nrows()):
            for j in range(X.nrows()):
                
                Z[i,k]=min(X[i,j]+Y[j,k])
                
    return Z

Kann mir vielleicht jemand einen Tipp geben, welchen Ansatz ich wählen soll oder gerne auch anderweitig weiterhelfen?


Schonmal vielen Dank.
Sirius3
User
Beiträge: 17710
Registriert: Sonntag 21. Oktober 2012, 17:20

@Ferromagnet: wo hast Du „c_i,k = min(a_i,j + b_j,k)“ programmiert?
Ferromagnet
User
Beiträge: 4
Registriert: Freitag 22. Dezember 2017, 20:32

In "Z[i,k]=min(X[i,j]+Y[j,k])", jedoch hab ich die Variablen anders benannt.
Sirius3
User
Beiträge: 17710
Registriert: Sonntag 21. Oktober 2012, 17:20

@Ferromagnet: dann schau Dir nochmal genau an, was Du wirklich geschrieben hast?
Ferromagnet
User
Beiträge: 4
Registriert: Freitag 22. Dezember 2017, 20:32

Naja, zunächst definiere ich eine Matrix, deren einträge ich substituieren kann. Die Indizes i,j,k wähle ich aus der der Menge {0,...,n-1}, da für die Matrizen die erste Spalte bzw. die erste Zeile jeweils mit 0 beziffert wird. Dann sollen jeder Eintrag Z[i,k] durch das Minimum der Menge {X[i,j]+Y[j,k]} ersetzt werden. Muss ich an dieser Stelle vielleicht das "für fortlaufende j" besonders betrachten? - Die Reihenfolge von Zeile 3 bis Zeile 5 hat offensichtlich keinen Einfluss.
Ferromagnet
User
Beiträge: 4
Registriert: Freitag 22. Dezember 2017, 20:32

Ok, ich hab die Lösung nach einigem grübeln gefunden - Vielen Dank.
Antworten