ASKSAGE: Sage Q&A Forum - RSS feedhttps://ask.sagemath.org/questions/Q&A Forum for SageenCopyright Sage, 2010. Some rights reserved under creative commons license.Wed, 28 Jul 2021 16:30:25 +0200Polynomial ring conversion errorhttps://ask.sagemath.org/question/58137/polynomial-ring-conversion-error/I am trying to recursively solve a (zero-dimensional) system of polynomial equations in multiple variables by calculating elimination ideals, solving the resulting univariate polynomials algebraically and plugging the roots in to the original equations in order to remove a variable.
For this, it is necessary to observe within Sage that after plugging in a value for one variable, the result is then a polynomial in fewer variables. The following code shows an example where the coercion into a polynomial ring in fewer variables works in the first step but fails in the second (although in both steps the polynomial does not even contain the variable to be eliminated):
R.<x, y, s, t> = QQ[]
g = x * y
f1 = PolynomialRing(QQ, t)(t - 1)
L1.<a1> = QQ.extension(f1)
R1 = PolynomialRing(L1, [x, y, s])
g = g.change_ring(L1) # allow coefficients in L1
g = g(x, y, s, a1) # plug in t := a1
g = R1(g) # regard as polynomial in fewer variables
assert parent(g) == R1 # works
f2 = PolynomialRing(L1, s)(s - 1)
L2.<a2> = L1.extension(f2)
R2 = PolynomialRing(L2, [x, y])
g = g.change_ring(L2)
g = g(x, y, a2)
g = R2(g) # fails: "TypeError: not a constant polynomial"
(Note that this is a toy example, my code tries to achieve the same for arbitrary $R$, $f_i$'s and $g$.)FabianGWed, 28 Jul 2021 16:30:25 +0200https://ask.sagemath.org/question/58137/Polynomial Ring bug?https://ask.sagemath.org/question/10213/polynomial-ring-bug/I would like to ask, why following code ends with error:
---------------------------------------------
R = PolynomialRing(GF(3),'x3,x5,x4,x7,x6')
U = PolynomialRing(GF(3), 'x2, x5, x4, x1, x0, x6')
f = U.gens()[1] + U.gens()[2]
g = R(f)
------------------------------------------------------
because when I remove x0 from the generators, it works fine.
---------------------------------------------------------
R = PolynomialRing(GF(3),'x3,x5,x4,x7,x6')
U = PolynomialRing(GF(3), 'x2, x5, x4, x1, x6')
f = U.gens()[1] + U.gens()[2]
g = R(f)
----------------------------------------------------
Thanks for the answer, but there is still an open question. I have been working with this for a few days, and up untill this case, I had no trouble getting the same polynomial in a ring with fewer genarators, if the original polynomial contained only those. I tried and the followng code works fine, and it also fits your last case which according to you should raise an error, because U has more generators than R.
---------------------------------------------------
R = PolynomialRing(GF(3),'x5,x4,x7,x6')
U = PolynomialRing(GF(3), 'x2, x5, x4, x1, x6')
f = U.gens()[1] + U.gens()[2]
g = R(f)blishkoSun, 09 Jun 2013 12:14:51 +0200https://ask.sagemath.org/question/10213/