sympy.physics.secondquant中的换向器评估

时间:2019-04-02 10:58:13

标签: python sympy

我正在尝试从sympy.physics.secondquant包中象征性地计算创建和an灭运算符的交换子。我的特殊问题是,我无法从换向器和手动计算中获得相同的输出,也无法获得sympy来简化表达式。我使用python 3.7.1和sympy 1.3

如果提供了两个以上的Creation / Annihilation运算符,则Commutator返回未求值的表达式。在这种情况下,我们需要使用.doit()函数来评估这种情况。但是我似乎无法让.doit()正常工作。

例如:

from sympy.physics.secondquant import Commutator, B, Bd
Commutator(B(0), Bd(0))
>>> 1

但这应该与以下内容相同:

(B(0) * Bd(0) - Bd(0) * B(0)).doit()
>>> AnnihilateBoson(0)*CreateBoson(0) - CreateBoson(0)*AnnihilateBoson(0)

我似乎无法弄清楚如何使sympy将该表达式简化为1。(我尝试使用simple,它没有用)。

在我的用例中,我想计算

Commutator(B(0), Bd(0) ** 2)
>>>Commutator(b(0),CreateBoson(0)**2)

由于某种原因,其中B(0)在输出中变为b(0)!

应用.doit()会产生>>>AnnihilateBoson(0)*CreateBoson(0)**2 - CreateBoson(0)**2*AnnihilateBoson(0),而不是简化为2*AnnihilateBoson(0)

0 个答案:

没有答案