Java Programm Gleichungssytem 3. Grades/Cramersche Regel?
Hallo, ich habe ein Programm erstellt, dass mithilfe der Cramerschen Regel ein Gleichungssytem 3. Grades löst (siehe unten) Nur kommt bei dem Ergebnis immer x1=0.0, x2=0.0 und x3=0.0 raus, egal was man eingibt. Ich finde den Fehler einfach nicht, kann mir da bitte jemand weiterhelfen?
LG
import java.util.*;
public class gs3 {
public static void main(String[] args) {
Scanner ein = new Scanner(System.in);
System.out.println("Geben Sie den Koeffizienten des Gleichungssystems ein:");
double[][] m = new double[3][4];
for (int i = 0; i < 3; i++) {
System.out.println("Gleichung " + (i + 1) + ":");
for (int j = 0; j < 3; j++) {
System.out.println("Koeffizient x" + (j + 1) + ":");
m[i][j] = ein.nextDouble();
}
System.out.println("Rechte Seite: ");
m[i][3] = ein.nextDouble();
}
double determinanteA = calculateDeterminant(m);
if (determinanteA == 0) {
System.out.println("Gleichungssystem nicht lösbar.");
} else {
double[] ergebnis = new double[3];
for (int i = 0; i < 3; i++) {
double[][] modifiedM = modifyM(m, i);
double determinantModified = calculateDeterminant(modifiedM);
ergebnis[i] = determinantModified / determinanteA;
}
System.out.println("Lösung: x1 = " + ergebnis[0] + ", x2 = " + ergebnis[1] + ", x3 = " +
ergebnis[2]);
}
ein.close();
}
private static double calculateDeterminant(double[][] m) {
double determinante = 0.0;
determinante = m[0][0] * (m[1][1] * m[2][2] - m[1][2] * m[2][1]) -
m[0][1] * (m[1][0] * m[2][2] - m[1][2] * m[2][0]) +
m[0][2] * (m[1][0] * m[2][1] - m[1][1] * m[2][0]);
return determinante;
}
private static double[][] modifyM(double[][] m, int column) {
double[][] modifiedM = new double[3][3];
for (int i = 0; i < 3; i++) {
for (int j = 0, k = 0; j < 3; j++) {
if (j != column) {
modifiedM[i][k++] = m[i][j];
}
}
}
return modifiedM;
}
}
1 Antwort
Vom Beitragsersteller als hilfreich ausgezeichnet
Von gutefrage auf Grund seines Wissens auf einem Fachgebiet ausgezeichneter Nutzer
Computer
Nur schnell angeschaut, evtl. liege ich falsch: Musst du in dem ModifiedM nicht
if (j != column) {
modifiedM[i][j] = m[i][j];
} else {
modifiedM[i][j] = m[i][3];
}
oder so was in der Richtung machen ?
Woher ich das weiß:Berufserfahrung – Softwareentwickler & Admin