Wolfram Function Repository
Instant-use add-on functions for the Wolfram Language
Function Repository Resource:
Represent a discrete quantum state
ResourceFunction["QuantumDiscreteState"][<|b1→amp1,b2→amp2,…|>,purity,QuantumBasis[…]] represents a discrete quantum state with basis elements bi and associated amplitudes ampi, with purity purity, defined with respect to a specified QuantumBasis. | |
ResourceFunction["QuantumDiscreteState"][{amp1,amp2,…},QuantumBasis[…]] represents a (pure) discrete quantum state with state vector {amp1,amp2,…}, defined with respect to a specified QuantumBasis. | |
ResourceFunction["QuantumDiscreteState"][mat,QuantumBasis[…]] represents a (generically mixed) discrete quantum state with density matrix mat, defined with respect to a specified QuantumBasis. | |
ResourceFunction["QuantumDiscreteState"]["name",pic] represents a named discrete quantum state "name", with respect to the quantum mechanical picture pic. | |
ResourceFunction["QuantumDiscreteState"][{"name",n},pic] represents an n-qudit version of a named discrete quantum state "name", with respect to the quantum mechanical picture pic. | |
ResourceFunction["QuantumDiscreteState"][ResourceFunction["QuantumDiscreteState"][…],QuantumBasis[…]] transforms a specified ResourceFunction["QuantumDiscreteState"] into a new QuantumBasis. | |
ResourceFunction["QuantumDiscreteState"][ResourceFunction["QuantumDiscreteState"][…],pic] transforms a specified ResourceFunction["QuantumDiscreteState"] into the new quantum mechanical picture pic. |
"Amplitudes" | association <|b1→amp1,b2→amp2,…|> of basis names and amplitudes |
"Basis" | which QuantumBasis the state is defined with respect to |
"Picture" | which quantum mechanical picture the state is defined with respect to |
"BasisElements" | list of basis elements bi |
"StateVector" | state vector {amp1,amp2,…} (for pure states only) |
"DensityMatrix" | density matrix mat (for both pure and mixed states) |
"VonNeumannEntropy" | Von Neumann entropy (entanglement entropy) of the state |
"Purity" | purity of the quantum state, specified as a real number |
"PureStateQ" | whether the state is pure (purity equals 1) |
"MixedStateQ" | whether the state is mixed (purity is not equal to 1) |
"Qudits" | number of qudits (subsystems) within the state |
"Dimensions" | dimensionality of each qudit (subsystem) |
"BlochSphericalCoordinates" | spherical coordinates of the state on the Bloch sphere (qubits only) |
"BlochCartesianCoordinates" | Cartesian coordinates of the state on the Bloch sphere (qubits only) |
"BlochPlot" | plot the state on the Bloch sphere (qubits only) |
"Properties" | list of all property names |
"Plus" | positive x-basis state |+〉 on the Bloch sphere |
"Minus" | negative x-basis state |-〉 on the Bloch sphere |
"Left" | positive y-basis state |L〉 on the Bloch sphere |
"Right" | negative y-basis state |R〉 on the Bloch sphere |
"PhiPlus" | maximally-entangled Bell state |Φ+〉 |
"PhiMinus" | maximally-entangled Bell state |Φ-〉 |
"PsiPlus" | maximally-entangled Bell state |Ψ+〉 |
"PsiMinus" | maximally-entangled Bell state |Ψ-〉 |
{"BasisState",list} | composite computational basis state consisting of a tensor product of single-qudit computational basis states from list |
{"Register",n} | quantum register consisting of n qudits in the 0th computational basis state |
{"Register",n,i} | quantum register consisting of n qudits in the ith computational basis state |
"UniformSuperposition" | uniform superposition of a single qudit |
{"UniformSuperposition",n} | uniform superposition of n qudits |
"RandomPure" | random pure state for a single qudit |
{"RandomPure",n} | random pure state for n qudits |
"GHZ" | maximally-entangled Greenberger–Horne–Zeilinger state for 3 qudits |
{"GHZ",n} | maximally-entangled Greenberger–Horne–Zeilinger state for n qudits |
"W" | entangled W state for 3 qudits |
{"W",n} | entangled W state for n qudits |
"Werner" | bipartite Werner state for 2 qubits with relative weight equal to 0 |
{"Werner",ρ} | bipartite Werner state for 2 qubits with relative weight equal to ρ |
{"Graph",g} | multi-qubit graph state specified by g |
Create a pure discrete quantum state from a state vector in the computational basis (default):
In[1]:= |
Out[1]= |
Return its amplitude association (automatically normalized):
In[2]:= |
Out[2]= |
Return its density matrix:
In[3]:= |
Out[3]= |
Plot the state on the Bloch sphere:
In[4]:= |
Out[4]= |
Create a mixed discrete quantum state from a density matrix in the computational basis:
In[5]:= |
Out[5]= |
Show that the state is not pure:
In[6]:= |
Out[6]= |
In[7]:= |
Out[7]= |
Return its von Neumann entropy:
In[8]:= |
Out[8]= |
Plot the state on the Bloch sphere:
In[9]:= |
Out[9]= |
Create a pure discrete quantum state by explicitly specifying an association of amplitudes in a given basis:
In[10]:= |
Out[10]= |
Return its state vector (automatically normalized):
In[11]:= |
Out[11]= |
Return its basis element association:
In[12]:= |
Out[12]= |
Return the spherical coordinates of the state on the Bloch sphere:
In[13]:= |
Out[13]= |
Return the Cartesian coordinates of the state on the Bloch sphere:
In[14]:= |
Out[14]= |
Create a maximally-entangled GHZ state for 3 qubits (default):
In[15]:= |
Out[15]= |
In[16]:= |
Out[16]= |
Create a maximally-entangled GHZ state for 4 qubits instead:
In[17]:= |
Out[17]= |
In[18]:= |
Out[18]= |
By default, all discrete quantum states are assumed to consist of tensor products of 2-dimensional subsystems (i.e. qubits):
In[19]:= |
Out[19]= |
In[20]:= |
Out[20]= |
Create a discrete quantum state with the same state vector consisting of a single 4-dimensional subsystem (i.e. a qudit) instead:
In[21]:= |
Out[21]= |
In[22]:= |
Out[22]= |
Create a pure discrete quantum state in the computational basis (default):
In[23]:= |
Out[23]= |
In[24]:= |
Out[24]= |
In[25]:= |
Out[25]= |
Transform the state to the Fourier basis:
In[26]:= |
Out[26]= |
In[27]:= |
Out[27]= |
In[28]:= |
Out[28]= |
Transform the state back to the computational basis:
In[29]:= |
Out[29]= |
In[30]:= |
Out[30]= |
In[31]:= |
Out[31]= |
The initial and final states are the same:
In[32]:= |
Out[32]= |
Represent the maximally-entangled "PhiPlus" Bell basis state in the Heisenberg picture:
In[33]:= |
Out[33]= |
In[34]:= |
Out[34]= |
Transform the state to the interaction picture:
In[35]:= |
Out[35]= |
In[36]:= |
Out[36]= |
Mixed states do not have state vector representations—only density matrix representations:
In[37]:= |
Out[37]= |
In[38]:= |
Out[38]= |
In[39]:= |
Out[39]= |
Return its amplitude association:
In[40]:= |
Out[40]= |
Return its purity:
In[41]:= |
Out[41]= |
On the other hand, pure states have both state vector and density matrix representations:
In[42]:= |
Out[42]= |
In[43]:= |
Out[43]= |
In[44]:= |
Out[44]= |
Return its purity:
In[45]:= |
Out[45]= |
Create a 3-qubit random pure quantum state in the computational basis:
In[46]:= |
Out[46]= |
In[47]:= |
Out[47]= |
In[48]:= |
Out[48]= |
Represent the same state in the Pauli-X basis instead:
In[49]:= |
Out[49]= |
In[50]:= |
Out[50]= |
In[51]:= |
Out[51]= |
Represent the orthonormal x- and y-basis states on the Bloch sphere:
In[52]:= |
Out[52]= |
In[53]:= |
Out[53]= |
Represent the maximally-entangled Bell basis states for 2 qubits:
In[54]:= |
Out[54]= |
In[55]:= |
Out[55]= |
Represent the {0,1} computational basis state for a pair of 2 qubits:
In[56]:= |
Out[56]= |
In[57]:= |
Out[57]= |
Represent the {2,2,1,1} computational basis state for a 4-tuple of 3-dimensional qudits:
In[58]:= |
Out[58]= |
In[59]:= |
Out[59]= |
Represent a 3-qubit quantum register in the 0th computational basis state:
In[60]:= |
Out[60]= |
In[61]:= |
Out[61]= |
Represent a 3-qubit quantum register in the 4th computational basis state:
In[62]:= |
Out[62]= |
In[63]:= |
Out[63]= |
Represent a quantum register consisting of 2 3-dimensional qudits in the 4th computational basis state:
In[64]:= |
Out[64]= |
In[65]:= |
Out[65]= |
Represent a uniform superposition state for a single qubit:
In[66]:= |
Out[66]= |
In[67]:= |
Out[67]= |
Represent a uniform superposition state for 3 qubits:
In[68]:= |
Out[68]= |
In[69]:= |
Out[69]= |
Represent a uniform superposition state for 2 3-dimensional qudits:
In[70]:= |
Out[70]= |
In[71]:= |
Out[71]= |
Represent a random pure state for a single qubit:
In[72]:= |
Out[72]= |
In[73]:= |
Out[73]= |
Represent a random pure state for 3 qubits:
In[74]:= |
Out[74]= |
In[75]:= |
Out[75]= |
Represent a random pure state for 2 3-dimensional qudits:
In[76]:= |
Out[76]= |
In[77]:= |
Out[77]= |
Represent the maximally-entangled GHZ state for 3 qubits:
In[78]:= |
Out[78]= |
In[79]:= |
Out[79]= |
Represent the maximally-entangled GHZ state for 4 qubits:
In[80]:= |
Out[80]= |
In[81]:= |
Out[81]= |
Represent the maximally-entangled GHZ state for 3 3-dimensional qudits:
In[82]:= |
Out[82]= |
In[83]:= |
Out[83]= |
Represent the entangled W state for 3 qubits:
In[84]:= |
Out[84]= |
In[85]:= |
Out[85]= |
Represent the entangled W state for 4 qubits:
In[86]:= |
Out[86]= |
In[87]:= |
Out[87]= |
Represent the entangled W state for 3 3-dimensional qudits:
In[88]:= |
Out[88]= |
In[89]:= |
Out[89]= |
Represent the bipartite Werner state for 2 qubits, with relative weight equal to 0 (default):
In[90]:= |
Out[90]= |
In[91]:= |
Out[91]= |
In[92]:= |
Out[92]= |
Return its purity:
In[93]:= |
Out[93]= |
Represent the bipartite Werner state for 2 qubits, with relative weight equal to 0.5:
In[94]:= |
Out[94]= |
In[95]:= |
Out[95]= |
In[96]:= |
Out[96]= |
Return its von Neumann entropy:
In[97]:= |
Out[97]= |
Represent the 3-qubit graph state described by a 3-vertex path graph:
In[98]:= |
Out[98]= |
In[99]:= |
Out[99]= |
In[100]:= |
Out[100]= |
Represent the 3-qubit graph state described by a 3-vertex triangle graph:
In[101]:= |
Out[101]= |
In[102]:= |
Out[102]= |
In[103]:= |
Out[103]= |
QuantumDiscreteState objects can be constructed purely symbolically (without explicit vector or matrix elements):
In[104]:= |
Out[104]= |
View the amplitude association:
In[105]:= |
Out[105]= |
Standard operations can still be performed on purely symbolic states:
In[106]:= |
Out[106]= |
In[107]:= |
Out[107]= |
View a list of properties that can be extracted from a QuantumDiscreteState object:
In[108]:= |
Out[108]= |
In[109]:= |
Out[109]= |
Return the association of amplitudes:
In[110]:= |
Out[110]= |
Return which QuantumBasis the state is defined with respect to:
In[111]:= |
Out[111]= |
Return which quantum mechanical picture the state is defined with respect to:
In[112]:= |
Out[112]= |
Return the association of names and basis elements:
In[113]:= |
Out[113]= |
Return the state vector:
In[114]:= |
Out[114]= |
Return the density matrix:
In[115]:= |
Out[115]= |
Return the von Neumann entropy (0 for pure states):
In[116]:= |
Out[116]= |
Return the purity (1 for pure states):
In[117]:= |
Out[117]= |
Determine whether the state is pure:
In[118]:= |
Out[118]= |
Determine whether the state is mixed:
In[119]:= |
Out[119]= |
Return the number of qudits (subsystems):
In[120]:= |
Out[120]= |
Return the number of dimensions:
In[121]:= |
Out[121]= |
Return the spherical coordinates of the state on the Bloch sphere:
In[122]:= |
Out[122]= |
Return the Cartesian coordinates of the state on the Bloch sphere:
In[123]:= |
Out[123]= |
Plot the state on the Bloch sphere:
In[124]:= |
Out[124]= |
This work is licensed under a Creative Commons Attribution 4.0 International License