MATLAB: символическое дифференцирование f по x(t)?
У меня есть функция f(x(t))=sin(x(t))
что я хотел бы дифференцировать в MATLAB иногда в отношении t
иногда в отношении x(t)
, В MATLAB я ввожу:
>> syms x(t);
>> f=sin(x(t));
>> diff(f,t)
ans =
cos(x(t))*diff(x(t), t)
Однако, когда я различаю по отношению к x(t)
Я получил:
>> diff(f,x)
Error using sym/diff (line 26)
All arguments, except for the first one, must not be symbolic functions.
Обходной путь должен сделать:
>> syms temp;
>> subs(diff(subs(f,{x},{temp}),temp),{temp},{x})
ans =
cos(x(t))
Однако для больших функций, с которыми я на самом деле имею дело в моем коде, subs
очень медленный - это узкое место в моем коде. Конечно, есть способ напрямую сделать diff(f,x)
?! Я имею в виду, что разработчики в MathWorks не могли просто оставить такой огромный хвост свисающим, верно?
Я действительно ценю твою помощь. Спасибо!