我有一个函数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 的开发人员不能就这么悬着这么大的尾巴,对吧?
我真的很感谢你的帮助。谢谢!