首页 > 解决方案 > Identity 运算符不能正确作用于伴随运算符

问题描述

我定义了一个抽象运算符 A 和标识运算符 I。正如预期的那样,A*I = I*A =*A. 但是,如果我考虑 A 的伴随,那么身份运算符似乎没有正确运行,即Dagger(A)*I没有简化为Dagger(A)(参见下面的代码)。我如何定义一个身份运算符,它同时作用于运算符及其伴随者?

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

标签: pythonoperatorssympy

解决方案


您可以使用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 

推荐阅读