Symbol 도구 상자를 사용하여 Matlab에서 Lagrangian equations of motion을 도출하려고합니다. 이것은 함수와 좌표의 편미분을 포함하지만 matlab은 이것을 받아들이지 않는 것 같습니다.Matlab의 편미분 Lagrangian 운동 방정식을위한 Symbolic Toolbox
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에 불평 :
그래서 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