Với python sympy:đơn giản hóa biểu hiện lượng tử với sympy.physics.quantum
from sympy import sqrt
from sympy.physics.quantum import Bra,Ket,qapply
superpos = (Ket('Dead')+Ket('Alive'))/sqrt(2)
d = qapply(Bra('Dead')*superpos)
Nó cung cấp cho:
sqrt(2)*<Dead|Alive>/2 + sqrt(2)*<Dead|Dead>/2
Làm thế nào để thiết lập 'Chết' và 'Alive' như các quốc gia trực giao, do đó d.doit() cho:
sqrt(2)/2
(tôi chỉ có thể làm:
01.d.subs(Bra('Dead')*Ket('Dead'),1).subs(Bra('Dead')*Ket('Alive'),0)
nhưng tôi chắc chắn có một cách tốt hơn)
Đó là nó! Tôi sao chép/dán boson.py đổi tên nó thành OrthogonalBra/OrthogonalKet và thay đổi innerproduct thành 'def _eval_innerproduct_OrthogonalBra (tự, bra, ** gợi ý): nếu self.n == bra.n: return 1 else: return 0 ' – user4624500