View Full Version : [Frage] multleft multright?
bei mir liefert das 4x4 multleft "not ok" aber das darauf aufbauende multright liefert "ok"
wie kann das sein?
ich hab dasselber problem. ich denke es liegt ein fehler in der angabe vor, obwohl ich mir das schwer vorstellen kann. ich hab mir mal die test-methode näher angeschaut und folgendes herausgefunden:
folgende matrizen werden erzeugt:
2 0 0 0
0 3 0 0
0 0 1 0
0 0 0 1
1 0 0 3
0 1 0 2
0 0 1 5
0 0 0 1
werden diese miteinander linksmultipliziert kommt folgende matrix heraus:
2.0 0.0 0.0 6.0
0.0 3.0 0.0 6.0
0.0 0.0 1.0 5.0
0.0 0.0 0.0 1.0
jedoch wird von der testroutine gefordert, dass
2.0 0.0 0.0 3.0
0.0 3.0 0.0 2.0
0.0 0.0 1.0 5.0
0.0 0.0 0.0 1.0
herauskommt, was aba ein kompletter blödsinn sein muss, wenn man die matrizenmultiplikation analog zur 3x3 durchzieht. ich hab keine ahnung was da los is :confused:
diese linksmultiplizierte matrix kommt mir händisch auch raus
und auch wenn ich sie mir per println ausgeben lass sollt also stimmen außerdem wie sollte sonst das folgende multright richtig sein?
naja bei der rightmultiplication sollte rauskommen:
2.0 0.0 0.0 9.0
0.0 3.0 0.0 8.0
0.0 0.0 1.0 10.0
0.0 0.0 0.0 1.0
aba logischerweise durch den "rechenfehler" von vorhin kommt
2.0 0.0 0.0 12.0
0.0 3.0 0.0 12.0
0.0 0.0 1.0 10.0
0.0 0.0 0.0 1.0
heraus
ich werd noch narrisch :hewa:
nö das stimmt dann schon wenns richtig implementiert is bei mir zumindest kommt ok rechne es mal händisch dann is die erste zeile 1009 so wie's gehört
ich hab einfach keine ahnung was da los ist, der algorithmus MUSS so funktionieren weil er für 3x3 funktioniert und 4x4 nur eine dimension mehr ist und die vollkommen analog gerechnet wird oder irre ich mich da?
nein stimmt so is das gleiche wie bei 3x3
nur zur sicherheit... die multiplikation der 3x3 matrix schaut so aus:
a11b11 + a12b21 + a13b31 | a11b12 + a12b22 + a13b32 |
a21b11 + a22b21 + a23b31 | a21b12 + a22b22 + a23b32 |
a31b11 + a32b21 + a33b31 | a31b12 + a32b22 + a33b32 |
a11b13 + a12b23 + a13b33
a21b13 + a22b23 + a23b33
a31b13 + a32b23 + a33b33
und bei der 4x4 kommt einfach analog eine dimension dazu:
a11b11 + a12b21 + a13b31 + a14b41 | .... | .... | ....
...
...
...
irr ich mich eh nicht?
ja stimmt soweit das du mit 0 beginnen musst im array is dir aber schon klar oder?
*gg* naja dass man ein array mit 0 beginnt schreit einem schon jeder säugling ins gesicht oder nicht?
wohl war bin wohl selbst schon vom proggen verwirrt
na ich auch, ich packs echt nimma, keine ahnung was da schief läuft...
ich hab dasselber problem. ich denke es liegt ein fehler in der angabe vor, obwohl ich mir das schwer vorstellen kann. ich hab mir mal die test-methode näher angeschaut und folgendes herausgefunden:
folgende matrizen werden erzeugt:
2 0 0 0
0 3 0 0
0 0 1 0
0 0 0 1
1 0 0 3
0 1 0 2
0 0 1 5
0 0 0 1
werden diese miteinander linksmultipliziert kommt folgende matrix heraus:
2.0 0.0 0.0 6.0
0.0 3.0 0.0 6.0
0.0 0.0 1.0 5.0
0.0 0.0 0.0 1.0
jedoch wird von der testroutine gefordert, dass
2.0 0.0 0.0 3.0
0.0 3.0 0.0 2.0
0.0 0.0 1.0 5.0
0.0 0.0 0.0 1.0
herauskommt, was aba ein kompletter blödsinn sein muss, wenn man die matrizenmultiplikation analog zur 3x3 durchzieht. ich hab keine ahnung was da los is :confused:
Ok, ich glaub ich kann dir helfen, und zwar hab ich das ganz gleiche Problem gehabt und ich hab das So gelöst und jetzt stimmts!
Ich hab einfach die multiplikationen vertauscht:
Also wenn du jetzt:
m[i][j]=temp.m[i][0]*left.m[0][j]+....
hast dann vertausche einfach alle left und temp in der Zeile -->
m[i][j]=left.m[i][0]*temp.m[0][j]+....
OK? Es sollte dann funktionieren! Zumindest bei hats des bei mir!
MFG Angel
P.S:Falls es funktioniert, sag bescheid!
wieso isses bei 4x4 genau andersrum als bei 3x3 ?
funzt übrigens so
Matthias
30-10-2004, 00:53
wieso isses bei 4x4 genau andersrum als bei 3x3 ?
ist es nicht. die multiplikationen bie 4x4 und 3x3 sehen bis auf die andere dimension genau gleich aus.
left muss bei der left multiplikation natürlich links von tmp stehen, denn sonst machst du ja eine right multiplikation. bei dem 3x3 test funktioniert es auch so, da dort die erste multiplikation mit einer diagonalmatrix erfolgt und dort ist es egal, ob man links oder rechts multipliziert.
ja stimmt schon jetzt hab ich verstanden wies es bei der 3x3 egal is auch wenn mans verkehrt macht das ding is ja symetrisch da isses egal ob mans links oder rechts hinschreibt
ja wie es aussieht hab ich die matrizenmultiplikation von der falschen seite gemacht und einfach alles verdreht. nochmals danke :thumb:
vBulletin® v3.7.1, Copyright ©2000-2009, Jelsoft Enterprises Ltd.