[GAP Forum] Generating symmetric polynomials
Ravi Kulkarni
ravi.kulk at gmail.com
Fri Oct 23 17:09:44 BST 2009
Hello GAP Forum,
I thought it would be useful to have a function that generates a
basis for the space of symmetric polynomials in the ring
k[x_1,x_2,..,x_n]. Here is some simple code that does the job.
The code is implemented only for k[x,y,z] right now, but changing it
to any number of variables is straightforward.
The code is not the most efficient possible certainly, but it works...
Ravi
#####################################################################
# symPol(k)
#############
# symPol(k) will return a basis for the space of symmetric polynomials
# of degree k in three variables x,y,z
# WARNING: It is assumed that x,y,z exist in the environment!
# Do this first, before invoking symPol:
# gap> R := PolynomialRing(Rationals,3);;
# gap> inds := IndeterminatesOfPolynomialRing(R);;
# gap> x := inds[1];; y := inds[2];; z := inds[3];;
#############
symPol := function(k)
local lis1, i, j, outlist, outpolist;
lis1 := Tuples([0..k],3); # am interested in C^3 only
# now only retain those elements of lis1 whose sum equals k
outlist := "";
for i in [1..Length(lis1)] do
if Sum(lis1[i]) = k then
Add(outlist, lis1[i]);
fi;
od;
outpolist := "";
for j in [1..Length(outlist)] do
Add(outpolist,x^(outlist[j][1])*y^(outlist[j][2])*z^(outlist[j][3]));
od;
return Reversed(outpolist);
end;
#####################################################################
More information about the Forum
mailing list