我目前正在开发一个用于微分算子sympy
可以放置在matricial形式。 在这种情况下的顺序args
创建列表时Mul
目标是非常重要的,以保证它时,才需要进行分化。
问题是,当以下完成:
input = (t,z,x)
Mul(*input).args
它返回(t, x, z)
因为在一些重排args
发生。 如何避免args
进行排序?
我目前正在开发一个用于微分算子sympy
可以放置在matricial形式。 在这种情况下的顺序args
创建列表时Mul
目标是非常重要的,以保证它时,才需要进行分化。
问题是,当以下完成:
input = (t,z,x)
Mul(*input).args
它返回(t, x, z)
因为在一些重排args
发生。 如何避免args
进行排序?
为什么ARG排序是非常重要的它是正确的吗?
为防止这种情况的唯一方法是设置你的符号是不可交换的( x = Symbol('x', commutative=False)
SymPy比较对象通过比较args
,所以x*y*z == y*x*z
工作,ARGS必须规范地排序。 已经有一些尝试得到这个工作没有明确的分类(主要是因为性能原因),但需要注意的是,即使我们这样做,就不能保证在所有关于ARG秩序,特别是如果你在执行任何类型的操作表达。 这是很常见的功能重建表达式SymPy,这在一般的使用从最初的一些其他不相关的顺序。