# Intelligent symbolic variable substitution

3 views (last 30 days)
Arjun Sarin on 22 Nov 2019
Commented: Arjun Sarin on 25 Nov 2019
EDIT: I created an example to specify my problem in more detail.
I want to substitute variables in an equation system. Here an example to illustrate my idea:
syms f(x) z(x)
fun1 = f == (x+4)^2 + 4; % equals (x+4)^2
fun2 = f == x^2+8*x+20; % equals (x+4)^2
% fun1 === fun2
transform = z == (x+4)^2;
subs(fun1, rhs(transform), lhs(transform)) % Results in z(x) + 4
subs(fun2, rhs(transform), lhs(transform)) % Results in x^2 + 8x + 20
Obviously, fun1 and fun2 are the same. However Matlab is not able to replace the expression for z correctly when given in the form of fun2. Is there a way to achieve the same result in both notations?

Stephan on 22 Nov 2019
Edited: Stephan on 22 Nov 2019
syms f(x) z(x)
fun = f == x^2 + 8*x + 16; % equals (x+4)^2
transform = z == (x+4)^2;
subs(fun, rhs(fun), lhs(transform))
##### 3 CommentsShow 1 older commentHide 1 older comment
Stephan on 22 Nov 2019
Edited: Stephan on 22 Nov 2019
You could also use:
syms f x z
fun = f == x^2 + 8*x + 16; % equals (x+4)^2
transform = z == (x+4)^2;
subs(fun, rhs(fun), lhs(transform))
The idea is declaring f the same way like transform - which you did not do. Thats all.
Arjun Sarin on 25 Nov 2019
Thank you again. I tried the different notations in depth but actually it doesn't work for me. I updated the questions as the above.

### Categories

Find more on Symbolic Math Toolbox in Help Center and File Exchange

R2019a

### Community Treasure Hunt

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

Start Hunting!