.. _section-poly: ÐÐ¾Ð»Ð¸Ð½Ð¾Ð¼Ñ ======== ÐаннÑй Ñаздел ÑодеÑÐ¶Ð¸Ñ Ð¸Ð½ÑоÑмаÑÐ¸Ñ Ð¾ Ñом, как ÑоздаваÑÑ Ð¸ иÑполÑзоваÑÑ Ð¿Ð¾Ð»Ð¸Ð½Ð¾Ð¼Ñ Ð² Sage. .. _section-univariate: ÐÐ¾Ð»Ð¸Ð½Ð¾Ð¼Ñ Ð¾Ð´Ð½Ð¾Ð¹ пеÑеменной ------------------------- ÐÑÑÑ ÑÑи ÑпоÑоба ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð¿Ð¾Ð»Ð¸Ð½Ð¾Ð¼Ð¸Ð°Ð»ÑнÑÑ ÐºÐ¾Ð»ÐµÑ. :: sage: R = PolynomialRing(QQ, 't') sage: R Univariate Polynomial Ring in t over Rational Field ÐаннÑй ÑпоÑоб ÑоздаÑÑ Ð¿Ð¾Ð»Ð¸Ð½Ð¾Ð¼Ð¸Ð°Ð»Ñное колÑÑо и ÑÐºÐ°Ð¶ÐµÑ Sage иÑполÑзоваÑÑ ÑÑÑÐ¾ÐºÑ 't' в каÑеÑÑве неизвеÑÑного пÑи вÑводе на ÑкÑан. Ðднако, ÑÑо не опÑеделÑÐµÑ Ñимвол ``t`` Ð´Ð»Ñ Ð¸ÑполÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð² Sage, Ñак ÑÑо нелÑÐ·Ñ Ð¿Ñи помоÑи него ввеÑÑи полином (как :math:`t^2+1`), пÑинадлежаÑий ``R``. ÐÑÑгой ÑпоÑоб: .. link :: sage: S = QQ['t'] sage: S == R True ÐÑÐ¾Ñ ÑпоÑоб Ð¸Ð¼ÐµÐµÑ ÑÑ Ð¶Ðµ пÑÐ¾Ð±Ð»ÐµÐ¼Ñ Ð¿Ð¾ оÑноÑÐµÐ½Ð¸Ñ Ðº ``t``. ТÑеÑий ÑпоÑоб более ÑдобнÑй :: sage: R.<t> = PolynomialRing(QQ) или :: sage: R.<t> = QQ['t'] или даже :: sage: R.<t> = QQ[] ÐÑÐ¾Ñ ÑпоÑоб влеÑÐµÑ Ð·Ð° Ñобой обÑÑвление пеÑеменной ``t`` как неизвеÑÑного в полиномиалÑном колÑÑе Ñак, ÑÑо ее можно иÑполÑзоваÑÑ Ð¿Ñи Ñоздании ÑлеменÑов ``R``, как опиÑано ниже. (ÐамеÑÑÑе, ÑÑо ÑÑеÑий ÑпоÑоб Ð¿Ð¾Ñ Ð¾Ð¶ на обознаÑение конÑÑÑÑкÑоÑа в Magma, и, как в Magma, он Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¸ÑполÑзован Ð´Ð»Ñ ÑиÑокого набоÑа обÑекÑов.) .. link :: sage: poly = (t+1) * (t+2); poly t^2 + 3*t + 2 sage: poly in R True Ðакой Ð±Ñ ÑпоÑоб ни иÑполÑзовалÑÑ Ð´Ð»Ñ Ð·Ð°Ð´Ð°Ð½Ð¸Ñ Ð¿Ð¾Ð»Ð¸Ð½Ð¾Ð¼Ð¸Ð°Ð»Ñного колÑÑа, можно вÑÑлениÑÑ Ð½ÐµÐ¸Ð·Ð²ÐµÑÑное в виде :math:`0^{th}` генеÑаÑоÑа: :: sage: R = PolynomialRing(QQ, 't') sage: t = R.0 sage: t in R True ÐÐ¾Ñ Ð¾Ð¶Ð°Ñ ÐºÐ¾Ð½ÑÑÑÑкÑÐ¸Ñ Ð¸ÑполÑзÑеÑÑÑ Ð´Ð»Ñ ÐºÐ¾Ð¼Ð¿Ð»ÐµÐºÑнÑÑ ÑиÑел: комплекÑнÑе ÑиÑла могÑÑ Ð±ÑÑÑ ÑаÑÑмоÑÑÐµÐ½Ñ ÐºÐ°Ðº генеÑиÑованнÑе из веÑеÑÑвеннÑÑ ÑиÑел Ñ Ð¸ÑполÑзованием Ñимвола ``i``; из ÑÑого ÑледÑеÑ: :: sage: CC Complex Field with 53 bits of precision sage: CC.0 # 0-ой генеÑаÑÐ¾Ñ CC 1.00000000000000*I ÐÐ»Ñ Ð¿Ð¾Ð»Ð¸Ð½Ð¾Ð¼Ð¸Ð°Ð»ÑнÑÑ ÐºÐ¾Ð»ÐµÑ Ð¼Ð¾Ð¶Ð½Ð¾ полÑÑиÑÑ Ð¸ колÑÑо, и его генеÑаÑоÑ, или пÑоÑÑо генеÑаÑÐ¾Ñ Ð²Ð¾ вÑÐµÐ¼Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ ÐºÐ¾Ð»ÑÑа: :: sage: R, t = QQ['t'].objgen() sage: t = QQ['t'].gen() sage: R, t = objgen(QQ['t']) sage: t = gen(QQ['t']) ÐаконеÑ, можно ÑовеÑÑиÑÑ Ð½ÐµÐºÐ¾ÑоÑÑе аÑиÑмеÑиÑеÑкие опÑеÑаÑии в :math:`\QQ[t]`. :: sage: R, t = QQ['t'].objgen() sage: f = 2*t^7 + 3*t^2 - 15/19 sage: f^2 4*t^14 + 12*t^9 - 60/19*t^7 + 9*t^4 - 90/19*t^2 + 225/361 sage: cyclo = R.cyclotomic_polynomial(7); cyclo t^6 + t^5 + t^4 + t^3 + t^2 + t + 1 sage: g = 7 * cyclo * t^5 * (t^5 + 10*t + 2) sage: g 7*t^16 + 7*t^15 + 7*t^14 + 7*t^13 + 77*t^12 + 91*t^11 + 91*t^10 + 84*t^9 + 84*t^8 + 84*t^7 + 84*t^6 + 14*t^5 sage: F = factor(g); F (7) * t^5 * (t^5 + 10*t + 2) * (t^6 + t^5 + t^4 + t^3 + t^2 + t + 1) sage: F.unit() 7 sage: list(F) [(t, 5), (t^5 + 10*t + 2, 1), (t^6 + t^5 + t^4 + t^3 + t^2 + t + 1, 1)] Ðеление двÑÑ Ð¿Ð¾Ð»Ð¸Ð½Ð¾Ð¼Ð¾Ð² ÑоздаÑÑ ÑÐ»ÐµÐ¼ÐµÐ½Ñ Ð² дÑобном поле, ÑÑо бÑÐ´ÐµÑ Ñделано Sage авÑомаÑиÑеÑки. :: sage: x = QQ['x'].0 sage: f = x^3 + 1; g = x^2 - 17 sage: h = f/g; h (x^3 + 1)/(x^2 - 17) sage: h.parent() Fraction Field of Univariate Polynomial Ring in x over Rational Field ÐÑполÑзÑÑ ÑÑÐ´Ñ ÐоÑана, можно поÑÑиÑаÑÑ Ñазложение в ÑÑд в дÑобном поле ``QQ[x]``: :: sage: R.<x> = LaurentSeriesRing(QQ); R Laurent Series Ring in x over Rational Field sage: 1/(1-x) + O(x^10) 1 + x + x^2 + x^3 + x^4 + x^5 + x^6 + x^7 + x^8 + x^9 + O(x^10) ÐÑли назваÑÑ Ð¿ÐµÑеменнÑÑ Ð¿Ð¾-дÑÑгомÑ, можно полÑÑиÑÑ Ð´ÑÑгое одномеÑное полиномиалÑное колÑÑо. :: sage: R.<x> = PolynomialRing(QQ) sage: S.<y> = PolynomialRing(QQ) sage: x == y False sage: R == S False sage: R(y) x sage: R(y^2 - 17) x^2 - 17 ÐолÑÑо опÑеделÑеÑÑÑ Ð¿ÐµÑеменной. ÐбÑаÑиÑе внимание, ÑÑо Ñоздание еÑÑ Ð¾Ð´Ð½Ð¾Ð³Ð¾ колÑÑа Ñ Ð¿ÐµÑеменной ``x`` не веÑÐ½ÐµÑ Ð´ÑÑгого колÑÑа. :: sage: R = PolynomialRing(QQ, "x") sage: T = PolynomialRing(QQ, "x") sage: R == T True sage: R is T True sage: R.0 == T.0 True Sage поддеÑÐ¶Ð¸Ð²Ð°ÐµÑ ÐºÐ¾Ð»ÑÑа ÑÑепеннÑÑ ÑÑдов и ÑÑдов ÐоÑана Ð´Ð»Ñ Ð»Ñбого базиÑного колÑÑа. Ð ÑледÑÑÑем пÑимеÑе Ñоздадим ÑÐ»ÐµÐ¼ÐµÐ½Ñ Ð¸Ð· :math:`\GF{7}[[T]]` и поделим, ÑÑÐ¾Ð±Ñ ÑоздаÑÑ ÑÐ»ÐµÐ¼ÐµÐ½Ñ Ð¸Ð· :math:`\GF{7}((T))`. :: sage: R.<T> = PowerSeriesRing(GF(7)); R Power Series Ring in T over Finite Field of size 7 sage: f = T + 3*T^2 + T^3 + O(T^4) sage: f^3 T^3 + 2*T^4 + 2*T^5 + O(T^6) sage: 1/f T^-1 + 4 + T + O(T^2) sage: parent(1/f) Laurent Series Ring in T over Finite Field of size 7 Также можно ÑоздаваÑÑ ÐºÐ¾Ð»ÑÑа ÑÑепеннÑÑ ÑÑдов, иÑполÑзÑÑ Ð´Ð²Ð¾Ð¹Ð½Ñе Ñкобки: :: sage: GF(7)[['T']] Power Series Ring in T over Finite Field of size 7 ÐÐ¾Ð»Ð¸Ð½Ð¾Ð¼Ñ Ð½ÐµÑколÑÐºÐ¸Ñ Ð¿ÐµÑеменнÑÑ ------------------------------ ÐÐ»Ñ ÑабоÑÑ Ñ Ð¿Ð¾Ð»Ð¸Ð½Ð¾Ð¼Ð°Ð¼Ð¸ Ñ Ð½ÐµÑколÑкими пеÑеменнÑми, ÑнаÑала надо обÑÑвиÑÑ Ð¿Ð¾Ð»Ð¸Ð½Ð¾Ð¼Ð¸Ð°Ð»Ñное колÑÑо и пеÑеменнÑе. :: sage: R = PolynomialRing(GF(5),3,"z") # здеÑÑ 3 - ÑÑо ÑиÑло пеÑеменнÑÑ sage: R Multivariate Polynomial Ring in z0, z1, z2 over Finite Field of size 5 Так же, как и Ð´Ð»Ñ Ð¾Ð´Ð½Ð¾Ð¼ÐµÑнÑÑ Ð¿Ð¾Ð»Ð¸Ð½Ð¾Ð¼Ð¾Ð², ÑÑÑеÑÑвÑÐµÑ Ð½ÐµÑколÑко пÑÑей: :: sage: GF(5)['z0, z1, z2'] Multivariate Polynomial Ring in z0, z1, z2 over Finite Field of size 5 sage: R.<z0,z1,z2> = GF(5)[]; R Multivariate Polynomial Ring in z0, z1, z2 over Finite Field of size 5 ЧÑÐ¾Ð±Ñ Ð¸Ð¼ÐµÐ½Ð° пеÑеменнÑÑ ÑоÑÑоÑли из бÑкв, надо иÑполÑзоваÑÑ ÑледÑÑÑее: :: sage: PolynomialRing(GF(5), 'x, y, z') Multivariate Polynomial Ring in x, y, z over Finite Field of size 5 Ðемного аÑиÑмеÑики: :: sage: z = GF(5)['z0, z1, z2'].gens() sage: z (z0, z1, z2) sage: (z[0]+z[1]+z[2])^2 z0^2 + 2*z0*z1 + z1^2 + 2*z0*z2 + 2*z1*z2 + z2^2 Ðожно иÑполÑзоваÑÑ Ð±Ð¾Ð»ÐµÐµ маÑемаÑиÑеÑкое обознаÑение, ÑÑÐ¾Ð±Ñ Ð¿Ð¾ÑÑÑоиÑÑ Ð¿Ð¾Ð»Ð¸Ð½Ð¾Ð¼Ð¸Ð°Ð»Ñное колÑÑо. :: sage: R = GF(5)['x,y,z'] sage: x,y,z = R.gens() sage: QQ['x'] Univariate Polynomial Ring in x over Rational Field sage: QQ['x,y'].gens() (x, y) sage: QQ['x'].objgens() (Univariate Polynomial Ring in x over Rational Field, (x,)) ÐногомеÑнÑе Ð¿Ð¾Ð»Ð¸Ð½Ð¾Ð¼Ñ Ð²Ð½ÐµÐ´ÑÐµÐ½Ñ Ð² Sage Ñ Ð¸ÑполÑзованием ÑловаÑей Python. Sage иÑполÑзÑÐµÑ Singular [Si]_ Ð´Ð»Ñ Ð²ÑÑиÑлений ÐÐРи базиÑа ÐÑÑбнеÑа идеалов. :: sage: R, (x, y) = PolynomialRing(RationalField(), 'x, y').objgens() sage: f = (x^3 + 2*y^2*x)^2 sage: g = x^2*y^2 sage: f.gcd(g) x^2 Создадим идеал :math:`(f,g)`, генеÑиÑованнÑй из :math:`f` и :math:`f` Ñмножением ``(f,g)`` на ``R``. .. link :: sage: I = (f, g)*R; I Ideal (x^6 + 4*x^4*y^2 + 4*x^2*y^4, x^2*y^2) of Multivariate Polynomial Ring in x, y over Rational Field sage: B = I.groebner_basis(); B [x^6, x^2*y^2] sage: x^2 in I False ÐÑÑаÑи, Ð±Ð°Ð·Ð¸Ñ ÐÑÑбнеÑа ÑвлÑеÑÑÑ Ð½Ðµ ÑпиÑком, а неизменÑемой поÑледоваÑелÑноÑÑÑÑ. ÐÑо ознаÑаеÑ, ÑÑо Ñ Ð½ÐµÐ³Ð¾ еÑÑÑ ÑнивеÑÑÑм, ÑодиÑÐµÐ»Ñ Ð¸ ÑÑо он не Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½ (ÑÑо Ñ Ð¾ÑоÑо, поÑколÑÐºÑ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ðµ базиÑа наÑÑÑило Ð±Ñ Ð´ÑÑгие опеÑаÑии, иÑполÑзÑÑÑие Ð±Ð°Ð·Ð¸Ñ ÐÑÑбнеÑа). .. link :: sage: B.parent() Category of sequences in Multivariate Polynomial Ring in x, y over Rational Field sage: B.universe() Multivariate Polynomial Ring in x, y over Rational Field sage: B[1] = x Traceback (most recent call last): ... ValueError: object is immutable; please change a copy instead. ÐекоÑоÑÐ°Ñ ÐºÐ¾Ð¼Ð¼ÑÑаÑÐ¸Ð²Ð½Ð°Ñ Ð°Ð»Ð³ÐµÐ±Ñа доÑÑÑпна в Sage и внедÑена Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ Singular. РпÑимеÑÑ, можно поÑÑиÑаÑÑ Ð¿ÑимаÑное Ñазложение и пÑоÑÑÑе ÑооÑвеÑÑÑвÑÑÑие Ð´Ð»Ñ :math:`I`: .. link :: sage: I.primary_decomposition() [Ideal (x^2) of Multivariate Polynomial Ring in x, y over Rational Field, Ideal (y^2, x^6) of Multivariate Polynomial Ring in x, y over Rational Field] sage: I.associated_primes() [Ideal (x) of Multivariate Polynomial Ring in x, y over Rational Field, Ideal (y, x) of Multivariate Polynomial Ring in x, y over Rational Field]