subs(): Unexpected simplification behaviour
1 view (last 30 days)
Show older comments
Thomas Bauer
on 27 Apr 2015
Answered: Philip Caplan
on 29 Apr 2015
syms Gr Ra Ri A B Gr1 Gr2 c d
Gr = 2*c*(Ra^2 - Ri^2) - d*(Ra^4 - Ri^4)/2;
Gr1 = subs(Gr, [c*(Ra^2 - Ri^2), -d*(Ra^4 - Ri^4)/2], [A, B])
Gr2 = subs(Gr, [c*(Ra^2 - Ri^2), d*(Ra^4 - Ri^4)/2], [A, B])
returns
Gr1 =
2*A + B
Gr2 =
2*A - (d*(Ra^4 - Ri^4))/2
Is there a way to convince MATLAB to return
Gr2 = 2*A - B
in the second case without workarounds? Of course, workarounds like
Gr2 = subs(Gr, [c*(Ra^2 - Ri^2), -d*(Ra^4 - Ri^4)/2], [A, -B])
or
Gr1 = subs(Gr, [(Ra^2 - Ri^2),(Ra^4 - Ri^4)], [A/c,-2*B/d])
Gr2 = subs(Gr, [(Ra^2 - Ri^2),(Ra^4 - Ri^4)], [A/c,2*B/d])
will return the desired result, but I have a much more complex expression to substitute and can't work with this subs()-behaviour. I would have expected MATLAB to automatically simplify the respecive equations.
0 Comments
Accepted Answer
Philip Caplan
on 29 Apr 2015
As you mentioned, "subs" should return "Gr2 = 2*A -B". I have notified the development team here at MathWorks about this behavior and they will hopefully resolve this in a future release.
0 Comments
More Answers (0)
See Also
Categories
Find more on Correlation Models in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!