Sympy: Как получить упрощенные коммутаторы, используя второй модуль квантования?Python

Программы на Python
Ответить
Anonymous
 Sympy: Как получить упрощенные коммутаторы, используя второй модуль квантования?

Сообщение Anonymous »

Поэтому я хочу использовать тот факт, что [b,bd]=1, где [] — коммутатор, чтобы получить некоторые коммутаторы более сложных выражений, используя Sympy, вместо того, чтобы делать это вручную, но вместо этого я получаю огромные выражения, которые содержат коммутатор, но он не заменяется на 1, вот код

Код: Выделить всё

from sympy import *
from sympy.physics.secondquant import *
comm1=simplify(Commutator(B(0),Bd(0)).doit())
comm1
выход в этом случае равен 1, это соответствует случаю [b,bd]=1, но если я введу более сложное выражение, например

Код: Выделить всё

w1,w2,g=symbols('w1 w1 g')
H=w1*B(0)*Bd(0)+w2*B(1)*Bd(1)+g*Bd(0)*B(1)+conjugate(g)*Bd(1)*B(0)

comm2=simplify(Commutator(H,B(0)))
print(simplify(comm2))
Я понимаю

Код: Выделить всё

-g*(AnnihilateBoson(0)*CreateBoson(0)*AnnihilateBoson(1) - CreateBoson(0)*AnnihilateBoson(1)*AnnihilateBoson(0)) - w1*(AnnihilateBoson(0)*AnnihilateBoson(1)*CreateBoson(1) - AnnihilateBoson(1)*CreateBoson(1)*AnnihilateBoson(0)) + w1*(AnnihilateBoson(0)*CreateBoson(0)*AnnihilateBoson(0) - AnnihilateBoson(0)**2*CreateBoson(0)) - conjugate(g)*(AnnihilateBoson(0)*CreateBoson(1)*AnnihilateBoson(0) - CreateBoson(1)*AnnihilateBoson(0)**2)

Это, очевидно, значительно упростилось бы, если бы было заменено [b,bd]=1. Кто-нибудь знает, как это сделать? или может ли кто-нибудь указать мне на другой инструмент, способный сделать это?

Подробнее здесь: https://stackoverflow.com/questions/622 ... ion-module
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»