私は MATLAB で時々 に関して、時にはf(x(t))=sin(x(t))
に関して微分したい関数を持っています。MATLAB では、次のように入力します。t
x(t)
>> 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))
ただし、コードで実際に扱う大きな関数の場合、非常に遅くなります。これがコードのボトルネックです。確かに直接行う方法はありますか?! つまり、MathWorks の開発者は、このような巨大な尻尾をぶら下げたままにしておくわけにはいきませんよね?subs
diff(f,x)
本当にありがとうございました。ありがとうございました!