Schur polynomials
Given a partition $\lambda$ with $n$ parts, the Schur polynomial is defined to be the polynomial
\[s_\lambda := \sum x_1^{m_1}\dots x_n^{m_n}\]
where the sum is taken over all semistandard tableaux $T$ of shape $\lambda$ and $m_i$ is the weight of $i$ in $T$.
There are two different algorithms for the computation of a Schur polynomial implemented which are automatically selected depending on the size of the input.
For small integers or if $n\geq 10$, the combinatorial algorithm is used. This algorithm directly applies the above definition.
In the other cases, Cauchy's bialternant formula
\[s_\lambda(x_1, \dots, x_n) = \prod_{1\leq i < j \leq n} (x_i - x_j)^{-1} \begin{vmatrix} x_1^{\lambda_1 + n - 1} & x_2^{\lambda_1 + n - 1} & \dots & x_n^{\lambda_1 + n - 1} \\ x_1^{\lambda_2 + n - 2} & x_2^{\lambda_2 + n - 2} & \dots & x_n^{\lambda_2 + n - 2} \\ \vdots & \vdots & \ddots & \vdots \\ x_1^{\lambda_n} & x_2^{\lambda_n} & \dots & x_n^{\lambda_n} \end{vmatrix}\]
is used.
schur_polynomial
— Functionschur_polynomial([R::ZZMPolyRing], lambda::Partition, n::Int = length(lambda))
Return the Schur polynomial s
of the partition lambda
in n
variables.
The ambient ring of s
may optionally be supplied as a first argument.
Examples
julia> R, _ = ZZ[:a, :b, :c];
julia> schur_polynomial(R, partition([2, 1]))
a^2*b + a*b^2
julia> schur_polynomial(R, partition([2, 1]), 3)
a^2*b + a^2*c + a*b^2 + 2*a*b*c + a*c^2 + b^2*c + b*c^2
julia> schur_polynomial(partition([2]))
x1^2