Sympy:用它的数值代替符号玻色子交换
Sympy: substitute to symbolic bosonic commutation its numerical value
我想使用 sympy 简化涉及玻色子换向器的表达式。
问题是,在 sympy 中使用 secondquant,玻色子换向器的数值 [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
我试过这里提到的代码
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
根据这个,换向器应该正确地给出克罗内克三角洲。但是,我仍然得到上面报告的符号表达式。
问题是由
引起的
from sympy.physics.quantum import *
此代码给出了预期的行为
from sympy.physics.secondquant import *
from sympy import symbols
a, b = symbols('a,b')
c = Commutator(B(a),Bd(a))
print(c.doit())
我想使用 sympy 简化涉及玻色子换向器的表达式。 问题是,在 sympy 中使用 secondquant,玻色子换向器的数值 [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
我试过这里提到的代码
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 根据这个,换向器应该正确地给出克罗内克三角洲。但是,我仍然得到上面报告的符号表达式。
问题是由
引起的from sympy.physics.quantum import *
此代码给出了预期的行为
from sympy.physics.secondquant import *
from sympy import symbols
a, b = symbols('a,b')
c = Commutator(B(a),Bd(a))
print(c.doit())