toqito.matrix_props.majorizes

Determine if one vector or matrix majorizes another.

Module Contents

toqito.matrix_props.majorizes.majorizes(a_var, b_var)[source]

Determine if one vector or matrix majorizes another [@WikiMajorization].

Given (a, b in mathbb{R}^d), we say that (a) weakly majorizes (or dominates) (b) from below if and only if

[

sum_{i=1}^k a_i^{downarrow} geq sum_{i=1}^k b_i^{downarrow}

]

for all (k in {1, ldots, d}).

This function was adapted from the QETLAB package.

Examples

Simple example illustrating that the vector ((3, 0, 0)) majorizes the vector ((1, 1, 1)).

```python exec=”1” source=”above” from toqito.matrix_props import majorizes

print(majorizes([3, 0, 0], [1, 1, 1])) ```

The majorization criterion says that every separable state (rho in text{D}(mathcal{A} otimes mathcal{B})) is such that (text{Tr}_{mathcal{B}}(rho)) majorizes (text{Tr}_{mathcal{A}}(rho)).

```python exec=”1” source=”above” from toqito.matrix_props import majorizes from toqito.states import max_entangled from toqito.matrix_ops import partial_trace

v_vec = max_entangled(3) rho = v_vec @ v_vec.conj().T

print(majorizes(partial_trace(rho, [1]), rho)) ```

Parameters:
  • a_var (numpy.ndarray | list[int]) – Matrix or vector provided as list or np.array.

  • b_var (numpy.ndarray | list[int]) – Matrix or vector provided as list or np.array.

Returns:

Return True if a_var majorizes b_var and False otherwise.

Return type:

bool