# Gaussalgorithmus in Java umsetzen



## HoaX (13. Nov 2003)

Also, ich will den Gaussalgorithmus (Matrizen in Stufenform bringen => lineare Gleichungssysteme lösen) in Java umsetzen und hab da nun n Programm geschrieben, das zu meinem grossen Erstaunen sogar funktioniert - leider aber nur mit 3x3 Matrizen, obwohl ich versucht hab es allgemeingültig zu schreiben


```
public class Gauss {
  public static void main(String[]args) {
    int n = 3; // nxn Matrix, hier 3x3
    int zeilen = n;
    int spalten = n+1;
    double matrix[]=new double [zeilen*spalten];
    matrix[0] = 21.545; matrix[1] = -95.510; matrix[2] = -96.125; matrix[3] = -48.934;
    matrix[4] = 10.230; matrix[5] = -91.065; matrix[6] = 7.340; matrix[7] = -11.185;
    matrix[8] = 51.215; matrix[9] = 12.270; matrix[10] = 86.455; matrix[11] = 57.522;


    for (int c = 0; c < spalten-2; c++) {
        for (int a = c+1; a < spalten; a++) {
            matrix[c*spalten+a] /= matrix[c*spalten+c];
        }
        for (int b = 0; b < zeilen; b++) {
            for (;b == c; b++){}
            for (int a = c+1; a < spalten; a++) {
                matrix[b*spalten+a] -= matrix[b*spalten+c]*matrix[c*spalten+a];
            }
        }
    }
    for (int a = spalten-1; a < spalten; a++) {
        matrix[(zeilen-1)*spalten+a] /= matrix[(zeilen-1)*spalten+2];
    }
    for (int b = 0; b < zeilen; b++) {
        for (;b == zeilen-1;) {
            for (int c = 0; c < zeilen; c++) {
                System.out.println(matrix[c*spalten+(spalten-1)]);
            }
        System.exit(0);
        }
        for (;b == 2;b++) {
        }
        for (int a = 3; a < spalten; a++) {
            matrix[b*spalten+a] -= matrix[b*spalten+2]*matrix[2*spalten+a];
        }
    }
  }
}
```


So siehts aus - wahrscheinlich recht grausam, wegen der vielen Hilfsvariablen, aber vielleicht blickt ja wer durch und kann mir so auf die schnelle sagen, wo mein Fehler liegt, warum das mit 2x2, 4x4 usw Matrizen nich geht?
Mit den eingetragenen Beispielwerten gehts zB

Vielen Dank!


----------



## HoaX (13. Nov 2003)

Am Ende steht inzwischen


```
System.exit(0);
        }
        for (;b == spalten - 2;b++) {
        }
        for (int a = 3; a < spalten; a++) {
```

nich b==2 - jetz bekomm ich wenigstens auch bei Matrizen >3x3 ne Ausgabe - aber falsch


----------

