【问题标题】:Partial derivative with Matlab Symbolic Toolbox for Lagrangian equations of motionMatlab Symbolic Toolbox 对拉格朗日运动方程的偏导数
【发布时间】:2013-06-19 02:49:01
【问题描述】:

我正在尝试使用符号工具箱在 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));

有人知道正确的处理方法吗?

【问题讨论】:

    标签: matlab symbolic-math derivative


    【解决方案1】:

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

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-25
    • 1970-01-01
    相关资源
    最近更新 更多