我想完成下面的代码是一个迭代代码。是的,我终于开始工作了,但是当我把这些规定放在了旗帜,发现和底部时。与else语句错误(输出参数)的matlab迭代
我现在得到“输出参数”错误“(也可能是其他人)在调用”jacobi“期间未分配。
我知道它与标志= 0而不是1的else语句有关,因为一切工作正常,直到我试图把其他编码放入并且现在 我得到这个错误。任何帮助将非常感激。
当我进入代码它的工作原理与正确的答案和矩阵 值。当我在if if flag = 1的时候,它会跳到else部分,打印出我希望它打印出来的所有内容,然后当绿色箭头进入最后一个结束语并带有函数时,我会弹出 点击下一步,它会发出上述错误。
它怎么能一直工作到最后的结束语。我必须缺少 的东西。我对此很陌生,所以如果这件事很简单,请原谅我。
function [x error niter flag ] =jacobi(A,x,b,maxiter, tol)
if isrow(x)==1
x=x';
end
if isrow(b)==1
b=b';
end
if n ~= m
disp('The matrix has to be square for this function, please enter a
matrix that is sqaure');
end
index=1;
Dinv= inv(diag(diag(A)));
D=diag(diag(A));
flag=0;
y=x;
while index <= maxiter
z = Dinv*((D-A)*y+b);
if norm(z-y)<tol
flag=1;
err=abs(norm(z-y));
break
end
y=z;
index=index+1;
end
if flag==1
niter=index;
x=z;
error=err;
else
maxindex='you have reached the maximum iterations of %d which is larger
than %d.';
niter=index;
maxiter=maxiter;
sprintf(maxindex,niter,maxiter);
end
end
当'flag'为0,则表示没有分配任何东西'error',所以函数不知道该输出什么。你必须改变该变量的名称,“错误”是一个保存的词,并可能导致不可预知的行为。 – Adiel