1
私はMatlabに関する知識が非常に限られています。一般的なニュートンラフソン関数を作成しようとしていますが、入力引数が足りないというエラーが表示されるたびに発生します。私のコードは、f(関数)、c0(初期推測)、n(ステップ数)の3つの入力が必要です。私は、コマンド・ウィンドウにこれを入れて、私はこの関数は、スクリプトファイルに一般ニュートンメソッド関数ファイルMatlab
[email protected](x)(sin((pi.*x)/2)+(1/x)-(10.*x));
を書かれている
function [c] = Q3(f,c0,n)
for i=1:n
c(0)=c0;
f=f(x);
fp=diff(f,x);
c(i)=c(i-1)-subs(f,x,c(i-1))/subs(fp,c(i-1));
end
disp(c)
[C] = Q3(G(x)は、1:これは、これまでの私のコードです、n)それはうまくいくと思っていますが、明らかに私のコードは動作する必要があります。 おかげ
コードが間違っています。 'subs'は記号置換のためのものです。関数を評価したい場合は' f(c(i-1)) 'を実行する必要があります。とりわけ、コードのほとんどは間違っています。 –
おそらく唯一の欠点は、 'f = f(x)'の前のシンボルとして 'x'を宣言して、関数からシンボル式に' f'を正しく変更することです。 – LutzL
@LutzLはい、しかしNRは数値的な方法なので、NRを象徴的に持つことは本当に賢明な考えではありません。シンボリックな表現があれば 'solve'を使って解くことができます。 –