Hallo java-forum,
ich soll ein Gauß-Seidel Verfahren implementieren. Ist auch eigentlich ganz einfach. Hab den Pseudocode und hab ihn auch umgesetzt. Aber irgendwo ist ein logischer Fehler drinn und mein "Programm" zählt immer weiter hoch und nähert sich nicht den Werten an sonder sie Explodieren nach -unendlich und +unendlich. Aber jenachdem wie ich meinen Startwähle kommt auch das richtige Ergebnis raus irgendwo hab ich da also was falsch gemacht.
Hier mal noch der Link zum Algorithmus, er ist auch auf Wikipedia zu finden, aber dort finde ich ihn nicht so einfach erklärt.
Ich hoffe jmd kann den Fehler finden, sonst hab ich ein Problem
Vielen dank schonmal im Vorraus für die Hilfe.
ich soll ein Gauß-Seidel Verfahren implementieren. Ist auch eigentlich ganz einfach. Hab den Pseudocode und hab ihn auch umgesetzt. Aber irgendwo ist ein logischer Fehler drinn und mein "Programm" zählt immer weiter hoch und nähert sich nicht den Werten an sonder sie Explodieren nach -unendlich und +unendlich. Aber jenachdem wie ich meinen Startwähle kommt auch das richtige Ergebnis raus irgendwo hab ich da also was falsch gemacht.
Hier mal noch der Link zum Algorithmus, er ist auch auf Wikipedia zu finden, aber dort finde ich ihn nicht so einfach erklärt.
Ich hoffe jmd kann den Fehler finden, sonst hab ich ein Problem
Vielen dank schonmal im Vorraus für die Hilfe.
Java:
public static void main(String[] args)
{
int n=3;
double A[][]=new double [n][n];
double b[]= new double[n];
double x[]= new double[n];
double x0[] = new double[n];
double eps=0.1;
//MATRIX
A[0][0]=1;
A[0][1]=2;
A[0][2]=3;
A[1][0]=4;
A[1][1]=5;
A[1][2]=6;
A[2][0]=7;
A[2][1]=8;
A[2][2]=10;
b[0]=1;
b[1]=1;
b[2]=1;
//Startwert, frei Wählbar
x0[0]=1;
x0[1]=1;
x0[2]=1;
//Anzahl der Iterationsschritte
int Nmax=300;
for(int k=0;k<=Nmax;k++)
{
for(int i=0;i<n;i++)
{
double sum1=0;
double sum2=0;
//Erste Summe ausrechnen
for(int j=0;j<i;j++)
{
sum1 += A[i][j]*x[j];
}
//Zweite Summe ausrechnen
for(int j=i+1;j<n;j++)
{
sum2 += A[i][j]*x0[j];
}
//x[i] mit den Zwei Summen berechnen
x[i] = (-sum1 - sum2 + b[i])/A[i][i];
}
//x0=x
for(int l=0;l<n;l++)
{
double foo=x[l];
x0[l] = foo;
}
//Abbruchbedingung fällt aus Testzwecken weg
}
System.out.println("x[0]="+x[0]+" x[1]= "+x[1]+" x[2]="+x[2]+"\n" );
}