【问题标题】: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
    

    【讨论】:

      猜你喜欢
      • 2020-01-13
      • 2021-06-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-22
      • 1970-01-01
      • 2018-01-27
      • 2016-04-04
      相关资源
      最近更新 更多