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