Как вы выполняете символическое дифференцирование на дескрипторе функции?
Скажите, если я определяю следующее:
g = @(x) x/sqrt(x^2+1)
Как мне получить производную функцию для g, которую я могу использовать для оценки в разных точках?
Я попробовал символический математический инструментарий и попробовал следующее:
>> syms x
>> f = x/sqrt(x^2+1)
f =
x/(x^2 + 1)^(1/2)
>> diff(f)
ans =
1/(x^2 + 1)^(1/2) - x^2/(x^2 + 1)^(3/2)
Однако я не могу понять, как превратить это в дескриптор функции/оценивать в разных точках. Тем не менее, я предпочитаю делать дифференциацию на function_handle.
Большое спасибо!
Джейсон
Ответы
Ответ 1
Вы можете использовать matlabFunction, чтобы преобразовать символическое уравнение в функцию. Например:
syms x1 x2;
f1 = x1^2+x2^2;
Df1 = jacobian(f1, [x1 x2]);
Df1 = matlabFunction(Df1);
Тогда Df1 (0, 0) возвращает [0 0], как ожидалось.
Функция matlabFunction была введенная в версия 5.2 (R2009a) Symbolic Math Toolbox.