Происходит нечто совершенно невозможное. Я запускал следующий код несколько раз на одной и той же матрице и всегда сходился к решению с использованием метода Гаусса Зайделя в течение 10 итераций.
Мое определение функции Гаусса Зайделя:
function xnew = gauss_seidel(A, b, xold)
n = size(A)(1);
At = A;
xnew = xold;
for i = 1 : n
At(n, n) = 0;
end
for i = 1 : n
xnew(i) = (b(i) - At(i, :)*xnew)/A(i, i);
end
endfunction
Настройка матрицы коэффициентов, вектора решения и начального приближенного вектора:
A = [20 1 -1; 1 -10 1; -1 1 10];
b = [17 13 18]';
x = [0 0 0]';
Используя метод Гаусса Зейделя:
>> x = gauss_seidel(A, b, x)
Test
x =
0.85000
-1.21500
2.00650
>> x = gauss_seidel(A, b, x)
Test
x =
0.16107
0.13176
1.80293
>> x = gauss_seidel(A, b, x)
Test
x =
0.77248
-1.17422
1.99467
>> x = gauss_seidel(A, b, x)
Test
x =
0.235961
0.097279
1.813868
и т.д ... и т.д ... Может кто-нибудь подсказать мне, какую ошибку я допускаю, которая не позволяет моему коду сходиться?