我试图在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
只是sym
。diff
的帮助说明了这种限制。它不会尝试对一个常数对x(t)
求导:diff(1,x)
同样会"抱怨"。除非新版本的Matlab修复此问题(我在R2012b上),否则我认为您唯一的选择可能是使用x
的两个实例提出一个方案。