Вам не хватает параметра omega
.На вики-странице итерация выглядит следующим образом:
x(k+1) = x(k) + omega*( b - A*x(k) )
= (I - omega*A)*x(k) + omega*b
, где omega
- скалярный параметр, который должен быть выбран соответствующим образом.
Так что вам нужно изменить свой расчет на G
to:
G = eye(3)-omega*A;
и вычисление x
внутри цикла до:
x = G*x + omega*b;
На странице вики обсуждается, как можно выбрать значение omega
.В вашем конкретном случае omega = 0.1
, кажется, работает хорошо.