С python sympy:
from sympy import sqrt
from sympy.physics.quantum import Bra,Ket,qapply
superpos = (Ket('Dead')+Ket('Alive'))/sqrt(2)
d = qapply(Bra('Dead')*superpos)
Он дает:
sqrt(2)*<Dead|Alive>/2 + sqrt(2)*<Dead|Dead>/2
Как установить "Dead" и "Alive" в качестве ортогональных состояний, так что d.doit() дает:
sqrt(2)/2
(Я мог только сделать:
d.subs(Bra('Dead')*Ket('Dead'),1).subs(Bra('Dead')*Ket('Alive'),0)
но я уверен, что есть лучший способ)