我使用 Gauss-Seidel 方法解决了以前的线性系统。现在我正在尝试为 10 种不同的欧米茄值添加过度松弛。我已将 GS 方法编码为以下函数:
function [x,m,res]=GaussSeidel(x,A,B,maxit,toll); %Defining GS as a function
res=sum(abs(B-A*x))/sum(abs(diag(A).*x));
m=0;
while (res>toll & m<maxit);
m=m+1;
for i=1:numel(x);
x(i)=B(i)/A(i,i)-A(i,1:i-1)/A(i,i)*x(1:i-1)-A(i,i+1:end)/A(i,i)*x(i+1:end);
end
res(m)=sum(abs(B-A*x))/sum(abs(diag(A).*x));
end
我正在尝试将这个等式实现为x(i)
x(i)=x(i+1:end)+omega(-A(i,1:i-1)/A(i,i)*x(1:i-1)-A(i,i+1:end)/A(i,i)*x(i+1:end)+B(i)/A(i,i))
我知道omega > 1
过度放松,但我真的坚持如何在 GS 函数中实现过度放松。