H
HoaX
Gast
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
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!
Code:
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!