Blatt 3 1d) - Testwerte fehlerhaft?

Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.

Blatt 3 1d) - Testwerte fehlerhaft?
Hallo zusammen,

hat hier jemand auch Probleme mit einem Testwert zu 1d)? Ich glaube im Prüfwert wurden die Werte l_21 und l_31 der Matrix L vertauscht und die Matrix P falsch angegeben, kann das sein?

Auf Papier nachgerechnet habe ich dasselbe Ergebnis wie das meiner Funktion raus.

Alle anderen Testwerte zu 1d) laufen ohne Fehler.

Hier der Test Output:

=====================================
Aufgabe 1d: LR-Zerlegung (2 Punkte)

Der Aufruf lu_decompose
(array([[1., 2., 3.],
[4., 5., 6.],
[7., 8., 0.]])) liefert das Ergebnis
(array([[0., 0., 1.],
[1., 0., 0.],
[0., 1., 0.]]),
array([[1. , 0. , 0. ],
[0.57142857, 1. , 0. ],
[0.14285714, 0.5 , 1. ]]),
array([[7. , 8. , 0. ],
[0. , 0.85714286, 3. ],
[0. , 0. , 4.5 ]])), richtig wäre aber
(array([[0., 1., 0.],
[0., 0., 1.],
[1., 0., 0.]]),
array([[1. , 0. , 0. ],
[0.14285714, 1. , 0. ],
[0.57142857, 0.5 , 1. ]]),
array([[7. , 8. , 0. ],
[0. , 0.85714286, 3. ],
[0. , 0. , 4.5 ]])).
Diese Teilaufgabe enthält

Weiß jemand was dazu?

Grüsse


Habe genau dasselbe Problem. Scheint tatsächlich ein fehlerhafter Testfall zu sein. Alle anderen Testfälle (auch linsolve) funktionieren bei mir.


Die Testsuite ist ziemlich sicher richtig. Ich glaube, es handelt sich hier um einen Fehler in eurer Implementierung von Aufgabe 1c), der aber erst in den Tests von Aufgabe 1d) entdeckt wird.

(Memo an mich: Mehr/bessere öffentliche Tests für Aufgabe 1c) basteln)


Tatsächlich habe ich mich verlesen und mein Problem ist ein anderes. L und U Matrix sind korrekt, aber P nicht. Seltsam…

edit: OK, hatte einen Verständnisfehler, der das Problem verursacht hat.


Ich bin der Meinung, dass der Testfall immernoch falsch ist bzw. ich verstehe meinen Fehler nicht. Mein Ergebnis:
Der Aufruf lu_decompose
(array([[1., 2., 3.],
[4., 5., 6.],
[7., 8., 0.]])) liefert das Ergebnis
(array([[0., 1., 0.],
[0., 0., 1.],
[1., 0., 0.]]),
array([[1. , 0. , 0. ],
[0.57142857, 1. , 0. ],
[0.14285714, 0.5 , 1. ]]),
array([[7. , 8. , 0. ],
[0. , 0.85714286, 3. ],
[0. , 0. , 4.5 ]])), richtig wäre aber
(array([[0., 1., 0.],
[0., 0., 1.],
[1., 0., 0.]]),
array([[1. , 0. , 0. ],
[0.14285714, 1. , 0. ],
[0.57142857, 0.5 , 1. ]]),
array([[7. , 8. , 0. ],
[0. , 0.85714286, 3. ],
[0. , 0. , 4.5 ]])).

und zwar dass 0,14… und 0.57… in L vertauscht sein müssten Da ich ja nach dem Algorithmus
1 und 3 Tausche,da ja 7>4>1–> Zeile 3( Was mir die Lösung ja bestätigt)
und dann für zeile 2: 4/7 rechne–> ca0.57 (Was da stehen muss, da ich ja 1 und 3 tausche)
und für Zeile 3 1/7 → ca. 0.14
hab ich da was falsch verstanden

Alle anderen Testfälle von lu_test sind korrekt.


Ich glaube damit ist gemeint, dass in der c) der betragsmäsig hust hust hint hint größte wert gewählt werden soll, das hatte ich zunächst auch vergessen, ich habe es jetzt aber gefixt und trotzdem noch das exakt gleiche Problem wie ihr. Ich bezweifle aber auch, dass der Fehler in der Testsuite liegt, da P L und U hier keine gültige zerlegung sind, wenn ich sie von Numpy wieder zusammenmultiplizieren lasse,
[m]
A =
[[ 1. 2. 3.]
[ 4. 5. 6.]
[ 7. 8. 0.]]
Ergebnis:
PLU =
[[ 4. 5. 6.]
[ 7. 8. 0.]
[ 1. 2. 3.]]
[/m]
Ich muss da ausgeschlafen noch mal drüber schauen und komme dann auf euch zurück.


Wenn du das in numpy überprüfst, kommt sehr wohl eine richtige Zerlegung raus
P@L@R =[[ 1. 2. 3.]
[ 4. 5. 6.]
[ 7. 8. 0.]]


Zumindest bei der Zerlegung von Haba_DibiDu_, zu der meine Identisch war ist das nicht der Fall, ich habe gerade erst gesehen, dass die sich von Nalfs zerlegung unterscheidet. Das Problem war jetzt, dass ich P noch Invertieren musste.


Ich hatte genau das selbe Problem gehabt. Habe jetzt bei mir den Fehler herausgefunden.
Bei mir hatte ich die L-Matrix als Einheitsmatrix erzeugt, weil ich dachte, ich wäre clever und würde mit dadurch ersparen auf die Diagonale 1er zu schreiben.
Dementsprechend habe ich dann aber auch bei der L-Matrix die Zeilen nicht vertauscht, wie man es sowohl für die R, P und L Matrix machen muss.

→ Umschreiben, sodass L Matrix leer erzeugt wird, dann alles wie gehabt, Vertauschung aber mit einbauen und die Diagonale mit den 1ern erst am Ende ergänzen.

Hoffe das hilft.

1 „Gefällt mir“