【问题标题】: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?为什么 `evalb((((3*x + 1)^5)(3*x - 1)/x^6 = ((3 + 1/x)^5)(3 - 1/x)) 假设 (0 < x)` 在 Maple 中返回 `false`?
【发布时间】:2020-06-01 00:37:47
【问题描述】:
问题可能应该是为什么 (3*x + 1)^5 * (3*x - 1) / x^6 = (3 + 1/x)^5 * (3 - 1/x) 在 Maple 中的计算结果为 false,即使假设 x > 0。同样的表达式在 Mathematica 中的计算结果为 true,当然,语句在前面的假设下,它本身在数学上是正确的。
Maple 的帮助页面没有提供任何关于为什么会发生这种情况的线索,在我认为 Maple 的 evalb() 有点坏之前,我希望有人解释这种行为。这是我最近问自己的这类问题,因为我正在决定我应该学习 Maple 还是放弃它并专注于学习 Mathematica。
提前谢谢你。
【问题讨论】:
标签:
boolean
maple
mathematical-expressions
【解决方案1】:
如果等式两边都是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