MATLAB稀疏矩阵:Gauss Seidel和使用带CSR的稀疏矩阵的幂方法(压缩稀疏行)

时间:2014-10-12 18:54:10

标签: matlab matrix sparse-matrix

这是我第一次来这里,所以我希望有人可以帮助我。  我尝试使用存储CSR或称为莫尔斯存储的矩阵来实现Gauss-Seidel方法和电源方法。不幸的是,我无法做到比以下代码做得更好:

GS-MORSE:

function [y] = gs_morse(aa, diag, col, row, nmax, tol)

[n, n] = size(A);

y = [1, 1, 1, 1];

m = 1;

while m < nmax,

    for i = 1: n,
        k1 = row(i);
        k2 = row(i + 1) - 1;
        for k = k1: k2,
            y(i) = y(i) + aa(k) * x(col(k));
            y(col(k)) = y(col(k)) + aa(k) * diag(i);
        end
        k2 = k2 + 1;
        y(i) = y(i) + aa(k) * diag(i);
    end
    if (norm(y - x)) < tol
        disp(y);
    end
    m = m + 1;
    for i = 1: n,
        x(i) = y(i);
    end
end

POWER-MORSE: 我只能实现幂方法,但我不明白如何使用前一个矩阵...所以我的幂方法代码是:

function [y, l] = potencia_iterada(A, v)

numiter=100;

eps=1e-10;

x = v(:);

y = x/norm(x);

l = 0;

for k = 1: numiter,

    x = A * y;
    y = x / norm(x);
    l0 = x.' * y;
    if abs(l0) < eps
      return
    end
    l = l0;
end

请有人帮我完成这些代码或者可以解释我该怎么做?我真的不明白该怎么做。非常感谢你

0 个答案:

没有答案