kir*_*gum 3 wolfram-mathematica
在Mathematica中,您如何更改变量的重要性顺序?例如:如果我输入b + c + a + d,我得到一个+ b + c + d但我希望b和d先于其他变量.所以我得到b + d + a + c
请注意,我想在+非交换的地方使用它
首先,您需要定义一个排序函数,如:
In[1]:= CPOrdering[a]=3;
CPOrdering[b]=1;
CPOrdering[d]=2;
CPOrdering[c]=4;
Run Code Online (Sandbox Code Playgroud)
虽然,对于更复杂的例子,你应该比这更聪明 - 即使用模式匹配.
然后你可以使用
In[5]:= CirclePlus[a,b,c,d]
SortBy[%,CPOrdering]
Out[5]= a\[CirclePlus]b\[CirclePlus]c\[CirclePlus]d
Out[6]= b\[CirclePlus]d\[CirclePlus]a\[CirclePlus]c
Run Code Online (Sandbox Code Playgroud)
然后可以使用类似的东西自动化
CPOrdering[a_, b_] := CPOrdering[a] < CPOrdering[b]
CirclePlus[a__] /; (!OrderedQ[{a}, CPOrdering]) := CirclePlus@@SortBy[{a}, CPOrdering]
Run Code Online (Sandbox Code Playgroud)