Problem mit Gauss Elimination
-
Leute .. ich brauch echt eure Hilfe ... ich hab hier nen Programm zusammengekloppt was normal ein lineares GLS mit dem gauss algo lösen soll....
Die eliminierung klappt auch wunderbar aber das rückwärts einsetzen in der funktion substitute zerhaut er mir irgendwie ... in das feld m->result[] soll er am ende eigentlich die Lösungen für die Variablen x1...xn reinpacken .. aber irgendwas läuft schief ... und ich seh keinen fehler
...
Bitte wenn mir jmdn Helfen kann ... dann bitte !! muss das am Montag abgeben :-\http://home.arcor.de/r-a-g-n-a/aud_beleg/gauss.c
zum probieren kann man folgende Zahlen nehmen:
1 3 -4
1 1 -2
-1 -2 5und für den Lösungsvektor
1 5 -8Ergebnis sollte
x1: 1
x2: 5
x3: 2sein ... :-\
Bitte hilfe ^^ ... danke !
-
Ich bin nur kurz über den Code geflogen, aber mir scheint du wendest die Zeilenoperationen nicht auf die rechte Seite an.
-
welche Zeilenoperation wo? :> sry bin schon total durch den wind ...
-
Dort wo du die Matrix auf Dreiecksform bringst. Entweder musst du da die Operationen auch auf b ausführen (angenommen das LGS ist Ax=b) oder Buch führen und somit eine LR-Zerlegung machen in die du nachher vorwärts und rückwärts einsetzen kannst. In deinem eliminate-Code habe ich aber beim drüberfliegen weder das eine noch das andere erkennen können.
Eine LR-Zerlegung könnte in etwa so aussehen:
void gauss(Matrix& a) { const unsigned N = a.rows(); for(unsigned j = 0; j != (N - 1) && a[j][j] != 0; ++j) { for(unsigned i = j + 1; i != N; ++i) { a[i][j] /= a[j][j]; for(unsigned k = j + 1; k != N; ++k) a[i][k] -= a[i][j] * a[j][k]; } } }
-
BTW: Was soll "zerhaut er mir irgendwie" überhaupt heißen? Ich nehme an, dass die Ergebnisse nicht stimmen.
-
ich weiss zwar nicht wie aber cih habs gelöst ^^
war nur ein fehler im algo an sich ^^
wens wen interessiert :in der subst fkt:
for(j=m->rows-1; j>=0; --j) { t=0.0; for (k=j+1; k < m->rows; ++k) t+=(m->content[j][k])* m->result[k]; m->result[j]=((m->content[j][m->rows])-t)/(m->content[j][j]); }
Der algorithmus an sich ist aus algorithmen in c++ vom herren sedgewick ^^
also der stimmt schon ... nur das was ich draus gemacht habe war falsch
-
Der Code ist aber unlesbar.
-
Die Leute, die das korrigieren sollen ja auch was tun für ihr Geld!