Quantum Operators (quanguru.QuantumToolbox.operators
)#
Contains methods to functions to create and/or manipulate quantum operators
Functions#
|
Creates the identity operator |
|
Creates the (bosonic) number |
|
Creates the bosonic annihilation |
|
Creates the bosonic creation |
|
Creates the Pauli (sigma z) |
|
Creates the Pauli (sigma y) |
|
Creates the Pauli (sigma x) |
|
Creates the Pauli (sigma +) |
|
Creates the Pauli (sigma -) |
|
Creates the angular momentum (spin) raising operator |
|
Creates the angular momentum (spin) lowering operator |
|
Creates the angular momentum (spin) X operator |
|
Creates the angular momentum (spin) Y operator |
|
Creates the angular momentum (spin) Z operator |
|
Creates the total angular momentum (spin) operator |
|
Creates the displacement operator |
|
Creates the squeezing operator |
|
Creates a parity operator |
|
Creates a parity operator by explicitly placing alternating +/- into a matrix. |
|
Creates a composite operator |
|
Creates a quantum operator for given function reference op and raises to a power. |
Function Name |
Docstrings |
Examples |
Unit Tests |
Tutorials |
---|---|---|---|---|
identity |
✅ |
✅ |
✅ |
❌ |
number |
✅ |
✅ |
✅ |
❌ |
destroy |
✅ |
✅ |
✅ |
❌ |
create |
✅ |
✅ |
✅ |
❌ |
sigmaz |
✅ |
✅ |
✅ |
❌ |
sigmay |
✅ |
✅ |
✅ |
❌ |
sigmax |
✅ |
✅ |
✅ |
❌ |
sigmap |
✅ |
✅ |
✅ |
❌ |
sigmam |
✅ |
✅ |
✅ |
❌ |
Jp |
✅ |
✅ |
✅ |
❌ |
Jm |
✅ |
✅ |
✅ |
❌ |
Jx |
✅ |
✅ |
❌ |
❌ |
Jy |
✅ |
✅ |
❌ |
❌ |
Jz |
✅ |
✅ |
✅ |
❌ |
Js |
✅ |
✅ |
✅ |
❌ |
displacement |
✅ |
✅ |
✅ |
❌ |
squeeze |
✅ |
✅ |
❌ |
❌ |
parityEXP |
✅ |
✅ |
❌ |
❌ |
paritySUM |
✅ |
✅ |
❌ |
❌ |
compositeOp |
✅ |
✅ |
❌ |
❌ |
operatorPow |
✅ |
✅ |
❌ |
❌ |
- number(dimension: int, sparse: bool = True) Union[scipy.sparse._base.spmatrix, numpy.ndarray] [source]#
Creates the (bosonic) number
operator (in Fock basis).
- Parameters
dimension (int) – dimension of the Hilbert space
sparse (bool) – if True(False), the returned Matrix type will be sparse(array)
- Returns
number operator
- Return type
Matrix
Examples
>>> number(dimension=3, sparse=False) [[0 0 0] [0 1 0] [0 0 2]]
>>> print(number(3)) (0, 0) 0 (1, 1) 1 (2, 2) 2
- destroy(dimension: int, sparse: bool = True) Union[scipy.sparse._base.spmatrix, numpy.ndarray] [source]#
Creates the bosonic annihilation
operator (in Fock basis).
- Parameters
dimension (int) – dimension of the Hilbert space
sparse (bool) – if True(False), the returned Matrix type will be sparse(array)
- Returns
bosonic annihilation operator
- Return type
Matrix
Examples
>>> print(destroy(dimension=3)) (0, 1) 1.0 (1, 2) 1.4142135623730951
>>> destroy(3, sparse=False) [[0. 1. 0. ] [0. 0. 1.41421356] [0. 0. 0. ]]
- create(dimension: int, sparse: bool = True) Union[scipy.sparse._base.spmatrix, numpy.ndarray] [source]#
Creates the bosonic creation
operator (in Fock basis).
- Parameters
dimension (int) – dimension of the Hilbert space
sparse (bool) – if True(False), the returned Matrix type will be sparse(array)
- Returns
bosonic creation operator
- Return type
Matrix
Examples
>>> print(create(3)) (1, 0) 1.0 (2, 1) 1.4142135623730951
>>> create(3, sparse=False) [[0. 0. 0. ] [1. 0. 0. ] [0. 1.41421356 0. ]]
- identity(dimension: int, sparse: bool = True) Union[scipy.sparse._base.spmatrix, numpy.ndarray] [source]#
Creates the identity operator
.
- Parameters
dimension (int) – dimension of the Hilbert space
sparse (bool) – if True(False), the returned Matrix type will be sparse(array)
- Returns
identity operator
- Return type
Matrix
Examples
>>> print(identity(3)) (0, 0) 1.0 (1, 1) 1.0 (2, 2) 1.0
>>> identity(3, sparse=False) [[1. 0. 0.] [0. 1. 0.] [0. 0. 1.]]
- sigmaz(sparse: bool = True) Union[scipy.sparse._base.spmatrix, numpy.ndarray] [source]#
Creates the Pauli (sigma z)
operator.
- Parameters
sparse (bool) – if True(False), the returned Matrix type will be sparse(array)
- Returns
Pauli sigma z operator
- Return type
Matrix
Examples
>>> sigmaz(sparse=False) [[ 1 0] [ 0 -1]]
>>> print(sigmaz()) (0, 0) 1 (1, 1) -1
- sigmay(sparse: bool = True) Union[scipy.sparse._base.spmatrix, numpy.ndarray] [source]#
Creates the Pauli (sigma y)
operator.
- Parameters
sparse (bool) – if True(False), the returned Matrix type will be sparse(array)
- Returns
Pauli sigma y operator
- Return type
Matrix
Examples
>>> sigmay(sparse=False) [[0.+0.j 0.-1.j] [0.+1.j 0.+0.j]]
>>> print(sigmay()) (1, 0) 1j (0, 1) (-0-1j)
- sigmax(sparse: bool = True) Union[scipy.sparse._base.spmatrix, numpy.ndarray] [source]#
Creates the Pauli (sigma x)
operator.
- Parameters
sparse (bool) – if True(False), the returned Matrix type will be sparse(array)
- Returns
Pauli sigma x operator
- Return type
Matrix
Examples
>>> sigmax(sparse=False) [[0 1] [1 0]]
>>> print(sigmax()) (1, 0) 1 (0, 1) 1
- sigmap(sparse: bool = True) Union[scipy.sparse._base.spmatrix, numpy.ndarray] [source]#
Creates the Pauli (sigma +)
operator.
- Parameters
sparse (bool) – if True(False), the returned Matrix type will be sparse(array)
- Returns
Pauli sigma + operator
- Return type
Matrix
Examples
>>> sigmap(sparse=False) [[0 1] [0 0]]
>>> print(sigmap()) (0, 1) 1
- sigmam(sparse: bool = True) Union[scipy.sparse._base.spmatrix, numpy.ndarray] [source]#
Creates the Pauli (sigma -)
operator.
- Parameters
sparse (bool) – if True(False), the returned Matrix type will be sparse(array)
- Returns
Pauli sigma - operator
- Return type
Matrix
Examples
>>> sigmam(sparse=False) [[0 0] [1 0]]
>>> print(sigmam()) (1, 0) 1
- Jp(j: float, sparse: bool = True, isDim: bool = False) Union[scipy.sparse._base.spmatrix, numpy.ndarray] [source]#
Creates the angular momentum (spin) raising operator
for a given spin quantum number j.
NOTE This is a direct matrix construction, i.e. it does not use the Jx and Jy functions, and this function is used in Jx and Jy implementations
- Parameters
j (int or float) – integer or half-integer spin quantum number, or the dimension (then spin quantum number = (d-1)/2)
sparse (bool) – if True(False), the returned Matrix type will be sparse(array)
isDim (bool) – boolean for whether j is spin quantum number of dimension
- Returns
Angular momentum (spin) raising operator
- Return type
Matrix
Examples
>>> Jp(j=2, sparse=False) [[0. 2. 0. 0. 0. ] [0. 0. 2.44948974 0. 0. ] [0. 0. 0. 2.44948974 0. ] [0. 0. 0. 0. 2. ] [0. 0. 0. 0. 0. ]]
>>> print(Jp(j=2)) (0, 1) 2.0 (1, 2) 2.449489742783178 (2, 3) 2.449489742783178 (3, 4) 2.0
>>> Jp(j=5, sparse=False, isDim=True) [[0. 2. 0. 0. 0. ] [0. 0. 2.44948974 0. 0. ] [0. 0. 0. 2.44948974 0. ] [0. 0. 0. 0. 2. ] [0. 0. 0. 0. 0. ]]
>>> print(Jp(j=5, isDim=True)) (0, 1) 2.0 (1, 2) 2.449489742783178 (2, 3) 2.449489742783178 (3, 4) 2.0
- Jm(j: float, sparse: bool = True, isDim: bool = False) Union[scipy.sparse._base.spmatrix, numpy.ndarray] [source]#
Creates the angular momentum (spin) lowering operator
for a given spin quantum number j.
NOTE This is a direct matrix construction, i.e. it does not use the Jx and Jy functions, and this function is used in Jx and Jy implementations
- Parameters
j (int or float) – integer or half-integer spin quantum number, or the dimension (then spin quantum number = (d-1)/2)
sparse (bool) – if True(False), the returned Matrix type will be sparse(array)
isDim (bool) – boolean for whether j is spin quantum number of dimension
- Returns
Angular momentum (spin) lowering operator
- Return type
Matrix
Examples
>>> Jm(j=2, isDim=False, sparse=False) [[0. 0. 0. 0. 0. ] [2. 0. 0. 0. 0. ] [0. 2.44948974 0. 0. 0. ] [0. 0. 2.44948974 0. 0. ] [0. 0. 0. 2. 0. ]]
>>> print(Jm(j=2, isDim=False)) (1, 0) 2.0 (2, 1) 2.449489742783178 (3, 2) 2.449489742783178 (4, 3) 2.0
>>> Jm(j=5, sparse=False, isDim=True) [[0. 0. 0. 0. 0. ] [2. 0. 0. 0. 0. ] [0. 2.44948974 0. 0. 0. ] [0. 0. 2.44948974 0. 0. ] [0. 0. 0. 2. 0. ]]
>>> print(Jm(j=5, isDim=True)) (1, 0) 2.0 (2, 1) 2.449489742783178 (3, 2) 2.449489742783178 (4, 3) 2.0
- Jx(j: float, sparse: bool = True, isDim: bool = False) Union[scipy.sparse._base.spmatrix, numpy.ndarray] [source]#
Creates the angular momentum (spin) X operator
for a given spin quantum number j.
NOTE This function uses the definition
and calls Jp and Jm There are no test for this method, it rely on Jp and Jm
- Parameters
j (int or float) – integer or half-integer spin quantum number, or the dimension (then spin quantum number = (d-1)/2)
sparse (bool) – if True(False), the returned Matrix type will be sparse(array)
isDim (bool) – boolean for whether j is spin quantum number of dimension
- Returns
Angular momentum (spin) X operator
- Return type
Matrix
Examples
>>> Jx(j=2, isDim=False, sparse=False) [[0. 1. 0. 0. 0. ] [1. 0. 1.22474487 0. 0. ] [0. 1.22474487 0. 1.22474487 0. ] [0. 0. 1.22474487 0. 1. ] [0. 0. 0. 1. 0. ]]
>>> print(Jx(j=2, isDim=False)) (1, 0) 1.0 (0, 1) 1.0 (2, 1) 1.224744871391589 (1, 2) 1.224744871391589 (3, 2) 1.224744871391589 (2, 3) 1.224744871391589 (4, 3) 1.0 (3, 4) 1.0
>>> Jx(j=5, sparse=False, isDim=True) [[0. 1. 0. 0. 0. ] [1. 0. 1.22474487 0. 0. ] [0. 1.22474487 0. 1.22474487 0. ] [0. 0. 1.22474487 0. 1. ] [0. 0. 0. 1. 0. ]]
>>> print(Jx(j=5, isDim=True)) (1, 0) 1.0 (0, 1) 1.0 (2, 1) 1.224744871391589 (1, 2) 1.224744871391589 (3, 2) 1.224744871391589 (2, 3) 1.224744871391589 (4, 3) 1.0 (3, 4) 1.0
- Jy(j: float, sparse: bool = True, isDim: bool = False) Union[scipy.sparse._base.spmatrix, numpy.ndarray] [source]#
Creates the angular momentum (spin) Y operator
for a given spin quantum number j.
NOTE This function uses the definition
and calls Jp and Jm There are no test for this method, it rely on Jp and Jm
- Parameters
j (int or float) – integer or half-integer spin quantum number, or the dimension (then spin quantum number = (d-1)/2)
sparse (bool) – if True(False), the returned Matrix type will be sparse(array)
isDim (bool) – boolean for whether j is spin quantum number of dimension
- Returns
Angular momentum (spin) Y operator
- Return type
Matrix
Examples
>>> Jy(j=2, isDim=False, sparse=False) [[0.+0.j 0.-1.j 0.+0.j 0.+0.j 0.+0.j ] [0.+1.j 0.+0.j 0.-1.22474487j 0.+0.j 0.+0.j ] [0.+0.j 0.+1.22474487j 0.+0.j 0.-1.22474487j 0.+0.j ] [0.+0.j 0.+0.j 0.+1.22474487j 0.+0.j 0.-1.j ] [0.+0.j 0.+0.j 0.+0.j 0.+1.j 0.+0.j ]]
>>> print(Jy(j=2, isDim=False)) (1, 0) 1j (0, 1) -1j (2, 1) 1.224744871391589j (1, 2) -1.224744871391589j (3, 2) 1.224744871391589j (2, 3) -1.224744871391589j (4, 3) 1j (3, 4) -1j
>>> Jy(j=5, sparse=False, isDim=True) [[0.+0.j 0.-1.j 0.+0.j 0.+0.j 0.+0.j ] [0.+1.j 0.+0.j 0.-1.22474487j 0.+0.j 0.+0.j ] [0.+0.j 0.+1.22474487j 0.+0.j 0.-1.22474487j 0.+0.j ] [0.+0.j 0.+0.j 0.+1.22474487j 0.+0.j 0.-1.j ] [0.+0.j 0.+0.j 0.+0.j 0.+1.j 0.+0.j ]]
>>> print(Jy(j=5, isDim=True)) (1, 0) 1j (0, 1) -1j (2, 1) 1.224744871391589j (1, 2) -1.224744871391589j (3, 2) 1.224744871391589j (2, 3) -1.224744871391589j (4, 3) 1j (3, 4) -1j
- Jz(j: float, sparse: bool = True, isDim: bool = False) Union[scipy.sparse._base.spmatrix, numpy.ndarray] [source]#
Creates the angular momentum (spin) Z operator
for a given spin quantum number j.
- Parameters
j (int or float) – integer or half-integer spin quantum number, or the dimension (then spin quantum number = (d-1)/2)
sparse (bool) – if True(False), the returned Matrix type will be sparse(array)
isDim (bool) – boolean for whether j is spin quantum number of dimension
- Returns
Angular momentum (spin) Z operator
- Return type
Matrix
Examples
>>> Jz(j=2, isDim=False, sparse=False) [[ 2 0 0 0 0] [ 0 1 0 0 0] [ 0 0 0 0 0] [ 0 0 0 -1 0] [ 0 0 0 0 -2]]
>>> print(Jz(j=2, isDim=False)) (0, 0) 2 (1, 1) 1 (2, 2) 0 (3, 3) -1 (4, 4) -2
>>> Jz(j=5, sparse=False, isDim=True) [[ 2. 0. 0. 0. 0.] [ 0. 1. 0. 0. 0.] [ 0. 0. 0. 0. 0.] [ 0. 0. 0. -1. 0.] [ 0. 0. 0. 0. -2.]]
>>> print(Jz(j=5, isDim=True)) (0, 0) 2.0 (1, 1) 1.0 (2, 2) 0.0 (3, 3) -1.0 (4, 4) -2.0
- Js(j: float, sparse: bool = True, isDim: bool = False) Union[scipy.sparse._base.spmatrix, numpy.ndarray] [source]#
Creates the total angular momentum (spin) operator
for a given spin quantum number j.
NOTE This function is direct implementation of the defition, meaning it uses Jx, Jy, and Jz functions
- Parameters
j (int or float) – integer or half-integer spin quantum number, or the dimension (then spin quantum number = (d-1)/2)
sparse (bool) – if True(False), the returned Matrix type will be sparse(array)
isDim (bool) – boolean for whether j is spin quantum number of dimension
- Return type
Total angular momentum (spin) operator
Examples
>>> Js(j=2, isDim=False, sparse=False) [[6.+0.j 0.+0.j 0.+0.j 0.+0.j 0.+0.j] [0.+0.j 6.+0.j 0.+0.j 0.+0.j 0.+0.j] [0.+0.j 0.+0.j 6.+0.j 0.+0.j 0.+0.j] [0.+0.j 0.+0.j 0.+0.j 6.+0.j 0.+0.j] [0.+0.j 0.+0.j 0.+0.j 0.+0.j 6.+0.j]]
>>> print(Js(j=2, isDim=False)) (0, 0) (6+0j) (1, 1) (6+0j) (2, 2) (5.999999999999999+0j) (3, 3) (6+0j) (4, 4) (6+0j)
>>> Js(j=5, sparse=False, isDim=True) [[6.+0.j 0.+0.j 0.+0.j 0.+0.j 0.+0.j] [0.+0.j 6.+0.j 0.+0.j 0.+0.j 0.+0.j] [0.+0.j 0.+0.j 6.+0.j 0.+0.j 0.+0.j] [0.+0.j 0.+0.j 0.+0.j 6.+0.j 0.+0.j] [0.+0.j 0.+0.j 0.+0.j 0.+0.j 6.+0.j]]
>>> print(Js(j=5, isDim=True)) (0, 0) (6+0j) (1, 1) (6+0j) (2, 2) (5.999999999999999+0j) (3, 3) (6+0j) (4, 4) (6+0j)
- displacement(alpha: complex, dim: int, sparse: bool = True) Union[scipy.sparse._base.spmatrix, numpy.ndarray] [source]#
Creates the displacement operator
for a given displacement parameter
.
NOTE can be implemented without matrix exponentiation
- Parameters
alpha (complex) – complex number, the displacement parameter
dim (int) – dimension of the Hilbert space
sparse (bool) – if True(False), the returned Matrix type will be sparse(array)
- Returns
Displacement operator
- Return type
Matrix
Examples
>>> displacement(alpha=1j, dim=4, sparse=False) [[ 0.60605894+0.j 0. +0.6100857j -0.41242505+0.j 0. -0.30065525j] [ 0. +0.6100857j 0.02280184+0.j 0. +0.34204129j -0.71434114+0.j] [-0.41242505+0.j 0. +0.34204129j -0.56045527+0.j 0. +0.63150869j] [ 0. -0.30065525j -0.71434114+0.j 0. +0.63150869j 0.02280184+0.j]]
>>> print(displacement(alpha=1j, dim=4)) (0, 0) (0.6060589372864117+0j) (1, 0) 0.610085698426889j (2, 0) (-0.41242505189886125+0j) (3, 0) (-0-0.3006552538647247j) (0, 1) 0.610085698426889j (1, 1) (0.02280183542861441+0j) (2, 1) 0.3420412936689465j (3, 1) (-0.7143411442030587+0j) (0, 2) (-0.4124250518988613+0j) (1, 2) 0.34204129366894637j (2, 2) (-0.5604552664291825+0j) (3, 2) 0.6315086890322961j (0, 3) -0.3006552538647247j (1, 3) (-0.7143411442030586+0j) (2, 3) 0.6315086890322962j (3, 3) (0.02280183542861464+0j)
- squeeze(alpha: complex, dim: int, sparse: bool = True) Union[scipy.sparse._base.spmatrix, numpy.ndarray] [source]#
Creates the squeezing operator
for a given squeezing parameter
.
NOTE can be implemented without matrix exponentiation
- Parameters
alpha (complex) – complex number, the squeezing parameter
dim (int) – dimension of the Hilbert space
sparse (bool) – if True(False), the returned Matrix type will be sparse(array)
- Returns
Squeezing operator
- Return type
Matrix
Examples
>>> squeeze(alpha=1j, dim=4, sparse=False) [[0.7602446 +0.j 0. +0.j 0. -0.64963694j 0. +0.j ] [0. +0.j 0.33918599+0.j 0. +0.j 0. -0.94071933j] [0. -0.64963694j 0. +0.j 0.7602446 +0.j 0. +0.j ] [0. +0.j 0. -0.94071933j 0. +0.j 0.33918599+0.j ]]
>>> print(squeeze(alpha=1j, dim=4)) (0, 0) (0.7602445970756301+0j) (2, 0) -0.6496369390800625j (1, 1) (0.3391859889869473+0j) (3, 1) -0.940719333741444j (0, 2) -0.6496369390800625j (2, 2) (0.7602445970756302+0j) (1, 3) -0.9407193337414442j (3, 3) (0.33918598898694713+0j)
- parityEXP(HamiltonianCavity: Union[scipy.sparse._base.spmatrix, numpy.ndarray]) Union[scipy.sparse._base.spmatrix, numpy.ndarray] [source]#
Creates a parity operator
by exponenting a given Hamiltonian
.
Keeps sparse/array as sparse/array.
- Parameters
HamiltonianCavity (Matrix) – dimension of the Hilbert space
- Returns
Parity operator
- Return type
Matrix
Examples
>>> ham = number(dimension=5, sparse=False) >>> parityEXP(HamiltonianCavity=ham) # returns an array since ham is an array [[ 1.+0.0000000e+00j 0.+0.0000000e+00j 0.+0.0000000e+00j 0.+0.0000000e+00j 0.+0.0000000e+00j] [ 0.+0.0000000e+00j -1.+1.2246468e-16j 0.+0.0000000e+00j 0.+0.0000000e+00j 0.+0.0000000e+00j] [ 0.+0.0000000e+00j 0.+0.0000000e+00j 1.-2.4492936e-16j 0.+0.0000000e+00j 0.+0.0000000e+00j] [ 0.+0.0000000e+00j 0.+0.0000000e+00j 0.+0.0000000e+00j -1.+3.6739404e-16j 0.+0.0000000e+00j] [ 0.+0.0000000e+00j 0.+0.0000000e+00j 0.+0.0000000e+00j 0.+0.0000000e+00j 1.-4.8985872e-16j]]
>>> ham = number(dimension=5) >>> print(parityEXP(HamiltonianCavity=ham)) # returns a sparse since ham is a sparse (0, 0) (1+0j) (0, 1) 0j (1, 1) (-1+1.2246467991473532e-16j) (1, 2) -0j (2, 2) (1-2.4492935982947064e-16j) (2, 3) 0j (3, 3) (-1+3.6739403974420594e-16j) (3, 4) -0j (4, 4) (1-4.898587196589413e-16j)
- paritySUM(dimension: int, sparse: bool = True) Union[scipy.sparse._base.spmatrix, numpy.ndarray] [source]#
Creates a parity operator by explicitly placing alternating +/- into a matrix.
- Parameters
dimension (int) – dimension of the Hilbert space
sparse (bool) – if True(False), the returned Matrix type will be sparse(array)
- Returns
Parity operator
- Return type
Matrix
Examples
>>> paritySUM(dimension=5, sparse=False) [[ 1. 0. 0. 0. 0.] [ 0. -1. 0. 0. 0.] [ 0. 0. 1. 0. 0.] [ 0. 0. 0. -1. 0.] [ 0. 0. 0. 0. 1.]]
>>> print(paritySUM(dimension=5)) (0, 0) 1.0 (1, 1) -1.0 (2, 2) 1.0 (3, 3) -1.0 (4, 4) 1.0
- compositeOp(operator: Union[scipy.sparse._base.spmatrix, numpy.ndarray], dimB: int = 1, dimA: int = 1) Union[scipy.sparse._base.spmatrix, numpy.ndarray] [source]#
Creates a composite operator
,ie tensor product with identities of dimensions before dimB and after dimA
NOTE simply calls and returns
tensorProd
- Parameters
operator (Matrix) – operator of a sub-system
dimB (int) – (total) dimension of the systems that appear before in the tensor product order
dimA (int) – (total) dimension of the systems that appear after in the tensor product order
- Returns
sub-system operator in the extended Hilbert space
- Return type
Matrix
Examples
>>> compositeOp(operator=sigmaz(), dimB=0, dimA=2).A [[ 1. 0. 0. 0.] [ 0. 1. 0. 0.] [ 0. 0. -1. 0.] [ 0. 0. 0. -1.]]
>>> compositeOp(operator=sigmaz(), dimB=2, dimA=0).A [[ 1. 0. 0. 0.] [ 0. -1. 0. 0.] [ 0. 0. 1. 0.] [ 0. 0. 0. -1.]]
- operatorPow(op: Callable, dim: int, power: int, sparse: bool = True) Union[scipy.sparse._base.spmatrix, numpy.ndarray] [source]#
Creates a quantum operator for given function reference op and raises to a power.
- Parameters
op (Callable) – reference to the function (in here) for the operator
dim (int) – dimension of the Hilbert space
power (int) – power that the operator to be raised
sparse (bool) – if True(False), the returned Matrix type will be sparse(array)
- Returns
an operator raised to a power
- Return type
Matrix
Examples
>>> operatorPow(op=sigmax, dim=2, power=2, sparse=False) [[1 0] [0 1]]
>>> print(operatorPow(op=sigmax, dim=2, power=2)) (0, 0) 1 (1, 1) 1
>>> operatorPow(op=sigmax, dim=2, power=3, sparse=False) [[0 1] [1 0]]
>>> print(operatorPow(op=sigmax, dim=2, power=3)) (1, 0) 1 (0, 1) 1