Matlab SOR方法实现



使用零向量的初始近似值,不考虑公差,我将代码缩短为只需要4个参数。使得x1总是等于c,依此类推,通过方程x(k+1(=x(k(T+c。

然而,代码似乎没有产生您所期望的正确近似值。有人注意到我在哪里搞砸了吗?假设DLU_分解(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

我猜所有的困惑可能都来自乘法运算。您需要按元素计算矩阵-->使用.*而不是普通的*。这能提供正确的近似值吗?

相关内容

  • 没有找到相关文章

最新更新