怎么避免在matlab中矩阵运算出现NaN呀? 我是在用雅可比迭代法计算一...
发布网友
发布时间:2024-03-24 04:47
我来回答
共1个回答
热心网友
时间:2024-03-28 14:39
b取zeros(20,1)的时候,
由x=zeros(size(b)),即x初值为0和
x=D\((D-A)*x+b),即x每次迭代后仍为0可知,x始终为0,没有问题。
b去ones(20,1)的时候,x出现NaN只可能由于这一句x=D\((D-A)*x+b)的分母为0,
即某次迭代的时候出现判断 (diag(diag(A))-A)*x==-b,返回值为1。但是按理来说这样迭代是不会出现这种情况的,所以请尝试将循环部分代码改为:
c=0;
for iter=1:N
x=D\((D-A)*x+b);
if (D-A)*x==-b
c=c+1;
end
err=norm(b-A*x)/norm(b);
if err<ep, break; end
end
运行看看c的值。