如何计算Gauss Seidel中的迭代矩阵

时间:2012-06-07 22:10:51

标签: matlab matrix linear-algebra

我试图通过Gauss-Seidel迭代法解决系统问题。但我也希望收到使用的迭代矩阵作为答案。我有这个方法

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 中的什么,但为此我必须计算逆,这在计算上是昂贵的,还有另一种获得价值的方法吗?

1 个答案:

答案 0 :(得分:0)

“\”是一种通过逆向求解线性常系数系统的优化方法。 如果要查看系数矩阵的反函数,则必须使用

inv(A)

而不是

A\b

没有出路!或者,如果您只处理逆矩阵的 N th 列,那么您也可以使用

I=eye(n);
A\I(:,N);