0

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

例如 3a+5b === 5b+3a 应该返回“真”。

我正在尝试使用一个功能:

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,返回“无结果 - 至少一个参数无法解释”。

在上面的代码中应该改变什么以允许比较更复杂的表达式?也许是“受限”翻译?

4

1 回答 1

1

解释器似乎将其解释5a为4 个字母的变量名,5*aaqwe不是aewq.

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

So5a被解释为5*a, 并被123.45a解释为123.45*a, 但诸如a, ab, abc,a1之类的字符串a2c都被解释为实体名称。所有这一切,特别是 as 的解释2a2*aMathematica / The Wolfram 语言解释输入的方式是一致的。

于 2015-09-04T14:40:28.363 回答