以下は、私が抱えている問題を一般化して説明するための簡単な例です。
次のような関数があるとします。
function newtraph(initialguess,funct,dfunct)
ht = funct(initialguess);
if abs(ht) < 10^(-6)
disp(initialguess); return
elseif abs(ht) > 10^6
disp('Fix Guess'); return
end
newtraph(initialguess-(ht/dfunct(initialguess)), funct, dfunct);
終了する唯一の方法 (私が知っている) は、これらの return ステートメントを使用することです。しかし、このようなさまざまな関数からの出力をベース ワークスペースの変数に割り当てたいと考えています。私は次のようなことをしたい:
function out = newtraph(initialguess,funct,dfunct)
ht = funct(initialguess);
if abs(ht) < 10^(-6)
out = initialguess; return
elseif abs(ht) > 10^6
disp('Fix Guess'); return
end
newtraph(initialguess-(ht/dfunct(initialguess)), funct, dfunct);
これは機能しませんreturn
。アウトが割り当てられないようにします。
Output argument "out" (and maybe others) not assigned
解決策について私が持っているいくつかのアイデアは、グローバルまたはevalin
. しかし、私が見逃している簡単な方法はありますか。このスタイルの関数からの出力をベース ワークスペースに戻したいだけですか?
念のためのテストケース:
funct=@(x) -x-cos(x); dfunct=@(x) sin(x)-1; initialguess=1;
御時間ありがとうございます。
まあ、私はばかです。それは単に最終的な割り当てを忘れたケースでした:
function out = newtraph(initialguess,funct,dfunct)
ht = funct(initialguess);
if abs(ht) < 10^(-6) %Tolerance
out = initialguess; return
elseif abs(ht) > 10^6
out=0; return
end
out = newtraph(initialguess-(ht/dfunct(initialguess)), funct, dfunct);
迅速な対応ありがとうございます。