Lineares Gleichungssystem

Status
Nicht offen für weitere Antworten.

Shorty-84

Mitglied
Hallo,
wie muss ein Java-Programm aussehen, welches mit Hilfe des Gaußschen Eliminationsverfahrens
ein LGS Ax = b löst. Die erforderlichen Methoden sollen in eine Klasse LGS eingebaut werden:
Die gesamten Daten (Matrix A und rechte Seite b werden in einer Matrix mit n Zeilen
und n+1 Spalten gespeichert. Dabei enthält die letzte Spalte die rechte Seite.
Mit zwei Konstruktoren:
LGS() fragt von Tastatur die Anzahl der Gleichungen ab. Danach werden die Koeffizienten
des Gleichungssystems und die rechte Seite von Tastatur abgefragt.
LGS(double [][] A) übernimmt die Koeffizientenmatrix und rechte
Seite aus den Argumenten.
Test für den zweiten Konstruktor, mit fogendem LGS

double[][] A = {3, -4,7,8},{1, 0, 1,2},{2, -8, 7, 10}};
LGS testLGS = new LGS(A);

Realisierung der folgende Methoden:
tauscheZeilen(int i, int j): tauscht die i-te und die j-te Zeile des LGS.
addiereVielfaches(int i, int j, double z): addiert das z-fache der i-ten
Zeile zur j-ten Zeile.
loeseLGS(): bringt das LGS auf Zeilenstufenform und löst rückwärts auf. Falls nötig,
sind dabei Zeilen zu tauschen.
ausgabe() gibt das LGS aus. Nutzen Sie diese Methode auch, um zu testen, ob
ihre obigen Methoden korrekt arbeiten.

Mein Programm sieht bis jetzt so aus:

class LGS {

double [][] A; // erweiterte Koeffizientenmatrix

LGS() {
A = new double[3][4];

A[0][0]=3; A[0][1]=-4;A[0][2]=7;A[0][3]=8;
A[1][0]=1; A[1][1]=0;A[1][2]=1;A[1][3]=2;
A[2][0]=2; A[2][1]=-8;A[2][2]=7;A[2][3]=10;

}

void ausgabe() {
System.out.println("******************");
for (int i=0;i<A.length;i++) {
for (int j=0;j<A[0].length;j++)
System.out.print(" A["+i+"]["+j+"]="+A[j]);
System.out.println();
}
}

void tauscheZeilen(int i, int j) {

for (int k=0;k<4;k++) {
double tmp = A[k];
A[k]=A[j][k];
A[j][k]=tmp;
}
}

public static void main(String args[]) {

LGS test = new LGS();
test.ausgabe();
test.tauscheZeilen(0,1);
test.ausgabe();
}
}

Weiss leider nicht, wie ich weiter machen soll, ich hoffe, es kann mir jemand helfen! Danke
 

Drake

Bekanntes Mitglied
Hallo

1. benutze doch bitte die code Tags, ist ja grausam das so lesen zu müssen.

2. was ist denn jetziges Problem, also an welchem Punkt kommst du nicht weiter, was willst du machen?

mfg
Drake
 

Shorty-84

Mitglied
Hallo, ja tut mir wirklich leid, kommt nicht wieder vor.
Also bis jetzt wird in der Ausgabe ja nur die erste mit der zweiten Zeile getauscht, oder?

Aber ich hab keine Ahnung, wie ich die Eingabe für die Gleichungen mache.

Alle vier Methoden, die ich da realisieren soll, verstehe ich nicht wirklich...

Gruss
 

Quickbeam2k1

Aktives Mitglied
naja so hilft man dir bestimmt nicht.

Also ich würde als erstes mal dieses ganze Blabla von wegen einlesen etc beiseite schieben, und mit dem Beispiel das du da ja schon hast arbeiten. Den Algorithmus kann man dann ganz einfach verallgemeinern.

Dein Test macht ja eigentlich nichts. Du gibts dir einmal die Matrix aus vertauscht, und gibst wieder aus.
Ich meine es ist klar, dass das nicht so prickelnd ist.

Du solltest halt nun mal irgendwo ne Methode für den Gaußalgorithmus einstreuen:

Bsp:
1) if(Element von A[0][0]=0), vertausche die Erste Zeile mit einer Zeile i wo A[0] ungleich 0 ist. else{skip}

2) Addiere die (neue) erste Zeile auf alle anderen darunter liegenden mit dem entsprechenden Koeffizienten -A[0]/A[0][0].

3) gehe nun in die Spalte A[*][1] und das ganze dann iterativ!

Und trotzdem bist du eher die Vollpfeife, macht man sich mal gedanken dazu, kommt man auch darauf.
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben