ich wäre auch über neue denkanstöße oder hilfelinks sehr dankbar, denn da ich selber nicht mehr checke was ich da hin implementiert habe, besstehe ich nicht auf das gedöns ^^
Wie wäre es, wenn du die Zeilenoperationen in eigene Funktionen schiebst?
Das würde deinen Code viel lesbarer machen.
Du kannst Gauß "rekursiv" anwenden, wobei du immer eine Spalte und eine Zeile weniger betrachtest:
Angenommen du hast eine n*n-Matrix M = (a_ij) mit i = Zeilennummer, j = Spaltennummer.
Code:
für j := 1 bis n tue
wenn a_jj = 0 dann
suche i > j mit a_ij <> 0; // existiert, da Matrix vollen Rang hat
tauche a_1j und a_ij;
// jetzt ist a_jj <> 1
Multipliziere Zeile j mit dem multiplikativen Inversen von a_jj;
// jetzt ist a_jj = 1
Addiere Zeile j so auf die restlichen Zeilen, dass dort Nullen in Spalte j entstehen (passenden Faktor wählen);
XXXX 1. Schleifendurchlauf
XXXX 2. Schleifendurchlauf
XXXX 3. Schleifendurchlauf
XXXX 4. Schleifendurchlauf
Apropos, in welchem Körper rechnest du eigentlich?