に動作していませんこの関数は)この場合は、私は、次の3つの機能に分かれコードを持っているオクターブ/ Matlabの
function y=df(i)
syms x,diff(f(x),x);
subs(ans,x,i);
y = ans;
endfunction
newton.m
(maxIt
試行= MAX)
function [x1,nIt] = newton (f,df,x0,tol,maxIt)
k=0;
x=x0;
nIt = 0;
while (k<maxIt)
if(df(x)== 0)
fprintf("La derivada, da resultado 0");
k=maxIt;
else
i = x - (f(x)/df(x))
x = i;
nIt = nIt + 1
k=k+1;
endif
end
endfunction
[OK]を、私は、コマンドを実行しnewton(@f,@df,0,10,2)
。プログラムの3分の2は正常に動作しますが、df(0)
を実行すると、結果は0
ですが、if
は機能しません。私はdf(0)
が0を返すことを確認しました。それは問題ありません。
MATLAB/Octaveの新機能です。
あなたの問題は何ですか? 「どうしたらいい?」という意味は何ですか?あなたのコードを使用すると、df(0)== 0であるため、メッセージが期待どおりに表示されます。これはあなたの極値を見つけたことを意味します。そしてbtw:あなたのスクリプトで "ans"を使用しないでください.... – Andy