2013-07-29 1 views
0

MATLAB의 상징적 도구 상자로 작업하고 있는데 파생 계수를 제거하는 데 문제가 있습니다. 아마도 MATLAB은 내가 원하는 것을 할 수 없습니다. 어쨌든, 나는 데 문제를 재현 코드는 다음과 같습니다 : 위의 코드 섹션에서MATLAB Symbolic coeffs issues

clear ; close all; clc; 
syms a b t 
x = sym('x(t)'); 
y = sym('y(t)'); 
syms a b; 

ra = a*cos(x); 
radot = diff(ra, t); 
xdot = diff(x,t); 
ydot = diff(y,t); 

% This one works as expected 
works = coeffs(radot(1), xdot) 
% This doesn't work as expected 
fails = coeffs(radot(1), ydot) 

댓글이 예상대로 작동하지 않습니다 어떻게 작동하고 무엇을 강조 표시합니다. 특히 출력은 다음과 같습니다.

radot = 
-a*sin(x(t))*diff(x(t), t) 
works = 
-a*sin(x(t)) 
fails = 
-a*sin(x(t))*diff(x(t), t) 

왜 이런 일이 발생했는지 또는 내가 잘못한 것을 알 수 있습니까?

답변

2

마지막 줄의 결과는 ydot에 대해 일정하므로 전체 식은 단일 계수 (상수)로 간주됩니다.

coeffs(radot(1), ydot)에 대한 귀하의 예상 결과는 어떻게됩니까?

0

coeffs은 의미가없는 것으로 보입니다. 도움을 봐. 그것은 미분 방정식이 하나의 변수 또는 다른 함수의 함수 인 다항식의 계수를 제공하도록 설계되었습니다. 당신이 xdotydot에 대한 미분을하려고 할 일 경우

, 당신은 할 수

ans = 

-a*sin(x(t)) 


ans = 

0 
을 반환이

syms z; % Subsitution variable for diff(x(t), t) and diff(y(t), t) 
diff(subs(radot(1),xdot,z),z) 
diff(subs(radot(1),ydot,z),z)