Seite 1 von 3

Übung 9 Hausübung (Matrix)

Verfasst: 10. Jan 2007 13:01
von kechler
Hallo allerseits,

ich habe mal eine Frage zur neuen Hausübung 9, Teilaufgabe 6 (Determinante berechnen):

Können wir davon ausgehen, dass es sich hier immer nur um 3x3-Matrizen handelt??

Sonst wird das beliebig häßlich, den Laplace'schen Entwicklungssatz über die Leibniz-Formel o.ä. herzuleiten...

Allerdings sind 2,5 Punkte für die 3x3-Variante dann im Vergleich zum Rest der Hausübung dann ziemlich leicht verdient...

Verfasst: 10. Jan 2007 14:40
von Robert
nein kannst du NICHT ausgehen. du kannst nur davon ausgehen das es eine n x n matrix ist (und keine n x m)

du brauchst den Laplace nicht herleiten sondern kannst ihn als richtig ansehen und benutzen. du brauchst auch keine pivot suche machen sondern kannst einfach immer nach einer konstanten zeile/spalte entwickeln.

Verfasst: 11. Jan 2007 02:19
von Mira`
Kurze Frage am Rande:

um die Anzahl der Spalten zu bekommen macht es ja bei Matrizen Sinn nach der Länge in einer bestimmten Reihe zu fragen (z.b. Reihe 0).

Aber wie sieht das aus, wenn die Länge der Spalten in den verschiedenen Reihen variieren kann? Muss man dann immer explizit nach Länge in der gewünschten Reihe fragen, oder gibt es auch eine Methode, die mir z.b. nur die größte Länge der Spalten im Array liefert?

PS: Ich wollte jetzt keinen Code posten, da ich ja dann schon 2 Methoden der 9. Hausübung verraten hätte. Ich hoffe es ist trotzdem verständlich.

Verfasst: 11. Jan 2007 02:32
von MisterD123
ehm matrizen sind immer rechteckig, die haben keine längeren und kürzeren reihen oder spalten. innerhalb einer matrix sind alle spalten und zeilen gleich groß.

Verfasst: 12. Jan 2007 00:50
von Robert
MisterD123 hat vollkommen recht!
gibt es auch eine Methode, die mir z.b. nur die größte Länge der Spalten im Array liefert?
mir ist nicht bekannt das es sowas gibt .. aber ich bin leider nicht allwissend. mit solchen fragen kann man normal ganz gut google oder die java api fragen ;) (auf der gdi1 homepage verlinkt)

Verfasst: 12. Jan 2007 19:16
von Wang Tang
puh, ich hab die determinant-Methode jetzt endlich fertig, hat ja ewig gedauert bei mir, Laplace zu implementieren. Hat allerdings noch 22 Zeilen :cry:

Wieviel braucht ihr denn so dafür? Oder zerlegt ihr die Methode?

Verfasst: 12. Jan 2007 23:13
von gobbledygook
14 zeilen
nicht zerlegt, ohne kommentar und ohne die "}"-zeilen mitzuzählen

Verfasst: 13. Jan 2007 01:05
von Robert
also ich rate euch beiden noch ein paar eigene Tests dafür zu schreiben.
je nachdem wie man es macht könnte es schon sehr sinnvoll sein die methode zu zerlegen. vorallem um das verständniss zu erhöhen.

was sich so allgemein immer gut zum zerlegen eingnet sind so die inhalte von schleifen .. besonders bei verschachtelten schleifen.
eine schleife aller
for(...) {
Bla bla = erzeugeBla();
verarbeiteBla(bla);
tue sonst noch was ..
}

liest sich oftmals besser als wenn man die Erzeugung (welche ggf auch schleifen enthält) direkt in den body der schleife macht.

Verfasst: 14. Jan 2007 14:15
von blowfish
hi,
zu der aufgabe: ich hab mal die tests durchlaufen lassen und es stimmen alle, bis auf der letzte determinanten-test. die ersten beiden stimmen!
is das n fehler in der testklasse, oder hab ich da was falsch gemacht.
wunder mich halt, weil der pow-test stimmt und 2 der determinanten-tests auch!

Verfasst: 14. Jan 2007 15:32
von Tutor16
Achtung weil pow(2) funktioniert, bedetutet das nicht, dass pow(3) funktioniert!
Bei Matrizen gibt es einen Unterschied zwischen (M*M)*M und M*(M*M)

Verfasst: 14. Jan 2007 16:09
von MisterD123
also wir haben in der Vorlesung eigentlich grade gelernt, das A*B*C = (A*B)*C = A*(B*C) ist o_O

Verfasst: 14. Jan 2007 16:34
von Tutor16
ähm, ja, sorry, hab mich grad vertan.

Aber Ergebniss sollte stimmen.

Verfasst: 14. Jan 2007 19:24
von Robert
hi,
zu der aufgabe: ich hab mal die tests durchlaufen lassen und es stimmen alle, bis auf der letzte determinanten-test. die ersten beiden stimmen!
is das n fehler in der testklasse, oder hab ich da was falsch gemacht.
wunder mich halt, weil der pow-test stimmt und 2 der determinanten-tests auch!
tja .. so ist das eben mit tests .. sie decken nicht alles ab ... und deinem post entnehme ich irgendwie das du dir keine eigenen tests geschrieben hast.

ich hab eben nochmal nachgerechnet:
(wobei ; die zeilen trennt und , die elemente der Zeile)
m:=[1, 2, 1; 2, 6, 6; 7, 7, 2]
m*m*m = [159, 255, 168; 570, 954, 648; 546, 861, 561]
DET(m*m*m) = 5832

du kannst ja mal deine teilschritte vergleichen ... aber allgemein kannst du dir nen beliebiges mathe programm nehmen und vor dem posten selber prüfen ob den der test wirklich falsch ist, gell ;) (geht auch schneller als posten und auf antwort warten)

determinanten berechnungs tools gibts ja auch bei wikipedia .. und matrix berechnungs tools finden sich wahrscheinlich auch mit google.

[edit]
ach was ich mir gut vorstellen könnte als fehler ist: das dein m1 nach m1.multiply(3) sich geändert hat. das sollte ja nicht sein.

Verfasst: 14. Jan 2007 23:37
von blowfish
danke für die antwort. für die potenzierung hab ich schonmal das gleiche raus. scheint also zu funktionieren. multiply und auch pow ändern die eigentliche matrix nicht, sondern geben eine neue zurück.
hab die determinante jetzt auch mal per hand nachgerechnet und es muss an meiner determinant funktion liegen. hab auch die besagten 5832 raus!
ok, hat sich damit erledigt, ich werd mal nach dem fehler suchen!
/edit: k, hab ihn! war ne kleine sache, die ich übersehen hab!

Matrix hoch Null

Verfasst: 20. Jan 2007 12:48
von Anne
Hallo!
Frage zur Hausübung: Was kommt eigentlich raus, wenn man eine Matrix hoch 0 nimmt? Ich hab leider nichts bei Wikipedia gefunden, und über Google auch nicht, und ich dachte, vielleicht weiß es hier jemand...? Ich kann's mir anhand der Multiplikationsregeln, die wir bisher gelernt haben, nicht so recht vorstellen, wie das aussehen soll...
Schönes Wochenende allerseits,
Anne