避免在Python模块Sympy排序ARGS(Avoid sorting args in Pytho

2019-09-01 05:37发布

我目前正在开发一个用于微分算子sympy可以放置在matricial形式。 在这种情况下的顺序args创建列表时Mul目标是非常重要的,以保证它时,才需要进行分化。

问题是,当以下完成:

input = (t,z,x)
Mul(*input).args

它返回(t, x, z)因为在一些重排args发生。 如何避免args进行排序?

Answer 1:

为什么ARG排序是非常重要的它是正确的吗?

为防止这种情况的唯一方法是设置你的符号是不可交换的( x = Symbol('x', commutative=False) SymPy比较对象通过比较args ,所以x*y*z == y*x*z工作,ARGS必须规范地排序。 已经有一些尝试得到这个工作没有明确的分类(主要是因为性能原因),但需要注意的是,即使我们这样做,就不能保证在所有关于ARG秩序,特别是如果你在执行任何类型的操作表达。 这是很常见的功能重建表达式SymPy,这在一般的使用从最初的一些其他不相关的顺序。



文章来源: Avoid sorting args in Python module Sympy