0
我似乎无法找到修复我的无限循环。我编写了一个Jacobi求解器来求解一个线性方程组。雅可比求解器进入无限循环
这里是我的代码:
function [x, i] = Jacobi(A, b, x0, TOL)
[m n] = size(A);
i = 0;
x = [0;0;0];
while (true)
i =1;
for r=1:m
sum = 0;
for c=1:n
if r~=c
sum = sum + A(r,c)*x(c);
else
x(r) = (-sum + b(r))/A(r,c);
end
x(r) = (-sum + b(r))/A(r,c);
xxx end xxx
end
if abs(norm(x) - norm(x0)) < TOL;
break
end
x0 = x;
i = i + 1;
end
当我终止它在该行与XXX结束代码
你怎么知道它是无限的? 'A'的大小是多少?当用循环遍历矩阵时,Matlab出了名的慢。如果可以的话,最好是将工作向量化。 – 2015-02-11 00:20:55
A是3x3。我认为这不应该花很长时间 – user3681755 2015-02-11 00:22:03
你的循环没有达到break语句。它可能是'if abs(norm(x) - norm(x0))
2015-02-11 00:40:23