0

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

4

0 に答える 0