В MATLAB, я должен вычислить символический градиент функции f(x)
с x
вектор размерности 5.Matlab градиент
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)
Сообщение об ошибке:
Не определено оператором «» 'для входных аргументов типа' function_handle '.
Ошибка в градиенте> parse_inputs (строка 146) f = f. ';
Ошибка в градиенте (строка 48) [f, ndim, loc, rflag] = parse_inputs (f, varargin);
Вы знаете, где ошибка?
Документы подразумевают, что функция «градиент» принимает числовой вектор, а не дескриптор функции: http://www.mathworks.com/help/matlab/ref/gradient.html – Dan
@ Dan существует символический градиент ' – Yvon
Символьный' градиент' принимает символическую функцию 'f' в качестве входного. ваше определение является дескриптором функции. попробуйте удалить '@ (x)' http://www.mathworks.com/help/symbolic/gradient.html – Yvon