Comparison of symbolic expressions

16 views (last 30 days)
reincornator
reincornator on 16 Feb 2021
Commented: reincornator on 16 Feb 2021
Welcome.
A certain set of symbolic calculations is performed in two different ways. After that, you need to compare the results (we want them to be equal). But using " eq " or "= = " you can't get the desired result. You can use a trick and subtract or divide the results, but this method does not always work correctly.
Is there a function for comparing symbolic calculations?
Example:

Answers (2)

KSSV
KSSV on 16 Feb 2021
syms a b
c = a+b ;
d = b+a ;
isequal(c,d)
ans = logical
1
  2 Comments
John D'Errico
John D'Errico on 16 Feb 2021
syms theta
isequal(sin(theta)^2 + cos(theta)^2,1)
ans = logical
0
Even worse, we see that while rewrite can seemingly improve this first counter-example, isequal still fails.
rewrite(sin(theta)^2 + cos(theta)^2,'sin')
ans = 
1
isequal(rewrite(sin(theta)^2 + cos(theta)^2,'sin'),1)
ans = logical
0
The reason being that 1 and 1 are counter-intuitively not always seen to be equal, at least by isequal.
For this one, a carefully applied expand would have helped.
syms x
isequal((x+1)^3,x^3 + 3*x^2 + 3*x + 1)
ans = logical
0
reincornator
reincornator on 16 Feb 2021
isequal(expand((x+1)^3),x^3 + 3*x^2 + 3*x + 1)

Sign in to comment.


Walter Roberson
Walter Roberson on 16 Feb 2021
isAlways(c == d, 'Unknown', false)
  1 Comment
reincornator
reincornator on 16 Feb 2021
Edited: reincornator on 16 Feb 2021
Thanks!
syms a b c
d=c*(a+b);
e=c*b+c*a;
j=a*b;
isAlways(e == d, 'Unknown', 'false')
isAlways(j == d, 'Unknown', 'false')

Sign in to comment.

Products


Release

R2020a

Community Treasure Hunt

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

Start Hunting!