检查 WolframCloud 中两个表达式的相等性
Checking equality of two expressions in WolframCloud
我想检查两个表达式是否相等。
例如 3a+5b === 5b+3a 应该 return 'true'.
我正在尝试使用函数:
CloudDeploy[
APIFunction[
{
"x" ->Restricted["SemanticExpression", All, Automatic,"equalityTestingContext`"],
"y" ->Restricted["SemanticExpression", All, Automatic,"equalityTestingContext`"]
},
TrueQ[Simplify[#x == #y]] &
],
Permissions -> "Public"
]
对于给定的示例,这 return 是正确的,但无法检查示例
5aewq+3(b^3) === 3(b^3)+5aqwe, returning 'No result — at least one parameter could not be interpreted'.
上面的代码应该更改什么以允许比较更复杂的表达式?也许 'Restricted' 口译员?
似乎解释器将5a
解释为5*a
,但aqwe
解释为4个字母的变量名,与aewq
不同。
我猜它(解释器)遵循许多编程语言共有的做法,即将以字母开头的字母数字字符串视为某种实体的名称,但将以数字开头的字符串解析为省略符号的乘法。
所以5a
被解释为5*a
,而123.45a
被解释为123.45*a
,但是a
、ab
等字符串, abc
, a1
, a2c
都被解释为实体名称。所有这些,特别是 2a
解释为 2*a
与 Mathematica / Wolfram 语言解释输入的方式一致。
我想检查两个表达式是否相等。
例如 3a+5b === 5b+3a 应该 return 'true'.
我正在尝试使用函数:
CloudDeploy[
APIFunction[
{
"x" ->Restricted["SemanticExpression", All, Automatic,"equalityTestingContext`"],
"y" ->Restricted["SemanticExpression", All, Automatic,"equalityTestingContext`"]
},
TrueQ[Simplify[#x == #y]] &
],
Permissions -> "Public"
]
对于给定的示例,这 return 是正确的,但无法检查示例 5aewq+3(b^3) === 3(b^3)+5aqwe, returning 'No result — at least one parameter could not be interpreted'.
上面的代码应该更改什么以允许比较更复杂的表达式?也许 'Restricted' 口译员?
似乎解释器将5a
解释为5*a
,但aqwe
解释为4个字母的变量名,与aewq
不同。
我猜它(解释器)遵循许多编程语言共有的做法,即将以字母开头的字母数字字符串视为某种实体的名称,但将以数字开头的字符串解析为省略符号的乘法。
所以5a
被解释为5*a
,而123.45a
被解释为123.45*a
,但是a
、ab
等字符串, abc
, a1
, a2c
都被解释为实体名称。所有这些,特别是 2a
解释为 2*a
与 Mathematica / Wolfram 语言解释输入的方式一致。