2013-07-29 4 views
0

Я работаю с символическим набором инструментов MATLAB, и у меня возникают проблемы с извлечением коэффициентов производных. Возможно, MATLAB не может делать то, что я ищу. Во всяком случае, код, который воспроизводит меня вопрос приведен ниже:MATLAB Символические проблемы с коэффициентами

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 для чего-то, для чего он не предназначен. Посмотрите на помощь. Он призван дать коэффициенты полинома, а не дифференциальное уравнение является функцией одной переменной.

Если вы случайно пытаетесь взять производную по xdot и ydot, вы можете сделать это

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) 

который возвращает

ans = 

-a*sin(x(t)) 


ans = 

0 
Смежные вопросы