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]); }}
}