Jacobi + Gauß-Seidel Iteration
-
Hallo,
muss für mein Numerik-Praktikum die Jacobi und die Gauß-Seidel
Iteration implementieren.Für die Jacobi-Iteration hab ich die Algorithmusskizze von
Wikipedia verwendet.http://de.wikipedia.org/wiki/Jacobi-Verfahren
Das Ergebnis stimmt auch, aber nach der Anzahl der Iterationen
und der Zwischenergebnissen der einzelnen Iterationen, sieht das
für mich eher so aus als wäre das die Gauß-Seidel-Iteration.Kann das sein?
Und falls das wirklich die Jacobi-Iteration ist, wie würde dann
die Algorithmusskizze zur Gauß-Seidel-Iteration aussehen?Meinen Quellcode werd ich nachher noch posten, bin gerade noch
auf der Arbeit und habe Code nicht dabei.Edit:
Hier nun mein angeblicher Jacobi-Code:
void jacobi(){ float A[2][2] = { { 2, -1}, {-1, 2} }; float b[2] = {3, 4}; float x[2] = {0, 0}; float o[2] = {0, 0}; //altes Ergebnis für Abbruch bedingung int flag = 0; //Flag für Abbruch int iter = 0; //Iterationen zähler do { flag = 0; iter++; for (int i=0;i<2;i++) { x[i] = 0; for (int j=0;j<2;j++) { if (j != i) x[i] = x[i] + A[i][j] * x[j]; } x[i] = (b[i] -x[i]) / A[i][i]; //Wenn altes und neues auf 4 Stellen //genau gleich sind -> Abbruch if( fabs(x[i] - o[i]) < pow(10.0, -4)) flag++; //Ergebnis speichern o[i] = x[i]; cout<<"x"<<i<<" = "<<x[i]<<endl; } cout<<endl; }while(flag < 2); cout<<"Ergebnis nach "<<iter<<" Iterationen"<<endl; cout<<"x0 = "<<x[0]<<endl; cout<<"x1 = "<<x[1]<<endl; }
smilingman