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



我试图在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));

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

Matlab应该能够按照你写的那样做,但我认为它不喜欢对symfun求导。在命令窗口中输入whos,您将看到x被列为symfun,而t只是symdiff的帮助说明了这种限制。它不会尝试对一个常数对x(t)求导:diff(1,x)同样会"抱怨"。除非新版本的Matlab修复此问题(我在R2012b上),否则我认为您唯一的选择可能是使用x的两个实例提出一个方案。

最新更新