为什么 MATLAB 无法检查此三角表达式的相等性

Why does MATLAB fail to check the equality of this trigonometric expression

isequaln() 正在测试符号对象是否相等,如文档中所述。但是,下面的脚本不是这样。

syms a
f1=cos(a)^2;
f2=1-sin(a)^2;
isequaln(f1,f2)
ans =
  logical
   0

MATLAB 没有 return 正确答案。在比较符号表达式的相等性、比较字符串(即正则表达式的典型场景)或其他东西时,MATLAB 做了什么?

在文档页面的底部,有一个名为“提示”的部分,其中包含以下项目:

isequaln(A,B) checks if A and B are the same size and their contents are syntactically the same expression, treating NaN values as equal. To check whether the mathematical comparison A == B holds for all values of variables in A and B, use isAlways(A == B).

(强调我的)

isAlways 为所欲为:

syms a
f1 = cos(a)^2;
f2 = 1-sin(a)^2;
isAlways(f1 == f2)

这输出 true.


备选方案:

>> simplify(f1-f2)
ans =
0
 
>> simplify(f1==f2)
ans =
symtrue