0
私は(配列としてx
付き)匿名関数以下のいる配列入力を持つ無名関数の勾配:偏微分/
f = @(x) 312*x(2) - 240*x(1) + 30*x(3) - 24*x(4) + 282*x(1)*x(2) + 30*x(1)*x(3) + 18*x(1)*x(4) + 54*x(2)*x(3) + 6*x(2)*x(4) + 6*x(3)*x(4) + 638*x(1)^2 + 207*x(2)^2 + 6*x(3)^2 + 3*x(4)^2 + 4063
私は、この関数の勾配を作り、将来の使用のためにそれを保存したいです。また、配列入力もあります。
X = [ 0;...
0;...
0;...
0];
F = f(X)
G = g(X)
このタイプの機能でこれをアーカイブすることはできますか?あるいは、どういうわけかdiffコマンドでそれを作ることは可能でしょうか?このようなもの:
g = [diff(f, x(1));...
diff(f, x(2));...
diff(f, x(3));...
diff(f, x(4))]
おかげで、正しく計算勾配。しかし、私は自分のコードでこれを実行する問題があります - http://pastebin.com/ahZR4Le3(勾配法で最小限の関数を検索する) '添え字インデックスは、正の整数または論理でなければなりません。 sym/subsref(行805)のエラー R_tilde =組み込み( 'subsref'、L_tilde、Idx); fminsearch(189行目)のエラー fv(:、1)= funfcn(x、varargin {:});エラーのグラデーションでエラー> @(a)f(D * a + X) ; 勾配のエラー(行45) [a、y] = fminsearch(fa、0); ' – Gumaa
匿名関数' gd = matlabFunction(g) 'をシンボリックなものの代わりに使うべきでしょうか?しかし、私はあなたのコードをデバッグしません。新しい簡潔な質問をしてください。上のコードは機能しますが、あなたはあなたがどの部分を続ける必要があるかを知る必要があります。 – thewaywewalk