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 не могли просто оставить такой огромный хвост свисающим, верно?

Я действительно ценю твою помощь. Спасибо!

0 ответов

Другие вопросы по тегам