How to Make Complex Symbolic Variable Change?

Hello! Imagine I have a very long equation with many variables, like the example bellow
eq = 0.001*(wr + wl) + 2*z + 1.5*z == -2wp
How can I force matlab to make the following change of variable:
Y = 0.1*(wr + wl) ?
I mean, I need matlab to group the equation (eq) into 0.1*(wr + wl) and replace those terms by Y. In the example above, the result should be:
eq = 0.01*Y + 2*z + 1.5*z == -2wp
Thanks a lot!

 Risposta accettata

madhan ravi
madhan ravi il 24 Nov 2018
Modificato: madhan ravi il 24 Nov 2018
>> syms wr wl z wp Y
eq = 0.001*(wr + wl) + 2*z + 1.5*z == -2*wp
eq=subs(eq,0.001*(wr+wl),0.01*Y)
eq =
wl/1000 + wr/1000 + (7*z)/2 == -2*wp
eq =
Y/100 + (7*z)/2 == -2*wp
>> vpa(eq)
ans =
0.01*Y + 3.5*z == -2.0*wp
>>

3 Commenti

Hello madhan! Thank you for your answer! I thought about this solution too! The only problem here is that i need to know the term 0.001*(wr + wl) in order to make the exact substitution. However, if my equation is too long, I would need to make the substitution for each individual term. Let's take another equation as an example:
syms wr wl z wp Y x
eq = 0.001*(wr + wl) + sin(2*x)*2.5*(wr + wl)^2 + 0.9*(wr + wl)^2 + 2*z + 1.5*z == -2*wp
subs(eq,0.001*(wr+wl),0.01*Y)
In this case, subs(eq,0.001*(wr+wl),0.01*Y) would only replace the first term. What I wanna knoe is if there is a generic way to force matlab replace Y = 0.1*(wr + wl) in any situation.
Your idead pointed me to the right solution! Thanks a lot! I just need to do the opposit:
syms wr wl z wp Y x
eq = 0.001*(wr + wl) + sin(2*x)*2.5*(wr + wl)^2 + 0.9*(wr + wl)^2 + 2*z + 1.5*z == -2*wp
subs(eq,(wr+wl),Y/0.1)
madhan ravi
madhan ravi il 24 Nov 2018
Modificato: madhan ravi il 24 Nov 2018
Anytime :)

Accedi per commentare.

Più risposte (0)

Prodotti

Release

R2018b

Community Treasure Hunt

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

Start Hunting!

Translated by