Sympy:符号玻色子交换的替代及其数值意义

2024-09-28 01:23:32 发布

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

我想用sympy简化涉及玻色子交换子的表达式。 问题是,利用同态中的第二个量,玻色子换向器[b泳0,b^\dagger泳0]=1和[b泳0,b^\dagger泳1]=0的数值永远不会被符号表达式所取代。 换言之,我想让SymPy知道换向器恒等式。你知道吗

以下代码

from sympy import simplify
from sympy.physics.secondquant import Bd, B 
from sympy.physics.quantum import *
comm1=simplify(Commutator(B(0),Bd(0)).doit())
print(comm1)
comm2=simplify(Commutator(B(0),Bd(1)).doit())
print(comm2)

给予

comm1= AnnihilateBoson(0)*CreateBoson(0) - CreateBoson(0)*AnnihilateBoson(0)
comm2= AnnihilateBoson(0)*CreateBoson(1) - CreateBoson(1)*AnnihilateBoson(0)

而不是期望值:

comm1= 1
comm2= 0

我试过这里提到的代码How to use sympy.physics.quantum Commutator?

comm2=(Commutator(B(0),Bd(0))._eval_expand_commutator()).doit()
print('comm2=',comm2)

但这个表达和以前一样

comm2= AnnihilateBoson(0)*CreateBoson(0) - CreateBoson(0)*AnnihilateBoson(0)

此外,我还发现了一个相关的未回答的问题: Does sympy give me wrong results for the second quantization commutators?

我看了一下1682线: https://github.com/sympy/sympy/blob/master/sympy/physics/secondquant.py 根据这个,换向器应该正确地给出Kroneckerδ。然而,我仍然得到了上面提到的符号表达式。你知道吗


Tags: fromimport表达式simplifybdprintsympydoit

热门问题