Function Repository Resource:

# QuantumTensorAutomaton

A quantum cellular automaton model that evolves the tensor product of a collection of initial qubits using arbitrary compositions of unitary operators for a finite number of steps

Contributed by: Ruhi Shah and Jonathan Gorard
 ResourceFunction["QuantumTensorAutomaton"][matrices,initial,t] evolves initial for t steps using a composition of unitary matrices given by matrices.

## Details and Options

Any number of unitary matrices can be composed. The argument matrices must be a list.
Use "ColourPlot"True to visualize the state vectors of the individual steps.
Setting "Norms"True shows the norm-squared probability of being in a given state.
WIth "PlotNorms"True, ResourceFunction["QuantumTensorAutomaton"] shows the plot of norm-squared probabilities over time.
Common operators to use in the first argument include:
Rotation:
CNOT:
Pauli (X/Y/Z):
Square root of NOT:
Fourier:
Any unitary operator

## Examples

### Basic Examples (5)

Define a "CNOT" operator:

 In[1]:=

Apply the operator "CNOT" 10 times to an initial state:

 In[2]:=
 Out[2]=

Visualize the state vectors for the preceding:

 In[3]:=
 Out[3]=

Compute the probabilities (norms squared) for the preceding:

 In[4]:=
 Out[4]=

Plot the probabilities (norms squared) against the steps (time) for the preceding:

 In[5]:=
 Out[5]=

### Scope (2)

Define and compose multiple operators:

 In[6]:=
 Out[6]=

Random unitary operators will also work:

 In[7]:=
 Out[7]=

### Neat Examples (3)

#### Resonance  (3)

Some operators have unique resonance properties:

 In[8]:=
 Out[8]=

This can be visualized in Fourier space:

 In[9]:=
 Out[9]=

reveals the main frequencies:

 In[10]:=
 Out[10]=

Jonathan Gorard

## Version History

• 1.0.0 – 06 August 2019