Substitute a differential expression for a variable subs()

3 次查看(过去 30 天)
I want to substitute in the following matrix result: A=[diff(theta(t),t) -diff(psi(t),t); -diff(theta(t),t) diff(psi(t),t)] I want to substitute diff(theta(t),t) for a variable called thetap and diff(psi(t),t) for a variable called psip in orden to obtain the following matrix A=[thetap -psip -thetap psip]
then I tried to do this:
theta2 = sym('theta2(t)') psi2 = sym('psi2(t)'
A=[diff(theta(t),t) -diff(psi(t),t); -diff(theta(t),t) diff(psi(t),t)]
dtheta = diff(theta,t) dpsi = diff(psi,t)
Ap_s = subs(A,{dtheta,dpsi},{thetap,psip})
but it doesn't work. It returns again the dependent expression diff(theta(t),t) and diff(psi(t),t) without doing the substitution. I've tried: Ap_s = subs(A,{diff(theta(t),t),diff(psi(t),t)},{thetap,psip}) but it doesn't work. Can anybody help me?

回答(1 个)

Adarsh
Adarsh 2025-1-29
Upon observing the given code, I have understood that you are trying to substitute the differential expressions in the matrix with shorter & new symbols.
I have found a workaround for the task which you are trying to accomplish, in the MATLAB documentation I have found a function named “str2sym” which converts the string version of a symbolic expression to original symbolic expression type.
Using this function, the expressions which are to be replaced can be given as input to the “subs” function as a cell array of symbolic types as shown here:
syms theta(t) t psi(t)
A=[diff(theta(t),t) -diff(psi(t),t); -diff(theta(t),t) diff(psi(t),t)] % Initial given matrix where substitution has to be done.
A = 
theta2 = str2sym('theta2(t)')
theta2 = 
psi2 = str2sym('psi2(t)')
psi2 = 
subs(A,{str2sym("diff(theta(t),t)"),str2sym("diff(psi(t),t)")},{theta2,psi2})% Using str2sym function to convert strings to symbolic expressions and pass them into subs as argument.
ans = 
by using this the required substitutions can be performed correctly as required.
Here is the link for the MATLAB documentation stating the usage of “str2sym” and “subs” functions :
  1. https://www.mathworks.com/help/symbolic/str2sym.html
  2. https://www.mathworks.com/help/symbolic/sym.subs.html
I hope this helps in achieving the desired output.

类别

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

标签

Community Treasure Hunt

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

Start Hunting!

Translated by