Symbolic Math Toolbox - Derive a function with respect to another function

2 次查看(过去 30 天)
Hello,
i want to verify a calculation I did already on paper. There the following problem occurs:
>> clear all
>> syms t x(t)
>> f=3*x
>> diff(f,x)
Error using sym/diff (line 26)
All arguments, except for the first one, must not be symbolic functions.
I want to derive a funtion woth respect to another function of time. And i even need the derivation of a function with respect to another derivative of a function of time.
I need this because I want to get the equations of motion of a system by using Lagrange equations of the second kind .
Can anybody help me with this problem? Thanks a lot. Johannes

回答(2 个)

Zoltán Csáti
Zoltán Csáti 2014-10-23
编辑:Zoltán Csáti 2014-10-23
I also bumped into this question when I wanted to create the equation of motion using this method. Matlab's Symbolic Math Toolbox uses the Maple engine, so you can try the following: Physics:diff(L(t), ydot(t)), where L(t) is the Lagrangian that you want to differentiate with respect to the time derivative of coordinate y(t). I stress again, that this code is in Maple. As I see from your error message, it can't be done in Matlab. Therefore use Maple or do it by hand.
  2 个评论
mistajojo
mistajojo 2014-10-23
I found solve it in matlab. Maybe it's not the best way, but it works anyway. The solution is to substitute x(t) by another variable. I built a own function which does this:
function [f_out] = diff2(f_in,ableiten)
syms substitute;
f_zwischen=subs(f_in,ableiten,substitute);
f_zwischen_diff=diff(f_zwischen,substitute);
f_out=subs(f_zwischen_diff,substitute,ableiten);
end
But be careful. For some reason it only works properly if it is typed like this:
diff2(f,x(t))
If it is typed like the following statement it wont work properly !
diff2(f,x)

请先登录,再进行评论。


Joan Sans
Joan Sans 2018-6-26
it works perfect! Thanks

类别

Help CenterFile Exchange 中查找有关 Calculus 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by