我有一个关于在 Octave 上运行 SOR 算法的学校项目,但我的效率非常低。所以我有这段代码:
for ii=1:n
r = 1/A(ii,ii);
for jj=1:n
if (ii!=jj)
A(ii,jj) = A(ii,jj)*r;
end;
end;
b(ii,1) = b(ii,1)*r;
x(ii,1) = b(ii,1);
end;
我怎样才能矢量化这个?我的第一次尝试是这样的:
for ii=1:n
r = 1/A(ii,ii);
A(find(eye(length(A))!=1)) = A(find(eye(length(A))!=1))*r;
b(ii,1) = b(ii,1)*r;
x(ii,1) = b(ii,1);
end;
但我不确定它有多大帮助。有没有更好和/或更有效的方法来做到这一点?
谢谢!