、Iは、エラーのメッセージは5Matlabの勾配
x=sym('x',[1,2,3,4,5]);
c=[1 2 4 3 5 3 4 5 4 3 4 34 5 6];
d=[1 0 1 0 0 1 1 1 0 0 0 1 0 1];
f [email protected](x) sum(-0.5*log(x(1))+x(1)*0.5*(x(2+d)/x(1)-c).^2-log(exp(x(2+d).*c+x(4+d))./(exp(x(2)*c+x(4))+exp(x(3)*c+x(5)))))
grad_f=gradient(f)
x
と次元のベクトルを関数f(x)
のシンボリック勾配を計算しなければならない: ''
未定義のオペレータ'' function_handle '型の入力引数の場合
gradient> parse_inputs(行146)のエラー f = f。 ';
勾配のエラー(行48) [f、ndim、loc、rflag] = parse_inputs(f、varargin);
エラーはどこですか?
文書では、 'gradient'関数が関数ハンドルではなく数値ベクトルをとることを暗示しています。http://www.mathworks.com/help/matlab/ref/gradient.html – Dan
@Dan記号的な' gradient ' – Yvon
シンボリック' gradient'はシンボリック関数 'f'を入力として受け入れます。あなたの定義は関数ハンドルです。 '@(x)'を削除してみてください。http://www.mathworks.com/help/symbolic/gradient.html – Yvon