Determinante ausrechnen
Ich habe mal ein kleines Java Programm geschrieben, was Determinanten aus n-dimensionalen Matrizen ausrechnen kann.
Leider hatte ich bisher noch keine Gelegenheit, mir die Oberflächenentwicklung mit Swing genauer anzuschauen. Daher muss die Matrix momentan noch manuell in den Quelltext eingegeben werden.
Update folgt.
Quelltext um Determinante auszurechnen:
public class Matrix {
private int matrix[][];
private int groesse;
public Matrix() {
// Hier wird die Matrix definiert, vorne die Zeile, dahinter die Spalte
groesse = 3;
matrix = new int[groesse][groesse];
matrix[0][0] = 2;
matrix[0][1] = 3;
matrix[0][2] = -1;
matrix[1][0] = 1;
matrix[1][1] = -1;
matrix[1][2] = 1;
matrix[2][0] = 3;
matrix[2][1] = 7;
matrix[2][2] = -3;
}
// Hier wird die Rekursion gestartet
public void rechne() {
int determinante = rRechne(matrix, groesse);
System.out.println("Determinante ist: " + determinante);
}
// Matrix wird nach dem Sacchus'schen Entwicklungssatz aufgelöst und die Unterdeterminanten werden rekursiv ausgerechnet
private int rRechne(int akt_matrix[][], int akt_groesse) {
int determinante = 0;
// Falls Größe auf 2x2 runtergerechnet ist, kann man die Determinante ausrechnen
if(akt_groesse == 2) {
determinante = (akt_matrix[0][0]*akt_matrix[1][1])-(akt_matrix[1][0]*akt_matrix[0][1]);
}
else {
for(int i=0; i<akt_groesse; i++) {
if(i%2 == 0)
determinante += akt_matrix[i][0] * rRechne(neueMatrix(akt_matrix, akt_groesse, i), akt_groesse-1);
else
determinante -= akt_matrix[i][0] * rRechne(neueMatrix(akt_matrix, akt_groesse, i), akt_groesse-1);
}
}
return determinante;
}
// Hier werden die Untermatrizen erstellt, die vom Sacchus'schen Entwicklungssatz benötigt werden
private int[][] neueMatrix(int akt_matrix[][], int akt_groesse, int akt_zeile) {
int neue_matrix[][] = new int[akt_groesse-1][akt_groesse-1];
for(int zeile=0; zeile<akt_groesse; zeile++) {
for(int spalte=1; spalte<akt_groesse; spalte++) {
if(zeile < akt_zeile)
neue_matrix[zeile][spalte-1] = akt_matrix[zeile][spalte];
else if(zeile > akt_zeile)
neue_matrix[zeile-1][spalte-1] = akt_matrix[zeile][spalte];
else
continue;
}
}
return neue_matrix;
}
}
*UPDATE*: So, es gibt eine Oberfläche! Hier könnt ihr euch die neue Version runterladen!

Kommentare
09:39 Uhr am 26.11.2008 von yasemin
hallo, also ich muss sagen das IHR Quelltext das beste ist was ich bis jetzt im Internet über Determinanten gesehen habe. Ich versuche mir gerade Java beizubringen, studiere auch Wirtschaftsinformatik, jedoch komm ich nicht so voran wie ich es gerne hätte.
Könnten sie eventuell kommentare am Programm machen, damit ich das Programm nachvollziehen kann und auch lernen?
13:26 Uhr am 27.11.2008 von Christoph
Hallo Yasemin,
ich habe den Quelltext mal kommentiert, hoffentlich reicht das schon, ansonsten einfach noch einen kleinen Kommentar verfassen.
LG
14:33 Uhr am 28.01.2010 von Peter
hmm.. wenn ich das programm ausführen kommt ne Fehlermeldung:
java.lang.NoSuchMethodError: main
Exception in thread "main"
15:33 Uhr am 28.01.2010 von Christoph
Hallo Peter,
die Klasse ist nicht eigenständig lauffähig. Sie funktioniert nur, wenn sie von außen aufgerufen wird, um so direkt die Methoden zu starten. Aber schau dir mal meinen fertigen Determinanten-Rechner mit Oberfläche an (oben verlinkt). Dort brauchst du nichts weiter ändern, der läuft eigenständig.
LG