1

我正在尝试使用符号工具箱在 Matlab 中推导拉格朗日运动方程。这涉及函数和坐标的偏导数,但 matlab 似乎不接受这一点。

所以我会在 Matlab 中这样做:

syms t x(t)             % t: time, x(t) position dependent on time
m = sym('m');           % mass, a constant parameter
T = m/2*diff(x,t)^2;    % kinetic energy
dTdx = diff(T,x);
ddTdxDotdt = diff( diff(T,diff(x,t)), t);

但是,一旦我尝试区分 x(或 diff(x,t))中的任何内容,Matlab 就会抱怨:

Error using mupadmex
Error in MuPAD command: The variable is invalid. [stdlib::diff]

Error in sym/diff (line 44)
R = mupadmex('symobj::diff', S.s, x.s, int2str(n));

有谁知道处理这个的正确方法?

4

1 回答 1

1

Matlab 应该能够按照您编写的那样执行此操作,但我认为它不喜欢对 a 求导数symfun。在命令窗口中输入whos,你会看到它x被列为一段symfun时间t只是一个sym. kind of的帮助diff表明了这种限制。它不会尝试对常数求导x(t)diff(1,x)“抱怨”是一样的。除非较新版本的 Matlab 解决了这个问题(我在 R2012b 上)我认为你唯一的选择可能是想出一个使用两个实例的方案x

于 2013-06-18T18:40:25.257 回答