Python 标识运算符不能正确作用于伴随运算符

Python 标识运算符不能正确作用于伴随运算符,python,operators,sympy,Python,Operators,Sympy,我定义了一个抽象运算符A和标识运算符I。正如预期的那样,A*I=I*A=*A。但是,如果我考虑了A的伴随,似乎身份操作符不正确地动作,即 Dagger(a)*i < /C> >不被简化为 Dagger(a)< /C> >(参见下面的代码)。 如何定义同时作用于运算符及其伴随的恒等式运算符 from sympy.physics.quantum.dagger import Dagger from sympy.physics.quantum.operator import Operator from

我定义了一个抽象运算符A和标识运算符I。正如预期的那样,
A*I=I*A=*A
。但是,如果我考虑了A的伴随,似乎身份操作符不正确地动作,即<代码> Dagger(a)*i < /C> >不被简化为<代码> Dagger(a)< /C> >(参见下面的代码)。 如何定义同时作用于运算符及其伴随的恒等式运算符

from sympy.physics.quantum.dagger import Dagger
from sympy.physics.quantum.operator import Operator
from sympy.physics.quantum import IdentityOperator
A = Operators('A')
Identity = IdentityOperator()
A * Identity #This gives A, correctly
B = Dagger(A)
B * Identity #This returns A^\dagger I . so it does not remove the identity operator

您可以使用
qapply
规范化结果:

In [9]: from sympy.physics.quantum import qapply                                                                                               

In [10]: B*Identity                                                                                                                            
Out[10]: 
 †  
A ⋅I

In [11]: qapply(B*Identity)                                                                                                                    
Out[11]: 
 †
A