Matlab SOR方法实现

时间:2018-10-30 03:40:19

标签: matlab numerical-methods

使用零向量的初始近似值并且不考虑容差,我将代码缩短为仅需要4个参数。这样x1总是等于c,依此类推,x(k + 1)= x(k)T + c。

但是,该代码似乎并未产生您期望的正确近似值。有人注意到我搞砸了吗?假设DLU_decomposition(A)返回正确的矩阵。

function x = sor2(A,b,omega,kmax)
[D,L,U] = DLU_decomposition(A);
T=inv(D-omega*L)*(((1-omega)*D)+(omega*U));
c= (omega*inv(D-omega*L))*b;

for k=1:kmax,

    if(k==1),
        x=c;
    end
    x=T*x+c;

end
norm(A*x-b)
end

1 个答案:

答案 0 :(得分:0)

好吧,我猜所有的困惑都可能来自乘法。您需要按元素计算矩阵->使用.*代替普通的*。会提供正确的近似值吗?