Seite 1 von 1

Operation auf zwei Matrizen

Verfasst: Freitag 22. Dezember 2017, 20:49
von Ferromagnet
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.

Re: Operation auf zwei Matrizen

Verfasst: Freitag 22. Dezember 2017, 21:19
von Sirius3
@Ferromagnet: wo hast Du „c_i,k = min(a_i,j + b_j,k)“ programmiert?

Re: Operation auf zwei Matrizen

Verfasst: Freitag 22. Dezember 2017, 21:22
von Ferromagnet
In "Z[i,k]=min(X[i,j]+Y[j,k])", jedoch hab ich die Variablen anders benannt.

Re: Operation auf zwei Matrizen

Verfasst: Freitag 22. Dezember 2017, 21:48
von Sirius3
@Ferromagnet: dann schau Dir nochmal genau an, was Du wirklich geschrieben hast?

Re: Operation auf zwei Matrizen

Verfasst: Samstag 23. Dezember 2017, 11:44
von Ferromagnet
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.

Re: Operation auf zwei Matrizen

Verfasst: Samstag 23. Dezember 2017, 14:18
von Ferromagnet
Ok, ich hab die Lösung nach einigem grübeln gefunden - Vielen Dank.