gr = 9.81; %gravity
syms phi(t) m l
theta=1/3*m*l^2;
phidot=diff(phi,t);
U=m*gr*l/2*cos(phi);
T=1/2*theta*phidot^2+(1/2*phidot*l)^2*m;
L=T-U;
frst=diff(L,phidot);
代码如上所示。正如你所看到的,phi(t)是符号时间相关函数,phidot是它的导数(也是时间相关的)。L是使用这些符号函数获得的。所以,问题是我不能在Matlab中根据phidot推导L。错误如下:
Error using sym/diff (line 26)
All arguments, except for the first one, must not be **symbolic** functions.
Error in pndlm (line 11)
frst=diff(L,phidot)
有没有什么方法可以用另一个符号函数来推导符号函数?如果没有,你能不能给我另一个避免这种错误的方法?
1条答案
按热度按时间pcww981p1#
this可能重复
如果你想求L对q的微分,q必须是一个变量,你可以用subs来代替它,然后再计算d/dt(dL/dq ')。
记住这些导数都是偏导数,因此只要显式地包含变量,就可以得到表达式。