计算一阶函数的导数

时间:2017-03-13 02:49:52

标签: matlab derivative

计算一阶函数的导数时遇到问题如下:

syms x(t)
xd = diff(x);
y = xd*xd;

如何用xd计算y的导数;

functionalDerivative(y,xd);

然后,它会引发如下错误:

Error using symengine
The variable 'diff(x(t), t)' is invalid.

结果应为:

2*diff(x,t)

我也认为名称xd是一个符号变量,然后使用diff(y,xd),但这种方式对某些情况并不好。我们有任何方法可以直接计算微分函数的导数吗? 请给我一些解决方案。 提前谢谢!

1 个答案:

答案 0 :(得分:1)

我发现符号引擎无法处理这个问题有点奇怪,缺少一个更好的词我会从TeX世界借用一个不可扩展的表达。但是,您可以通过subs来处理限制 - 在临时变量中获取导数,并subs将其重新输入:

>> syms u(t)
>> dydxd = subs(functionalDerivative(subs(y,xd(t),u(t)),u),u(t),xd(t))
dydxd(t) =
2*diff(x(t), t)

希望这种subs方法在大多数情况下都有效,但y的更复杂的表达式可能会使其失效。