pauli_kronecker_product
- Graph.pauli_kronecker_product(labels, subsystem_count, *, name=None)
Place Pauli matrices into their two-dimensional subsystems of a system and returns the Kronecker product.
- Parameters
labels (list[tuple[str, int]]) – A list of tuples, each containing a pair of labels for the Pauli matrix and its position. The Pauli matrix label is a string
'I'
,'X'
,'Y'
,'Z'
,'M'
, or'P'
and the position label is a non-negative integer and smaller than system_count indicating the position of the Pauli matrix in the system. At least one tuple must be provided.'M'
creates the lowering matrix \(\sigma_- = \frac{1}{2}(\sigma_x + i\sigma_y)\).'P'
creates the raising matrix \(\sigma_+ = \frac{1}{2}(\sigma_x - i\sigma_y)\). We use the convention \(|\downarrow\rangle = \begin{bmatrix}1\\0\end{bmatrix}\) and \(|\uparrow\rangle = \begin{bmatrix}0\\1\end{bmatrix}\).subsystem_count (int) – The number of two-level subsystems that constitute the system. Must be a positive number.
name (str, optional) – The name of the node.
- Returns
The Kronecker product of Pauli matrices.
- Return type
See also
embed_operators
Embed operators into a larger Hilbert space.
kron
Kronecker product between two objects.
kronecker_product_list
Kronecker product of a list of operators.
Examples
Place a single Pauli \(X\) matrix in the second of two subsystems to create \(IX\).
>>> graph.pauli_kronecker_product([("X", 1)], subsystem_count=2, name="IX") <Tensor: name="IX", operation_name="pauli_kronecker_product", shape=(4, 4)> >>> result = qctrl.functions.calculate_graph(graph=graph, output_node_names=["IX"]) >>> result.output["IX"]["value"] array([[0.+0.j, 1.+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, 1.+0.j], [0.+0.j, 0.+0.j, 1.+0.j, 0.+0.j]])
Place a single Pauli \(X\) matrix in the second of three subsystems to create \(IXI\).
>>> graph.pauli_kronecker_product([("X", 1)], subsystem_count=3, name="IXI") <Tensor: name="IXI", operation_name="pauli_kronecker_product", shape=(8, 8)> >>> result = qctrl.functions.calculate_graph(graph=graph, output_node_names=["IXI"]) >>> result.output["IXI"]["value"] array([[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, 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, 0.+0.j, 1.+0.j, 0.+0.j, 0.+0.j]])
Place two Pauli \(X\) matrices in the second and third of three subsystems to create \(IXX\).
>>> graph.pauli_kronecker_product([("X", 1), ("X", 2)], subsystem_count=3, name="IXX") <Tensor: name="IXX", operation_name="pauli_kronecker_product", shape=(8, 8)> >>> result = qctrl.functions.calculate_graph(graph=graph, output_node_names=["IXX"]) >>> result.output["IXX"]["value"] array([[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, 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, 0.+0.j, 1.+0.j, 0.+0.j, 0.+0.j, 0.+0.j]])