state_props.is_mutually_orthogonal

Check if states are mutually orthogonal.

Module Contents

Functions

is_mutually_orthogonal(vec_list)

Check if list of vectors are mutually orthogonal [1].

state_props.is_mutually_orthogonal.is_mutually_orthogonal(vec_list)

Check if list of vectors are mutually orthogonal [1].

We say that two bases

\[\begin{equation} \mathcal{B}_0 = \left\{u_a: a \in \Sigma \right\} \subset \mathbb{C}^{\Sigma} \quad \text{and} \quad \mathcal{B}_1 = \left\{v_a: a \in \Sigma \right\} \subset \mathbb{C}^{\Sigma} \end{equation}\]

are mutually orthogonal if and only if \(\left|\langle u_a, v_b \rangle\right| = 0\) for all \(a, b \in \Sigma\).

For \(n \in \mathbb{N}\), a set of bases \(\left\{ \mathcal{B}_0, \ldots, \mathcal{B}_{n-1} \right\}\) are mutually orthogonal if and only if every basis is orthogonal with every other basis in the set, i.e. \(\mathcal{B}_x\) is orthogonal with \(\mathcal{B}_x^{\prime}\) for all \(x \not= x^{\prime}\) with \(x, x^{\prime} \in \Sigma\).

Examples

The Bell states constitute a set of mutually orthogonal vectors.

>>> from toqito.states import bell
>>> from toqito.state_props import is_mutually_orthogonal
>>> states = [bell(0), bell(1), bell(2), bell(3)]
>>> is_mutually_orthogonal(states)
True

The following is an example of a list of vectors that are not mutually orthogonal.

>>> import numpy as np
>>> from toqito.states import bell
>>> from toqito.state_props import is_mutually_orthogonal
>>> states = [np.array([1, 0]), np.array([1, 1])]
>>> is_mutually_orthogonal(states)
False

References

[1] (1,2)

Wikipedia. Orthogonality. https://en.wikipedia.org/wiki/Orthogonality.

Raises:

ValueError – If at least two vectors are not provided.

Parameters:

vec_list (list[numpy.ndarray | list[float | Any]]) – The list of vectors to check.

Returns:

True if vec_list are mutually orthogonal, and False otherwise.

Return type:

bool