Я пытаюсь получить Lagrangian equations of motion в Matlab, используя символическую панель инструментов. Это включает в себя частичные производные функции и ваших координат, но, похоже, Matlab этого не принимает.Частичная производная с Matlab Symbolic Toolbox для уравнений движения лагранжиана
Так что я хотел бы сделать это в 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);
Но как только я пытаюсь различать что-либо в х (или диф (х, т)), 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));
Кто-нибудь знает правильный способ справиться с этим?
Итак, используя функцию «subs» для переключения между symfun и sym версиями x, D (x) и т. Д.? –
Да, я думаю, что это возможно с помощью 'subs', хотя и запутанного. См. [Эту тему в Matlab Central] (http://www.mathworks.com/matlabcentral/newsreader/view_thread/312204), например. Вы также можете посмотреть, что делает [этот файл обмена файлами] (http://www.mathworks.com/matlabcentral/fileexchange/23037-lagranges-equations/content/Lagrange.m). – horchler