Source code for toqito.matrix_props.is_orthonormal
"""Checks if the set of vectors are orthonormal."""
import numpy as np
from toqito.state_props.is_mutually_orthogonal import is_mutually_orthogonal
[docs]
def is_orthonormal(vectors: list[np.ndarray]) -> bool:
r"""Check if the vectors are orthonormal.
Examples:
The following vectors are an example of an orthonormal set of
vectors in \(\mathbb{R}^3\).
\[
\begin{pmatrix}
1 \\ 0 \\ 1
\end{pmatrix}, \quad
\begin{pmatrix}
1 \\ 1 \\ 0
\end{pmatrix}, \quad \text{and} \quad
\begin{pmatrix}
0 \\ 0 \\ 1
\end{pmatrix}
\]
To check these are a known set of orthonormal vectors:
```python exec="1" source="above"
import numpy as np
from toqito.matrix_props import is_orthonormal
v_1 = np.array([1, 0, 0])
v_2 = np.array([0, 1, 0])
v_3 = np.array([0, 0, 1])
v = np.array([v_1, v_2, v_3])
print(is_orthonormal(v))
```
Args:
vectors: A list of `np.ndarray` 1-by-n vectors.
Returns:
True if vectors are orthonormal; False otherwise.
"""
return is_mutually_orthogonal(vectors) and np.allclose(
np.dot(vectors, np.conjugate(vectors).T), np.eye(vectors.shape[0])
)