toqito.matrix_props.is_pseudo_unitary

Checks if matrix is pseudo unitary.

Module Contents

toqito.matrix_props.is_pseudo_unitary.is_pseudo_unitary(mat, p, q, rtol=1e-05, atol=1e-08)[source]

Check if a matrix is pseudo-unitary.

A matrix A of size (p+q)x(p+q) is pseudo-unitary with respect to a given signature matrix J if it satisfies

[

A^* J A = J,

]

where:

  • (A^*) is the conjugate transpose (Hermitian transpose) of (A),

  • (J) is a diagonal matrix with first (p) diagonal entries equal to 1 and next (q)

    diagonal entries equal to -1

Examples

Consider the following matrix:

[
A = begin{pmatrix}

cosh(1) & sinh(1) \ sinh(1) & cosh(1)

end{pmatrix}

]

with the signature matrix:

[
J = begin{pmatrix}

1 & 0 \ 0 & -1

end{pmatrix}

]

Our function confirms that (A) is pseudo-unitary.

```python exec=”1” source=”above” import numpy as np from toqito.matrix_props import is_pseudo_unitary

A = np.array([[np.cosh(1), np.sinh(1)], [np.sinh(1), np.cosh(1)]])

print(is_pseudo_unitary(A, p=1, q=1)) ```

However, the following matrix (B)

[
B = begin{pmatrix}

1 & 0 \ 1 & 1

end{pmatrix}

]

is not pseudo-unitary with respect to the same signature matrix:

```python exec=”1” source=”above” import numpy as np from toqito.matrix_props import is_pseudo_unitary

B = np.array([[1, 0], [1, 1]])

print(is_pseudo_unitary(B, p=1, q=1)) ```

Raises:

ValueError – When p < 0 or q < 0.

Parameters:
  • mat (numpy.ndarray) – The matrix to check.

  • p (int) – Number of positive entries in the signature matrix.

  • q (int) – Number of negative entries in the signature matrix.

  • rtol (float) – The relative tolerance parameter (default 1e-05).

  • atol (float) – The absolute tolerance parameter (default 1e-08).

Returns:

code:True if the matrix is pseudo-unitary, and :code:False otherwise.

Return type:

Return