私は反復コードである以下のコードを完成しようとしています。はい、私はついにそれを働かせましたが、私はフラッグのために規定を入れたときに、見つけたと底を見つけました。else文のエラー(出力引数)を伴うmatlab反復
"jacobi"への呼び出し中に出力引数 "error"(およびその他のもの)が割り当てられていません。 "
else文を入れようとするまで、すべてがうまく動作していたので、flag = 0の代わりにelse文を使用しなければならないことが分かりました。 このエラーが発生します。どんな助けも非常に高く評価されるでしょう。
私がコードにステップインすると、正しい答えと行列 の値ですべての方法で動作します。私は最後のifフラグ= 1のための文章では、elseセクションにスキップし、印刷したいものをすべて印刷してから、 緑色の矢印が関数とiで最後の終了文に行くと次へをクリックすると、上記のエラーが表示されます。
どのように最終的な終わりのステートメントまでのすべての方法を動作させることができます。私は逃している必要があります 何か。私はこれに新しいので、これは簡単なことなら私を許してください。
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