|   | 1 |  initial version  | 
A possible approach is to define w, a, b etc. as polynomial variables, and define an ideal generated by cyclotomic_polynomial(3,w) and whatever other relations between the variables. Then you can reduce your polynomial with respect this ideal and access the coefficients of w^i via .coefficient({w:i}). For example
K.<w,a,b,c> = QQ[]
J = K.ideal( [cyclotomic_polynomial(3,w), a+b+c] )
f = ((a+b*w+c*w^2)^3).reduce(J)
print( ' + '.join(f'({f.coefficient({{w:i}})}*w^{i}' for i in range(f.degree(w)+1)) )
prints
(3b^3 - 9b^2c - 18bc^2 - 3c^3)w^0 + (6b^3 + 9b^2c - 9bc^2 - 6c^3)w^1
|   | 2 |  No.2 Revision  | 
A possible approach is to define w, a, b etc. as polynomial variables, and define an ideal generated by cyclotomic_polynomial(3,w) and whatever other relations between the variables. Then you can reduce your polynomial with respect this ideal and access the coefficients of w^i via .coefficient({w:i}). For example
K.<w,a,b,c> = QQ[]
J = K.ideal( [cyclotomic_polynomial(3,w), a+b+c] )
f = ((a+b*w+c*w^2)^3).reduce(J)
print( ' + '.join(f'({f.coefficient({{w:i}})}*w^{i}' '.join(f'({f.coefficient({{w:i}})} * w^{i}' for i in range(f.degree(w)+1)) )
prints
(3b^3 - 9b^2c - 18bc^2 - 3
c^3)c^3) * w^0 + (6b^3 + 9b^2b^2c - 9bbc^2 - 6c^3)c^3) * w^1
|   | 3 |  No.3 Revision  | 
A possible approach is to define w, a, b etc. as polynomial variables, and define an ideal generated by cyclotomic_polynomial(3,w) and whatever other relations between the variables. Then you can reduce your polynomial with respect this ideal and access the coefficients of w^i via .coefficient({w:i}). For example
K.<w,a,b,c> = QQ[]
J = K.ideal( [cyclotomic_polynomial(3,w), a+b+c] )
f = ((a+b*w+c*w^2)^3).reduce(J)
print( ' + '.join(f'({f.coefficient({{w:i}})} * w^{i}' for i in range(f.degree(w)+1)) )
prints
(3b^3 (3*b^3 - 9b^2c 9*b^2*c - 18bc^2 18*b*c^2 - 3c^3) 3*c^3) * w^0 + (6b^3 (6*b^3 + 9b^2c 9*b^2*c - 9bc^2 9*b*c^2 - 6c^3) 6*c^3) * w^1
|   | 4 |  No.4 Revision  | 
A possible approach is to define w, a, b etc. as polynomial variables, and define an ideal generated by cyclotomic_polynomial(3,w) and whatever other relations between the variables. Then you can reduce your polynomial with respect to this ideal ideal, and access the coefficients of w^i via .coefficient({w:i}). For example
K.<w,a,b,c> = QQ[]
J = K.ideal( [cyclotomic_polynomial(3,w), a+b+c] )
f = ((a+b*w+c*w^2)^3).reduce(J)
print( ' + '.join(f'({f.coefficient({{w:i}})} * w^{i}' for i in range(f.degree(w)+1)) )
prints
(3*b^3 - 9*b^2*c - 18*b*c^2 - 3*c^3) * w^0 + (6*b^3 + 9*b^2*c - 9*b*c^2 - 6*c^3) * w^1
|   | 5 |  No.5 Revision  | 
A possible approach is to define w, a, b etc. as polynomial variables, and define an ideal generated by cyclotomic_polynomial(3,w) and whatever other relations between the variables. Then you can reduce your polynomial with respect to this ideal, and access the coefficients of w^i via .coefficient({w:i}). For example
K.<w,a,b,c> = QQ[]
J = K.ideal( [cyclotomic_polynomial(3,w), a+b+c] )
f = ((a+b*w+c*w^2)^3).reduce(J)
print( ' + '.join(f'({f.coefficient({{w:i}})} * w^{i}' for i in range(f.degree(w)+1)) )
prints
(3*b^3 - 9*b^2*c - 18*b*c^2 - 3*c^3) * w^0 + (6*b^3 + 9*b^2*c - 9*b*c^2 - 6*c^3) * w^1
Alternatively, you can define w over the quotient ring in a, b, c - like
K.<a_,b_,c_> = QQ[]
Q.<a,b,c> = K.quotient( [a_+b_+c_] )
E.<w> = Q[]
f = (a+b*w+c*w^2)^3 % cyclotomic_polynomial(3,w)
print(f)
which prints
(6*b^3 + 9*b^2*c - 9*b*c^2 - 6*c^3)*w + 3*b^3 - 9*b^2*c - 18*b*c^2 - 3*c^3
 Copyright Sage, 2010. Some rights reserved under creative commons license. Content on this site is licensed under a Creative Commons Attribution Share Alike 3.0 license.
 
                
                Copyright Sage, 2010. Some rights reserved under creative commons license. Content on this site is licensed under a Creative Commons Attribution Share Alike 3.0 license.