sympy.physics.quantum换向器如何使用?

How to use sympy.physics.quantum Commutator?

我想进行一些换向器操作,并在 sympy 中找到了这个工具。它似乎按预期工作(但文档实际上不存在,或者至少我发现很少,但请参阅下面 Dalton Bentley 的评论),但我 运行 遇到以下问题。

from sympy.physics.quantum import Commutator as Comm
from sympy.physics.quantum import Operator
A = Operator('A')
B = Operator('B')
C = Comm(Comm(Comm(A,B),A),B)
D = Comm(Comm(Comm(A,B),B),A)
E = (C-D).expand(commutator=true)
E
>>> [[[A,B],A],B] - [[[A,B],B],A]

而不是预期的更简单的结果 0(因为 [[[A,B],A],B] = [[[A,B],B],A])。那么我如何在不评估换向器的情况下强制获得更简单的结果(即 w/o 调用 doit() 函数)?注意

simplify(E.doit())
>>> 0

给出了想要的结果。

目前在 SymPy 中,Commutator._eval_expand_commutator 不知道这个恒等式,因此它必须扩展换向器(在您已确定的 .doit 方法中)以便能够简化表达式。

这个工作需要什么,将特殊情况添加到 Commutator._eval_expand_commutator 方法,当换向器的参数包含换向器时,然后检查已知的身份。

我在这里为此开了一个问题:https://github.com/sympy/sympy/issues/10892