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
我想进行一些换向器操作,并在 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