2
Я пытаюсь реализовать метод Гаусса-Зейделя в MATLAB. Но есть две главные ошибки в своем коде, и я не мог их исправить:Метод Гаусса-Зейделя в MATLAB
Мой код сходится очень хорошо на маленьких матрицах, но она никогда не сходится на больших матрицах.
Код делает избыточные итерации. Как я могу предотвратить избыточные итерации?
Gauss-Seidel Method on wikipedia.
N=5;
A=rand(N,N);
b=rand(N,1);
x = zeros(N,1);
sum = 0;
xold = x;
tic
for n_iter=1:1000
for i = 1:N
for j = 1:N
if (j ~= i)
sum = sum + (A(i,j)/A(i,i)) * xold(j);
else
continue;
end
end
x(i) = -sum + b(i)/A(i,i);
sum = 0;
end
if(abs(x(i)-xold(j))<0.001)
break;
end
xold = x;
end
gs_time=toc;
prompt1='Gauss-Seidel Method Time';
prompt2='x Matrix';
disp(prompt2);
disp(x);
disp(prompt1);
disp(gs_time);