换向器评估sympy.physics.secondquan公司

2024-09-29 19:20:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图从sympy.physics.secondquant包中象征性地计算产生和湮灭算符的交换子。我的特殊问题是,我不能从换向器和手工计算中得到相同的输出,也不能得到简化表达式的sympy。我研究python3.7.1和sympy1.3。你知道吗

如果提供了两个以上的创建/湮灭运算符,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。(我试过使用simplify,但没用)。你知道吗

在我的用例中,我想计算

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)。你知道吗


Tags: 函数表达式情况运算符bd手工sympydoit

热门问题