Asked by Maria Perdomo
on 13 Feb 2014

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?

Answer by Andrew Horchler
on 18 Nov 2014

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.

Sign in to comment.

Answer by Kobi
on 13 Feb 2014

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

Maria Perdomo
on 13 Feb 2014

Thats what I do, the problem is the syntaxis for

D(phi)(t)

that is a derivative function

Maria Perdomo
on 13 Feb 2014

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)

Sign in to comment.

Answer by Walter Roberson
on 13 Feb 2014

syms x3

subs( subs(dJ(t),D(phi),x3), x3(t), x2 )

Maria Perdomo
on 14 Feb 2014

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'.

Walter Roberson
on 14 Feb 2014

subs( subs(dJ(t),sym('D(phi)'),x3), x3(t), x2 )

Sign in to comment.

Opportunities for recent engineering grads.

Apply Today
## 0 Comments

Sign in to comment.