QubitPopulations - Maple Help

QuantumComputing

 QubitPopulations
 measure the populations of the qubits in a quantum state

 Calling Sequence Parameters Description

 Calling Sequence QubitPopulations(state)
 Parameters

 state - polynom or Array; quantum state in Dirac notation (polynom) or as a multidimensional Array (Array)

Description

 • The QubitPopulations command accepts a quantum state.
 • The command returns a Vector of the populations of the qubits in the quantum state.
 • The population of a qubit is defined as the fraction of the qubit in its up state.

Examples

First we load the QuantumChemistry package

 > $\mathrm{with}\left(\mathrm{QuantumChemistry}\right):$

Next we load the QuantumComputing subpackage

 > $\mathrm{with}\left(\mathrm{QuantumComputing}\right);$
 $\left[{\mathrm{ConvertDirac}}{,}{\mathrm{Gate}}{,}{\mathrm{InitialState}}{,}{\mathrm{MeasureState}}{,}{\mathrm{PrepareState}}{,}{\mathrm{QubitPopulations}}{,}{\mathrm{QubitPopulationsPlot}}\right]$ (1)

We can initialize a state of 4 qubits on our simulated quantum computer with the InitialState command

 >
 ${\mathrm{state0}}{≔}{{\mathrm{\Psi }}}_{{0}{,}{0}{,}{0}{,}{0}}$ (2)

The initial wave function has each of its 4 qubits in the lower state of the qubit, denoted by 0.  To illustrate preparing a state on the quantum computer, let's use a product of gates (unitary transformations), known as a circuit, to prepare a Schrodinger cat state in which the state of all qubits down becomes entangled with the state of all qubits up.  In QCT the circuit is readily assemble as a Maple list of equations.  The left side of an equation indicates the qubit or qubits on which the gate acts and the right side provides the gate itself.

 >

 ${\mathrm{circuit}}{≔}\left[{1}{=}\left[\begin{array}{cc}\frac{\sqrt{{2}}}{{2}}& \frac{\sqrt{{2}}}{{2}}\\ \frac{\sqrt{{2}}}{{2}}& {-}\frac{\sqrt{{2}}}{{2}}\end{array}\right]{,}\left[{1}{,}{2}\right]{=}\left[\begin{array}{cccc}{1}& {0}& {0}& {0}\\ {0}& {0}& {0}& {1}\\ {0}& {0}& {1}& {0}\\ {0}& {1}& {0}& {0}\end{array}\right]{,}\left[{2}{,}{3}\right]{=}\left[\begin{array}{cccc}{1}& {0}& {0}& {0}\\ {0}& {0}& {0}& {1}\\ {0}& {0}& {1}& {0}\\ {0}& {1}& {0}& {0}\end{array}\right]{,}\left[{3}{,}{4}\right]{=}\left[\begin{array}{cccc}{1}& {0}& {0}& {0}\\ {0}& {0}& {0}& {1}\\ {0}& {0}& {1}& {0}\\ {0}& {1}& {0}& {0}\end{array}\right]\right]$ (3)

To prepare the new state, we act on the initial state state0 with our circuit

 >

 ${\mathrm{state2}}{≔}\frac{\sqrt{{2}}{}{{\mathrm{\Psi }}}_{{0}{,}{0}{,}{0}{,}{0}}}{{2}}{+}\frac{\sqrt{{2}}{}{{\mathrm{\Psi }}}_{{1}{,}{1}{,}{1}{,}{1}}}{{2}}$ (4)

The new state entangles a state of 4 "down" qubits with a state of 4 "up" qubits.  Like Schrodinger's cat, our state is half up and half down.

The probability of being "up" in each qubit is 1/2 as we can see from the QubitPopulations command

 > $\mathrm{QubitPopulations}\left(\mathrm{state2}\right);$
 $\left[\begin{array}{c}\frac{{1}}{{2}}\\ \frac{{1}}{{2}}\\ \frac{{1}}{{2}}\\ \frac{{1}}{{2}}\end{array}\right]$ (5)
 >