小编Tit*_*n-C的帖子

在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
Run Code Online (Sandbox Code Playgroud)

我的问题是SymPy将表达式表示为

U + U/(-3*t_\perp + z) + d + t_\perp**2 + z
Run Code Online (Sandbox Code Playgroud)

但这种排序不是我所在领域的惯例.对于我们来说,z必须是最左边的表达式,然后是tp,然后是U,即使它是大写的,d是最不相关的,并且放在右边.所有这些变量都具有特定的含义,这就是我们按照这样的顺序编写它们的原因,并且代码变量中的原因以这种方式命名.

我不想将z重命名为a并按照Prevent Sympy中的建议重新排列等式,然后在打印时将a转换为z.在Python中 - SymPy - 强制SymPy保持顺序有一个提示我可以写一个排序函数但我找不到有关它的文档.

python sympy

5
推荐指数
1
解决办法
235
查看次数

标签 统计

python ×1

sympy ×1