MATLAB Answers

Intelligent symbolic variable substitution

2 views (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

Translated by