Na zajęciach w szkole mam za zadanie zaimplementować algorytm Gaussa–Seidela w Javie. Sam algorytm wydaje się prosty jednak po zaimplementowaniu, wyniki obliczeń są niepoprawne. Prosił bym o pomoc w znalezieniu błędów, sam siedzę już nad tym któryś dzień i nic nie widzę.

Algorytm według którego piałem:

input n, (aij),(bi),(xi),M

for k=1 to M do
for i=1 to n do
(xi)<--(bi-Suma( j=1 do n j różne od i)aijxi)/aii
end do
output k, (xi)
end

 
package seidela;

public class seidl {

       /**
        * @param args
        */
       public static void main(String[] args) {
               double[][]A=new double[][]{{2,-1,0},
                                  {1,-6,-2},
                                  {4,-3,8}};
double[]b=new double[]{2,-4,5};

int n=b.length;
double[]x=new double [n];
 int M=13; //liczba kroków
for (int k=0;k<=M;k++){
       for (int i=0;i<n;i++){
               x[i]=b[i];
               double suma=0;
               for(int j=0;j<n;j++){
                               if(i!=j){
                       suma=suma+A[i][j]*x[j];
                                       }
               }
               x[i]=x[i]-suma;
               x[i]=x[i]/A[i][i];
       }
}
for (int i=0; i<n; i++){
   System.out.println("Wynik: " + x[i]); }}


}