在Sympy打印上强制执行自定义订购

问题描述 投票:5回答:1

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做得很好,可以跟踪我对符号表达式所做的所有操作。但是在打印乳胶输出结果的一刻,我想强制执行以下顺序:...

python sympy
1个回答
0
投票

[如果可以按所需顺序排列术语,然后将Latex打印机的order标志设置为'none',则将按该顺序打印它们:

© www.soinside.com 2019 - 2024. All rights reserved.