123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110 |
- from sympy.physics.quantum.hilbert import (
- HilbertSpace, ComplexSpace, L2, FockSpace, TensorProductHilbertSpace,
- DirectSumHilbertSpace, TensorPowerHilbertSpace
- )
- from sympy.core.numbers import oo
- from sympy.core.symbol import Symbol
- from sympy.printing.repr import srepr
- from sympy.printing.str import sstr
- from sympy.sets.sets import Interval
- def test_hilbert_space():
- hs = HilbertSpace()
- assert isinstance(hs, HilbertSpace)
- assert sstr(hs) == 'H'
- assert srepr(hs) == 'HilbertSpace()'
- def test_complex_space():
- c1 = ComplexSpace(2)
- assert isinstance(c1, ComplexSpace)
- assert c1.dimension == 2
- assert sstr(c1) == 'C(2)'
- assert srepr(c1) == 'ComplexSpace(Integer(2))'
- n = Symbol('n')
- c2 = ComplexSpace(n)
- assert isinstance(c2, ComplexSpace)
- assert c2.dimension == n
- assert sstr(c2) == 'C(n)'
- assert srepr(c2) == "ComplexSpace(Symbol('n'))"
- assert c2.subs(n, 2) == ComplexSpace(2)
- def test_L2():
- b1 = L2(Interval(-oo, 1))
- assert isinstance(b1, L2)
- assert b1.dimension is oo
- assert b1.interval == Interval(-oo, 1)
- x = Symbol('x', real=True)
- y = Symbol('y', real=True)
- b2 = L2(Interval(x, y))
- assert b2.dimension is oo
- assert b2.interval == Interval(x, y)
- assert b2.subs(x, -1) == L2(Interval(-1, y))
- def test_fock_space():
- f1 = FockSpace()
- f2 = FockSpace()
- assert isinstance(f1, FockSpace)
- assert f1.dimension is oo
- assert f1 == f2
- def test_tensor_product():
- n = Symbol('n')
- hs1 = ComplexSpace(2)
- hs2 = ComplexSpace(n)
- h = hs1*hs2
- assert isinstance(h, TensorProductHilbertSpace)
- assert h.dimension == 2*n
- assert h.spaces == (hs1, hs2)
- h = hs2*hs2
- assert isinstance(h, TensorPowerHilbertSpace)
- assert h.base == hs2
- assert h.exp == 2
- assert h.dimension == n**2
- f = FockSpace()
- h = hs1*hs2*f
- assert h.dimension is oo
- def test_tensor_power():
- n = Symbol('n')
- hs1 = ComplexSpace(2)
- hs2 = ComplexSpace(n)
- h = hs1**2
- assert isinstance(h, TensorPowerHilbertSpace)
- assert h.base == hs1
- assert h.exp == 2
- assert h.dimension == 4
- h = hs2**3
- assert isinstance(h, TensorPowerHilbertSpace)
- assert h.base == hs2
- assert h.exp == 3
- assert h.dimension == n**3
- def test_direct_sum():
- n = Symbol('n')
- hs1 = ComplexSpace(2)
- hs2 = ComplexSpace(n)
- h = hs1 + hs2
- assert isinstance(h, DirectSumHilbertSpace)
- assert h.dimension == 2 + n
- assert h.spaces == (hs1, hs2)
- f = FockSpace()
- h = hs1 + f + hs2
- assert h.dimension is oo
- assert h.spaces == (hs1, f, hs2)
|