1

ガウス・ザイデル反復法でシステムを解こうとしています。しかし、私はまた、使用された反復行列を答えとして受け取りたいと思います。私はこの方法を持っています

function [x0,iter] = gaussSeidel(A,b,iterMax,tol)

D = diag(diag(A));
Lower = -tril(A,-1);
Upper = -triu(A,1);
M = D - Lower;
N = Upper;
n = size(A);
n = n(1);
x0 = ones(n,1);
iter = 1;
for i = 1:1:iterMax
    iter = i;
    x = M\(N*x0+b);
    normC = norm(x-x0,inf);
    x0 = x;

    if normC <tol
        break
    end
end

反復行列((D-Lower)^(-1))* Upperの内容を知りたいのですが、そのためには逆行列を計算する必要があり、計算コストがかかります。値を取得する別の方法はありますか?

4

1 に答える 1

0

「\」は、逆関数を取ることによって線形定数係数システムを解くための最適化された方法です。係数行列の逆行列を確認したい場合は、次を使用する必要があります

inv(A)

それ以外の

A\b

逃げ道はありません!または、逆行列のN番目の列のみを処理している場合は、次を使用することもできます。

I=eye(n);
A\I(:,N);
于 2012-06-23T14:21:19.447 に答える