matrix_props.is_commuting

Is matrix commuting.

Module Contents

Functions

is_commuting(mat_1, mat_2)

Determine if two linear operators commute with each other [2].

matrix_props.is_commuting.is_commuting(mat_1, mat_2)

Determine if two linear operators commute with each other [2].

For any pair of operators \(X, Y \in \text{L}(\mathcal{X})\), the Lie bracket \(\left[X, Y\right] \in \text{L}(\mathcal{X})\) is defined as

\[\left[X, Y\right] = XY - YX.\]

It holds that \(\left[X,Y\right]=0\) if and only if \(X\) and \(Y\) commute (Section: Lie Brackets And Commutants from [1]).

Examples

Consider the following matrices:

\[\begin{split}A = \begin{pmatrix} 0 & 1 \\ 0 & 0 \end{pmatrix}, \quad \text{and} \quad B = \begin{pmatrix} 1 & 0 \\ 0 & 0 \end{pmatrix}.\end{split}\]

It holds that \(AB=0\), however

\[\begin{split}BA = \begin{pmatrix} 0 & 1 \\ 0 & 0 \end{pmatrix} = A,\end{split}\]

and hence, do not commute.

>>> from toqito.matrix_props import is_commuting
>>> import numpy as np
>>> mat_1 = np.array([[0, 1], [0, 0]])
>>> mat_2 = np.array([[1, 0], [0, 0]])
>>> is_commuting(mat_1, mat_2)
False

Consider the following pair of matrices:

\[\begin{split}A = \begin{pmatrix} 1 & 0 & 0 \\ 0 & 1 & 0 \\ 1 & 0 & 2 \end{pmatrix} \quad \text{and} \quad B = \begin{pmatrix} 2 & 4 & 0 \\ 3 & 1 & 0 \\ -1 & -4 & 1 \end{pmatrix}.\end{split}\]

It may be verified that \(AB = BA = 0\), and therefore \(A\) and \(B\) commute.

>>> from toqito.matrix_props import is_commuting
>>> import numpy as np
>>> mat_1 = np.array([[1, 0, 0], [0, 1, 0], [1, 0, 2]])
>>> mat_2 = np.array([[2, 4, 0], [3, 1, 0], [-1, -4, 1]])
>>> is_commuting(mat_1, mat_2)
True

References

[1]

John Watrous. The Theory of Quantum Information. Cambridge University Press, 2018. doi:10.1017/9781316848142.

[2] (1,2)

Wikipedia. Commuting matrices. https://en.wikipedia.org/wiki/Commuting_matrices.

Parameters:
  • mat_1 (numpy.ndarray) – First matrix to check.

  • mat_2 (numpy.ndarray) – Second matrix to check.

Returns:

Return True if mat_1 commutes with mat_2 and False otherwise.

Return type:

bool