为什么 `evalb(((3*x + 1)^5)(3*x - 1)/x^6 = ((3 + 1/x)^5)(3 - 1/x)) 假设 (0 < x)` return Maple 中的 `false`?

Why does `evalb(((3*x + 1)^5)(3*x - 1)/x^6 = ((3 + 1/x)^5)(3 - 1/x)) assuming (0 < x)` return `false` in Maple?

问题可能应该是 为什么 (3*x + 1)^5 * (3*x - 1) / x^6 = (3 + 1/x)^5 * (3 - 1/x) 在 Maple 中计算为假,即使假设 x > 0。相同的表达式在 Mathematica 中计算为真当然,在先前的假设下,该陈述本身在数学上是正确的。

Maple 的帮助页面没有提供任何关于为什么会发生这种情况的线索,在我认为 Maple 的 evalb() 有问题之前,我希望有人能解释一下这种行为。这是我最近问自己的问题类型,因为我在决定是应该学习 Maple 还是放弃它并专注于学习 Mathematica。

提前致谢。

如果等式两边都是 numeric 类型(或扩展复数值等),则 evalb 将检验相等性。但是对于你的符号表达式,evalb 命令只会测试它们是否是完全相同的表达式(通过比较内存地址)。

但它们不是完全相同的表达方式。它们只是两个不同的符号表达式,您希望对其进行等价性的数学测试。

restart;

expr:=(3*x+1)^5*(3*x-1)/x^6=(3+1/x)^5*(3-1/x):

is(expr);
                          true

testeq(expr);
                          true

simplify((rhs-lhs)(expr));
                           0