检查WolframCloud中两个表达式的相等性

时间:2015-09-04 13:55:32

标签: wolfram-mathematica wolframalpha

我想检查两个表达式是否相等。

例如3a + 5b === 5b + 3a应该返回'true'。

我正在尝试使用一个函数:

CloudDeploy[
    APIFunction[
        {
            "x" ->Restricted["SemanticExpression", All, Automatic,"equalityTestingContext`"], 
            "y" ->Restricted["SemanticExpression", All, Automatic,"equalityTestingContext`"]
        },
        TrueQ[Simplify[#x == #y]] &
        ],
    Permissions -> "Public"
]

对于给定的示例,这返回true但是例如检查失败 5aewq + 3(b ^ 3)=== 3(b ^ 3)+ 5aqwe,返回'无结果 - 至少有一个参数无法解释'。

上面的代码应该改变什么才能比较更复杂的表达式?也许'受限制'翻译?

1 个答案:

答案 0 :(得分:1)

似乎解释器将5*a构造为aqwe,但将aewq构造为4个字母的变量名称,与5a不同。

我猜它(解释器)遵循许多编程语言共同的做法,即将字母数字字符串作为某种实体的名称开头,但解析以数字开头的字符串作为乘法标志省略。

因此5*a被解释为123.45a,而123.45*a被解释为a,但ababc,{等字符串{1}},a1a2c都被解释为实体名称。所有这些,尤其是2a2*a的解释与Mathematica / The Wolfram语言解释输入的方式一致。