我想完成下面的代碼是一個迭代代碼。是的,我終於開始工作了,但是當我把這些規定放在了旗幟,發現和底部時。與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