以前の線形システムを解くためにガウス・ザイデル法を使用しました。今、私はオメガの 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 関数に実装する方法に本当にこだわっています。