kronecker_product_list

Graph.kronecker_product_list(operators, *, name=None)

Calculate the Kronecker product between a list of operators.

Parameters
  • operators (list[Tensor or np.ndarray]) – The list of operators. It must contain at least one operator. The operators must be at least 2D and can contain leading batch dimensions.

  • name (str, optional) – The name of the node.

Returns

The Kronecker product of the list of operators. The Hilbert space of the output is equal to the tensor product of the Hilbert spaces of all the given operators.

Return type

Tensor

See also

embed_operators()

Embed operators into a larger Hilbert space.

kron()

Kronecker product between two objects.

pauli_kronecker_product()

Embed Pauli matrices into a larger Hilbert space.

Examples

>>> number_op = graph.number_operator(3)
>>> sigma_x = graph.pauli_matrix("X")
>>> graph.kronecker_product_list([number_op, sigma_x], name="N0X1")
<Tensor: name="N0X1", operation_name="kronecker_product_list", shape=(6, 6)>
>>> result = qctrl.functions.calculate_graph(
...     graph=graph, output_node_names=["N0X1"]
... )
>>> result.output["N0X1"]["value"]
array([[0.+0.j, 0.+0.j, 0.+0.j, 0.+0.j, 0.+0.j, 0.+0.j],
       [0.+0.j, 0.+0.j, 0.+0.j, 0.+0.j, 0.+0.j, 0.+0.j],
       [0.+0.j, 0.+0.j, 0.+0.j, 1.+0.j, 0.+0.j, 0.+0.j],
       [0.+0.j, 0.+0.j, 1.+0.j, 0.+0.j, 0.+0.j, 0.+0.j],
       [0.+0.j, 0.+0.j, 0.+0.j, 0.+0.j, 0.+0.j, 2.+0.j],
       [0.+0.j, 0.+0.j, 0.+0.j, 0.+0.j, 2.+0.j, 0.+0.j]])