MATLAB isequal 函数给出了符号表达式的错误答案

MATLAB isequal function gives wrong answer for symbolic expression

在下面的简单代码中:

syms x
isequal((x+1)^2, x^2+2*x+1)

MATLAB returns false,但两个表达式相同! 代码有什么问题?

这些不是完全相同的表达式,isequal() 测试表达式是否相等。尝试例如:

>> isequal(expand((x+1)^2), x^2+2*x+1)

ans =

  logical

   1

或者,

>> isequal(simplify((x+1)^2), simplify(x^2+2*x+1))

ans =

  logical

   1

PS 你也可以使用 isAlways() 来比较表达式,

isAlways((x+1)^2 == x^2+2*x+1)

ans =

  logical

   1