Я пытаюсь использовать уравнение Лагранжа для вывода ma = -kx
из кинетической и потенциальной энергии массы на пружине, однако я сталкиваюсь с ошибками ниже в обеих следующих частях кода. Я понимаю, что ошибка говорит о том, что я не могу использовать символическую переменную в качестве второго аргумента diff
, но в справочных документах MATLAB говорится, что для частных производных вы пишете в этом формате?
Метод 1:
clear
clc
syms m K t x(t) x_dot(t)
T = 0.5 * m * x_dot^2
V = 0.5 * K * x^2
L = T - V
temp = diff(L, x_dot)
Метод 2:
clear
clc
syms m K t x(t) x_dot
x_dot = diff(x)
T = 0.5 * m * x_dot^2
V = 0.5 * K * x^2
L = T - V
temp = diff(L, x_dot)
Ошибка:
Error using sym/diff (line 26)
Arguments, except for the first, must not be symbolic functions.
Если я удаляю (t)
из символического инициализатора для x
, тоошибка исчезает, но, насколько я знаю, мне понадобится x
, чтобы быть в терминах t
позже по линии, поскольку я буду дифференцировать x_dot
относительно t
, чтобы получить ускорение.
РЕДАКТИРОВАТЬ ...
Это то, что я хотел достичь, однако я не знаю, можно ли это сделать без введения подстановок?
clear
clc
syms m K t x(t) v p
x_dot = diff(x);
T = 0.5 * m * x_dot^2;
V = 0.5 * K * x^2;
L_sym = T - V;
L1 = subs(L_sym, x_dot(t),v);
L = subs(L1, x(t), p);
temp = diff(L(t), v);
LHS = diff(subs(temp, v, x_dot(t)) / diff(t));
RHS = subs(diff(L(t), p), p, x(t));
eqn = LHS == RHS