Comparison of symbolic expressions

14 次查看(过去 30 天)
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:

回答(2 个)

KSSV
KSSV 2021-2-16
syms a b
c = a+b ;
d = b+a ;
isequal(c,d)
ans = logical
1
  2 个评论
John D'Errico
John D'Errico 2021-2-16
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

请先登录,再进行评论。


Walter Roberson
Walter Roberson 2021-2-16
isAlways(c == d, 'Unknown', false)
  1 个评论
reincornator
reincornator 2021-2-16
编辑:reincornator 2021-2-16
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')

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Assumptions 的更多信息

产品


版本

R2020a

Community Treasure Hunt

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

Start Hunting!

Translated by