- Registriert
- 29.03.07
- Beiträge
- 799
Ich habe folgendes Problem:
Ich soll für die Uni eine Java-Programm schreiben, dass die Determinante einer Matrix berechnet. Das ganze soll rekursiv sein.
Ich habe jetzt ein Programm geschrieben, jedoch liefert es ein falsches Ergebnis. Könntet ihr euch das mal ansehen und mir sagen, wo der Fehler ist?
Hier ist die Klasse Matrix
Und hier die Klasse Test, die die Beispielmatrix enthält:
Das Programm liefert zur Zeit "-297" als Ergebnis, richtig sollte aber "-169" sein :/
Ich soll für die Uni eine Java-Programm schreiben, dass die Determinante einer Matrix berechnet. Das ganze soll rekursiv sein.
Ich habe jetzt ein Programm geschrieben, jedoch liefert es ein falsches Ergebnis. Könntet ihr euch das mal ansehen und mir sagen, wo der Fehler ist?
Hier ist die Klasse Matrix
Code:
public class Matrix {
public int[][] mat;
int determinante = 1;
int i;
private int[][] temp;
public Matrix(int[][]mat){
this.mat = mat;
}
public int det() {
// Für Matrizen genau 1 * 1
if(mat.length == 1) {
determinante = mat[0][0];
return determinante;
}
//Für Matrizen größer als 1 * 1
else {
for(int i = 0; i < mat[0].length; i++) {
int temp[][] = new int[mat.length - 1][mat[0].length - 1];
for(int j = 1; j < mat.length; j++) {
for(int k = 0; k < mat[0].length; k++) {
if(k < i) {
temp[j - 1][k] = mat[j][k];
}
else if(k > i) {
temp[j - 1][k - 1] = mat[j][k];
}
}
}
// Ausrechnen der Determinante mit der Summenformel:
determinante += mat[0][i] * Math.pow(-1, (double)i) * (new Matrix(temp).det());
}
return determinante;
}
}
}
Und hier die Klasse Test, die die Beispielmatrix enthält:
Code:
public class Test {
public static void main (String[] args) {
int[][]test = {
{1,2,3,0},
{5,5,7,8},
{1,3,2,1},
{8,7,6,5},
};
Matrix mat = new Matrix(test);
mat.det();
int ergebnis = mat.det();
System.out.print(ergebnis);
}
}
Das Programm liefert zur Zeit "-297" als Ergebnis, richtig sollte aber "-169" sein :/