Symbolic math- substitute a derivative function with subs()?

Hello everyone,
I've got a symbolic derivative :
syms J phi(t) Ja J0 x1 x2
J=J0-Ja*cos(2*phi);
dJ=diff(J)
This yields:
dJ(t)=2*Ja*D(phi)(t)*sin(2*phi(t))
Now, in this function I want to substitute phi(t) for x1 and D(phi)(t) for x2.
subs(dJ(t),phi,x1)
ans =
2*Ja*D(phi)(t)*sin(2*x1)
but this doesnt work for D(phi)(t)
>> subs(dJ(t),D(phi)(t),x2)
Error: ()-indexing must appear last in an index expression.
>> subs(dJ(t),D(phi),x2)
Undefined function 'D' for input arguments of type 'symfun'.
>> subs(dJ(t),D(phi(t)),x2)
Undefined function 'D' for input arguments of type 'sym'.
How could it be substituted by x2?

답변 (3개)

Andrew Horchler
Andrew Horchler 2014년 11월 18일
A late answer, but maybe this will help others. See my answer here on StackOverflow.com/Matlab. In this case you can substitute both variable at once via:
syms phi(t) Ja J0 x1 x2
J = J0-Ja*cos(2*phi);
dJ = diff(J,t)
dphi = diff(phi,t)
subs(dJ,{phi,dphi},{x1,x2})
You also don't need to define J as symbolic using syms since it gets allocated as such when you create the equation. I do usually like to make explicit the variable that I'm differentiating with respect to as well.
Kobi
Kobi 2014년 2월 13일

0 개 추천

why don't you sub one char at a time?

댓글 수: 2

Thats what I do, the problem is the syntaxis for
D(phi)(t)
that is a derivative function
I do one at a time, you see it works for phi(t):
dJ(t)=2*Ja*D(phi)(t)*sin(2*phi(t))
subs(dJ(t),phi,x1)
ans =
2*Ja*D(phi)(t)*sin(2*x1)

댓글을 달려면 로그인하십시오.

Walter Roberson
Walter Roberson 2014년 2월 13일
syms x3
subs( subs(dJ(t),D(phi),x3), x3(t), x2 )

댓글 수: 2

syms J phi(t) Ja J0 x1 x2 x3
J=J0-Ja*cos(2*phi);
dJ=diff(J);
subs( subs(dJ(t),D(phi),x3), x3(t), x2 )
>>Undefined function 'D' for input arguments of type 'symfun'.
subs( subs(dJ(t),sym('D(phi)'),x3), x3(t), x2 )

댓글을 달려면 로그인하십시오.

카테고리

도움말 센터File Exchange에서 Symbolic Math Toolbox에 대해 자세히 알아보기

질문:

2014년 2월 13일

답변:

2014년 11월 18일

Community Treasure Hunt

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

Start Hunting!

Translated by