MATLAB Answers

Intelligent symbolic variable substitution

1 view (last 30 days)
Arjun Sarin
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?
Thank you for your help in advance.

  0 Comments

Sign in to comment.

Answers (1)

Stephan
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 Comments

Arjun Sarin
Arjun Sarin on 22 Nov 2019
Thank you for your answer! Could you please elaborate what's the difference in the code? You are using symbolic functions which I didn't but I don't get my mistake...
Stephan
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
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.

Sign in to comment.

Products


Release

R2019a

Community Treasure Hunt

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

Start Hunting!