Copyright | (c) Stéphane Laurent 2024 |
---|---|
License | GPL-3 |
Maintainer | laurent_step@outlook.fr |
Safe Haskell | Safe-Inferred |
Language | Haskell2010 |
A Jack polynomial can have a very long expression in the canonical basis. A considerably shorter expression is obtained by writing the polynomial as a linear combination of the monomial symmetric polynomials instead, which is always possible since Jack polynomials are symmetric. This is the initial motivation of this module. But now it contains more stuff dealing with symmetric polynomials.
Synopsis
- isSymmetricSpray :: (C a, Eq a) => Spray a -> Bool
- msPolynomial :: (C a, Eq a) => Int -> Partition -> Spray a
- psPolynomial :: (C a, Eq a) => Int -> Partition -> Spray a
- msCombination :: C a => Spray a -> Map Partition a
- psCombination :: forall a. (Eq a, C a) => Spray a -> Map Partition a
- psCombination' :: forall a. (Eq a, C Rational a, C a) => Spray a -> Map Partition a
- prettySymmetricNumSpray :: (Num a, Ord a, Show a, C a) => Spray a -> String
- prettySymmetricQSpray :: QSpray -> String
- prettySymmetricQSpray' :: QSpray' -> String
- prettySymmetricParametricQSpray :: [String] -> ParametricQSpray -> String
- laplaceBeltrami :: (Eq a, C a) => a -> Spray a -> Spray a
- calogeroSutherland :: (Eq a, C a) => a -> Spray a -> Spray a
- hallInnerProduct :: forall a. (Eq a, C a) => Spray a -> Spray a -> a -> a
- hallInnerProduct' :: forall a. (Eq a, C Rational a, C a) => Spray a -> Spray a -> a -> a
- hallInnerProduct'' :: forall a. Real a => Spray a -> Spray a -> a -> Rational
- hallInnerProduct''' :: forall b. (Eq b, C b, C (BaseRing b) b) => Spray b -> Spray b -> BaseRing b -> b
- hallInnerProduct'''' :: forall b. (Eq b, C b, C Rational b, C (BaseRing b) b) => Spray b -> Spray b -> BaseRing b -> b
- symbolicHallInnerProduct :: (Eq a, C a) => Spray a -> Spray a -> Spray a
- symbolicHallInnerProduct' :: (Eq a, C Rational (Spray a), C a) => Spray a -> Spray a -> Spray a
- symbolicHallInnerProduct'' :: forall a. Real a => Spray a -> Spray a -> QSpray
Checking symmetry
isSymmetricSpray :: (C a, Eq a) => Spray a -> Bool Source #
Checks whether a spray defines a symmetric polynomial; this is useless for Jack polynomials because they always are symmetric, but this module contains everything needed to build this function which can be useful in another context
Classical symmetric polynomials
Monomial symmetric polynomial
>>>
putStrLn $ prettySpray' (msPolynomial 3 [2, 1])
(1) x1^2.x2 + (1) x1^2.x3 + (1) x1.x2^2 + (1) x1.x3^2 + (1) x2^2.x3 + (1) x2.x3^2
Power sum polynomial
>>>
putStrLn $ prettyQSpray (psPolynomial 3 [2, 1])
x^3 + x^2.y + x^2.z + x.y^2 + x.z^2 + y^3 + y^2.z + y.z^2 + z^3
Decomposition of symmetric polynomials
msCombination :: C a => Spray a -> Map Partition a Source #
Symmetric polynomial as a linear combination of monomial symmetric polynomials
psCombination :: forall a. (Eq a, C a) => Spray a -> Map Partition a Source #
Symmetric polynomial as a linear combination of power sum polynomials. Symmetry is not checked.
psCombination' :: forall a. (Eq a, C Rational a, C a) => Spray a -> Map Partition a Source #
Symmetric polynomial as a linear combination of power sum polynomials.
Same as psCombination
but with other constraints on the base ring of the spray.
Printing symmetric polynomials
prettySymmetricNumSpray :: (Num a, Ord a, Show a, C a) => Spray a -> String Source #
Prints a symmetric spray as a linear combination of monomial symmetric polynomials
>>>
putStrLn $ prettySymmetricNumSpray $ schurPol' 3 [3, 1, 1]
M[3,1,1] + M[2,2,1]
prettySymmetricQSpray :: QSpray -> String Source #
Prints a symmetric spray as a linear combination of monomial symmetric polynomials
>>>
putStrLn $ prettySymmetricQSpray $ jackPol' 3 [3, 1, 1] 2 'J'
42*M[3,1,1] + 28*M[2,2,1]
prettySymmetricQSpray' :: QSpray' -> String Source #
Same as prettySymmetricQSpray
but for a QSpray'
symmetric spray
prettySymmetricParametricQSpray :: [String] -> ParametricQSpray -> String Source #
Prints a symmetric parametric spray as a linear combination of monomial symmetric polynomials
>>>
putStrLn $ prettySymmetricParametricQSpray ["a"] $ jackSymbolicPol' 3 [3, 1, 1] 'J'
{ [ 4*a^2 + 10*a + 6 ] }*M[3,1,1] + { [ 8*a + 12 ] }*M[2,2,1]
Operators on the space of symmetric polynomials
laplaceBeltrami :: (Eq a, C a) => a -> Spray a -> Spray a Source #
Laplace-Beltrami operator on the space of homogeneous symmetric polynomials; neither symmetry and homogeneity are checked
calogeroSutherland :: (Eq a, C a) => a -> Spray a -> Spray a Source #
Calogero-Sutherland operator on the space of homogeneous symmetric polynomials; neither symmetry and homogeneity are checked
Hall inner product of symmetric polynomials
Hall inner product with parameter. It makes sense only for symmetric sprays, and the symmetry is not checked.
Hall inner product with parameter. Same as hallInnerProduct
but
with other constraints on the base ring of the sprays.
Hall inner product with parameter. Same as hallInnerProduct
but
with other constraints on the base ring of the sprays. It is applicable
to Spray Int
sprays.
:: forall b. (Eq b, C b, C (BaseRing b) b) | |
=> Spray b | parametric spray |
-> Spray b | parametric spray |
-> BaseRing b | parameter |
-> b |
Hall inner product with parameter for parametric sprays, because the
type of the parameter in hallInnerProduct
is strange. For example, a
ParametricQSpray
spray is a Spray RatioOfQSprays
spray, and it makes
more sense to compute the Hall product with a Rational
parameter then
to compute the Hall product with a RatioOfQSprays
parameter.
>>>
import Math.Algebra.Jack.SymmetricPolynomials
>>>
import Math.Algebra.JackSymbolicPol
>>>
import Math.Algebra.Hspray
>>>
jp = jackSymbolicPol 3 [2, 1] 'P'
>>>
hallInnerProduct''' jp jp 5 == hallInnerProduct jp jp (constantRatioOfSprays 5)
:: forall b. (Eq b, C b, C Rational b, C (BaseRing b) b) | |
=> Spray b | parametric spray |
-> Spray b | parametric spray |
-> BaseRing b | parameter |
-> b |
Hall inner product with parameter for parametric sprays. Same as
hallInnerProduct'''
but with other constraints on the types. It is
applicable to SimpleParametricQSpray
sprays, while hallInnerProduct'''
is not.
symbolicHallInnerProduct :: (Eq a, C a) => Spray a -> Spray a -> Spray a Source #
Hall inner product with symbolic parameter. See README for some examples.