Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

What are these extra terms in symmetric polynomial calculations?

I am trying to calculate the discriminant of the cubic using symmetric polynomials, here is my attempt:

P = PolynomialRing(QQ, 'x', 3)
x = P.gens()
S = SymmetricFunctions(QQ)
e = SymmetricFunctions(QQ).e()

def nice_symmetric_poly(coeffs, u):
    v = var(coeffs)
    return sum(x[1]*product(v[i] for i in x[0]) for x in list(u))

d = (x[0]-x[1])*(x[0]-x[2])*(x[1]-x[2])
u = e.from_polynomial(d^2)
nice_symmetric_poly('a b c d e', u)

This gives me u:

e[2, 2, 1, 1] - 4*e[2, 2, 2] - 4*e[3, 1, 1, 1] + 18*e[3, 2, 1] - 27*e[3, 3] - 8*e[4, 1, 1] + 24*e[4, 2]

and the nice polynomial version:

b^2*c^2 - 4*b^3*d - 4*c^3 + 18*b*c*d - 8*b^2*e - 27*d^2 + 24*c*e

but I was expecting the result from here https://www.johndcook.com/blog/2019/07/14/discriminant-of-a-cubic/

Δ = 18bcd – 4b³d + b²c² – 4c³ – 27d².

I don't understand why these "e" terms exist: - 8b^2e + 24ce

and why is there anything with a e[4] in it inside u.

Thank you for any insight into this problem.