用于拉格朗日运动方程的Matlab符号工具箱的偏导数

时间:2013-06-18 18:06:52

标签: matlab symbolic-math derivative

我正在尝试使用符号工具箱在Matlab中派生Lagrangian equations of motion。这涉及函数和坐标的偏导数,但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));

有谁知道处理此问题的正确方法?

1 个答案:

答案 0 :(得分:1)

Matlab应该能够像你写的那样做到这一点,但我认为它不喜欢使用symfun的衍生物。在命令窗口中输入whos,您会看到x列为symfunt只是symdiff类型的帮助表明了这种限制。尝试将x(t)diff(1,x)“抱怨”的常量的导数设为相同,这不是事件。除非更新版本的Matlab修复此问题(我在R2012b上),我认为你唯一的选择可能是使用x的两个实例来提出一个方案。