m2m模型翻译
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

36 lines
1.1 KiB

7 months ago
  1. from sympy.physics.quantum import Dagger, AntiCommutator, qapply
  2. from sympy.physics.quantum.fermion import FermionOp
  3. from sympy.physics.quantum.fermion import FermionFockKet, FermionFockBra
  4. def test_fermionoperator():
  5. c = FermionOp('c')
  6. d = FermionOp('d')
  7. assert isinstance(c, FermionOp)
  8. assert isinstance(Dagger(c), FermionOp)
  9. assert c.is_annihilation
  10. assert not Dagger(c).is_annihilation
  11. assert FermionOp("c") == FermionOp("c", True)
  12. assert FermionOp("c") != FermionOp("d")
  13. assert FermionOp("c", True) != FermionOp("c", False)
  14. assert AntiCommutator(c, Dagger(c)).doit() == 1
  15. assert AntiCommutator(c, Dagger(d)).doit() == c * Dagger(d) + Dagger(d) * c
  16. def test_fermion_states():
  17. c = FermionOp("c")
  18. # Fock states
  19. assert (FermionFockBra(0) * FermionFockKet(1)).doit() == 0
  20. assert (FermionFockBra(1) * FermionFockKet(1)).doit() == 1
  21. assert qapply(c * FermionFockKet(1)) == FermionFockKet(0)
  22. assert qapply(c * FermionFockKet(0)) == 0
  23. assert qapply(Dagger(c) * FermionFockKet(0)) == FermionFockKet(1)
  24. assert qapply(Dagger(c) * FermionFockKet(1)) == 0