Changing a symbolic differentiation term to a variable.

20 views (last 30 days)
The issue I have ran into is that I have taken a symbolic derivative and I am hoping to simpliy the naming format. This is a sample of the code that I am doing currently and the output I am getting.
Input:
syms t phi(t)
phi = phi(t);
M = [cos(phi) (-sin(phi)) 0
sin(phi) cos(phi) 0
0 0 1];
M_dot = diff(M,t)
Output:
M_dot =
[ -sin(phi(t))*diff(phi(t), t), -cos(phi(t))*diff(phi(t), t), 0]
[ cos(phi(t))*diff(phi(t), t), -sin(phi(t))*diff(phi(t), t), 0]
[ 0, 0, 0]
My goal is to be able to rename the "diff(phi(t),t)" so that it simplifies my longer matrices. I have tried the subs(s, new, old) function and it returned an error so I need to find a different way.
Let me know what you all think. Thank you.

Accepted Answer

Walter Roberson
Walter Roberson on 8 Nov 2019
syms dphi_dt
subs(M_dot, diff(phi), dphi_dt)
However, if you have multiple derivative levels, this will not find them. For example if you had diff(phi,t,t) then this would leave that alone rather than constructing diff(dphi_dt,t) or diff(dphi_dt(t),t)
Also, be careful: differentiating the result with respect to t will treat dphi_dt as a constant unless you do
syms dphi_dt(t))
subs(M_dot, diff(phi), dphi_dt)

More Answers (0)

Categories

Find more on Loops and Conditional Statements in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!