Используя начальное приближение нулевого вектора и не учитывая допуск, я сократил код до 4 аргументов. Так что x1 всегда равно c и т. Д. По уравнению x (k + 1) = x (k) T + c.
Однако код, похоже, не дает правильных приближений, которые вы ожидаете. Кто-нибудь замечает, где я запутался? Предполагая, что DLU_decomposition (A) возвращает правильные матрицы.
function x = sor2(A,b,omega,kmax)
[D,L,U] = DLU_decomposition(A);
T=inv(D-omega*L)*(((1-omega)*D)+(omega*U));
c= (omega*inv(D-omega*L))*b;
for k=1:kmax,
if(k==1),
x=c;
end
x=T*x+c;
end
norm(A*x-b)
end