SymPy
做得很好,可以跟踪我对符号表达式所做的所有操作。但是在打印乳胶输出结果的那一刻,我想强制执行该术语的某种排序。这仅是为了约定,但是不幸的是,约定在符号名称上不是按字母顺序排列的(正如合理的sympy
所做的那样]]
import sympy as sp sp.init_printing() U,tp, z, d = sp.symbols('U t_\perp z d') # do many operations with those symbols # the final expression is: z+tp**2+U+U/(z-3*tp)+d
我的问题是,
SymPy
给出的表达式排序为
U + U/(-3*t_\perp + z) + d + t_\perp**2 + z
但是这种排序不是我所在领域的惯例。对于我们来说
z
必须是最左边的表达式,然后是tp
,然后是U
,即使大写,d
也是最不相关的,放在右边。所有这些变量都有特定的含义,这就是我们按这种顺序编写它们的原因,并且代码变量中的原因也按这种方式命名。
我不想将z
重命名为a
,并按照Prevent Sympy from rearranging the equation的建议,然后在打印时将a
转换为z
。在Force SymPy to keep the order of terms中有一个提示,我可以编写一个排序函数,但是找不到有关它的文档。
SymPy做得很好,可以跟踪我对符号表达式所做的所有操作。但是在打印乳胶输出结果的一刻,我想强制执行以下顺序:...
[如果可以按所需顺序排列术语,然后将Latex打印机的order
标志设置为'none',则将按该顺序打印它们: