Unitary group#
This module provides tools for computations of integrals of polynomials on the unitary group.
Unitary group Python interface
References
[1] Collins, B. (2003). Moments and cumulants of polynomial random variables on unitarygroups, the Itzykson-Zuber integral, and free probability. International Mathematics Research Notices, 2003(17), 953-982.
[2] Matsumoto, S. (2013). Weingarten calculus for matrix ensembles associated with compact symmetric spaces. arXiv preprint arXiv:1301.5401.
- haarpy.unitary.representation_dimension(partition, unitary_dimension)[source]#
Returns the dimension of the unitary group’s representation labelled by the input partition
- Parameters:
partition (
tuple[int,...]) – A partition labelling a representation of the unitary group \(U(d)\)unitary_dimension (
Symbol) – The dimension \(d\) of the unitary group
- Returns:
The dimension of the unitary group’s representation labelled by the input partition
- Return type:
Expr
Examples
>>> from sympy import Symbol >>> from haarpy import representation_dimension >>> d = Symbol("d") >>> representation_dimension((2,1,1), 4) 15 >>> representation_dimension((2,1,1), d) d*(d/2 - 1/2)*(d - 2)*(d + 1)/4
- haarpy.unitary.weingarten_unitary(cycle, unitary_dimension)[source]#
Returns the unitary Weingarten function
- Parameters:
cycle (
Permutation|tuple[int,...]) – A permutation from the symmetric group or a partition reprensenting its cycle-typeunitary_dimension (
Symbol) – The dimension \(d\) of the unitary matrix \(U(d)\)
- Returns:
The Weingarten function
- Return type:
Expr- Raises:
TypeError – If unitary_dimension has the wrong type
TypeError – If cycle has the wrong type
Notes
Since the unitary Weingarten function is a class function on the symmetric group, the argument may be given either as a permutation or as its cycle-type
Examples
>>> from sympy import Symbol >>> from haarpy import weingarten_unitary >>> d = Symbol("d") >>> weingarten_unitary(Permutation(2)(0, 1), 4) Fraction(-1, 180) >>> weingarten_unitary(Permutation(2)(0, 1), d) -1/((d - 2)*(d - 1)*(d + 1)*(d + 2)) >>> weingarten_unitary((2, 1), d) -1/((d - 2)*(d - 1)*(d + 1)*(d + 2))
See also
haarpy.symmetric.murn_naka_rule()Implementation of the Murnaghan-Nakayama rule for the characters irreducible representations of the symmetric group \(S_p\)
haarpy.unitary.representation_dimension()Computes the dimension of the unitary group’s representation labelled by a given partition
- haarpy.unitary.haar_integral_unitary(sequences, unitary_dimension)[source]#
Returns the integral of a monomial over the unitary group
- Parameters:
sequences (
tuple[tuple[int,...],...]) – Sequences of matrix elementsunitary_dimension (
Symbol) – The dimension of the unitary group
- Returns:
The integral under the Haar measure
- Return type:
Expr- Raises:
ValueError – if sequences do not contain 4 tuples
ValueError – if the input sequences are of different lengths
Examples
>>> from sympy import Symbol >>> from haarpy import haar_integral_unitary >>> d = Symbol("d") >>> seq_i, seq_j = (0, 1, 2), (0, 0, 1) >>> seq_i_prime, seq_j_prime = (0, 1, 2), (0, 1, 0) >>> haar_integral_unitary((seq_i, seq_j, seq_i_prime, seq_j_prime), 5) Fraction(-1, 840) >>> haar_integral_unitary((seq_i, seq_j, seq_i_prime, seq_j_prime), d) -1/(d*(d - 1)*(d + 1)*(d + 2))
See also
haarpy.symmetric.stabilizer_coset()Returns all permutations sending a first sequence to a second sequence
haarpy.unitary.weingarten_unitary()Returns the unitary Weingarten function