Orthogonal group#
This module provides tools for computations of integrals of polynomials on the orthogonal group.
Orthogonal group Python interface
References
[1] Collins, B., & Śniady, P. (2006). Integration with respect to the Haar measure on unitary, orthogonal and symplectic group. Communications in Mathematical Physics, 264(3), 773-795.
[2] Matsumoto, S. (2013). Weingarten calculus for matrix ensembles associated with compact symmetric spaces. arXiv preprint arXiv:1301.5401.
[3] Macdonald, I. G. (1998). Symmetric functions and Hall polynomials. Oxford university press.
- haarpy.orthogonal.zonal_spherical_function(permutation, partition)[source]#
Returns the zonal spherical function of the Gelfand pair \((S_{2p}, H_p)\)
- Parameters:
permutation (
Permutation) – A permutation of the symmetric group \(S_{2p}\)partition (
tuple[int,...]) – An integer partition of \(p\)
- Returns:
The zonal spherical function of the given permutation
- Return type:
Fraction- Raises:
TypeError – If
partitionis not a tupleTypeError – If
permutationis not a permutation
Examples
>>> from sympy.combinatorics import Permutation >>> from haarpy import zonal_spherical_function >>> zonal_spherical_function(Permutation(5)(0,1,2), (2,1)) Fraction(1, 6)
See also
haarpy.symmetric.HyperoctahedralGroup()Returns the hyperoctahedral group \(H_p\)
haarpy.symmetric.murn_naka_rule()Implementation of the Murnaghan-Nakayama rule for the characters irreducible representations of the symmetric group
- haarpy.orthogonal.weingarten_orthogonal(permutation, orthogonal_dimension)[source]#
Returns the orthogonal Weingarten function
- Parameters:
permutation (
Permutation|tuple[int,...]) – A permutation of the symmetric group or its coset-typeorthogonal_dimension (
Symbol) – The dimension of the orthogonal group
- Returns:
The Weingarten function
- Return type:
Expr- Raises:
TypeError – If unitary_dimension has the wrong type
TypeError – If
permutationhas the wrong typeValueError – If the degree \(2p\) of the symmetric group \(S_{2p}\) is not even
Notes
Since the orthogonal Weingarten function is invariant over coset-types, the argument may be given either as a permutation or as its coset-type
Examples
>>> from sympy import Symbol >>> from sympy.combinatorics import Permutation >>> from haarpy import weingarten_orthogonal >>> d = Symbol("d") >>> weingarten_orthogonal(Permutation(5)(0,1,2), 6) Fraction(-1, 1200) >>> weingarten_orthogonal(Permutation(5)(0,1,2), d) -1/(d*(d - 2)*(d - 1)*(d + 4)) >>> weingarten_orthogonal((2,1), d) -1/(d*(d - 2)*(d - 1)*(d + 4))
See also
haarpy.orthogonal.zonal_spherical_function()Returns the zonal spherical function of the Gelfand pair \((S_{2p}, H_p)\)
haarpy.symmetric.coset_type()Returns the coset-type of a given permutation of the symmetric group
haarpy.symmetric.coset_type_representative()Returns a representative permutation of the symmetric group \(S_{2p}\) for a given input coset-type
- haarpy.orthogonal.haar_integral_orthogonal(sequences, orthogonal_dimension)[source]#
Returns the integral over orthogonal group polynomial sampled at random from the Haar measure
- Parameters:
sequences (
tuple[tuple[int,...],...]) – Sequences of matrix elementsorthogonal_dimension (
Symbol) – The dimension of the orthogonal group
- Returns:
The integral under the Haar measure
- Return type:
Expr- Raises:
ValueError – If the argument
sequencesdoes not contain 2 tuplesValueError – If the sequences are of different lengths
Examples
>>> from sympy import Symbol >>> from haarpy import haar_integral_orthogonal >>> d = Symbol("d") >>> row_indices, column_indices = (0, 0, 1, 1, 2, 2), (0, 2, 2, 1, 1, 0) >>> haar_integral_orthogonal((row_indices, column_indices), 4) Fraction(1, 576) >>> haar_integral_orthogonal((row_indices, column_indices), d) 2/(d*(d - 2)*(d - 1)*(d + 2)*(d + 4))
See also
haarpy.symmetric.coset_type()Returns the coset-type of a given permutation of the symmetric group
haarpy.symmetric.hyperoctahedral_transversal()Yields the permutations of \(M_{2p}\), the complete set of coset representatives of the quotient group \(S_{2p}/H_p\)
haarpy.orthogonal.weingarten_orthogonal()Computes the orthogonal Weingarten function