Lewati ke konten utama

Bagian 17.7 Sage

Sage sangat mahir membangun, menganalisis, dan memanipulasi gelanggang polinomial. Kita telah melihat sebagian kemampuannya dalam bab sebelumnya. Mari kita mulai dengan membuat tiga gelanggang polinomial dan memeriksa beberapa sifat dasarnya. Ada beberapa cara untuk membangun gelanggang polinomial, tetapi sintaks yang digunakan di sini adalah yang paling langsung.

Subbagian 17.7.1 Gelanggang Polinomial dan Elemen-Elemennya

Kode Sage (cadangan statis)
R.<x> = Integers(8)[]; R
Keluaran referensi (cadangan statis)
Univariate Polynomial Ring in x over Ring of integers modulo 8
Kode Sage (cadangan statis)
S.<y> = ZZ[]; S
Keluaran referensi (cadangan statis)
Univariate Polynomial Ring in y over Integer Ring
Kode Sage (cadangan statis)
T.<z> = QQ[]; T
Keluaran referensi (cadangan statis)
Univariate Polynomial Ring in z over Rational Field
Sifat-sifat dasar gelanggang tersedia untuk contoh-contoh ini.
Kode Sage (cadangan statis)
R.is_finite()
Keluaran referensi (cadangan statis)
False
Kode Sage (cadangan statis)
R.is_integral_domain()
Keluaran referensi (cadangan statis)
False
Kode Sage (cadangan statis)
S.is_integral_domain()
Keluaran referensi (cadangan statis)
True
Kode Sage (cadangan statis)
T.is_field()
Keluaran referensi (cadangan statis)
False
Kode Sage (cadangan statis)
R.characteristic()
Keluaran referensi (cadangan statis)
8
Kode Sage (cadangan statis)
T.characteristic()
Keluaran referensi (cadangan statis)
0
Dengan sintaks konstruksi yang digunakan di atas, variabel-variabel dapat digunakan untuk membuat elemen gelanggang polinomial tanpa koersi eksplisit (meskipun kita perlu berhati-hati dengan polinomial konstan).
Kode Sage (cadangan statis)
y in S
Keluaran referensi (cadangan statis)
True
Kode Sage (cadangan statis)
x in S
Keluaran referensi (cadangan statis)
False
Kode Sage (cadangan statis)
q = (3/2) + (5/4)*z^2
q in T
Keluaran referensi (cadangan statis)
True
Kode Sage (cadangan statis)
3 in S
Keluaran referensi (cadangan statis)
True
Kode Sage (cadangan statis)
r = 3
r.parent()
Keluaran referensi (cadangan statis)
Integer Ring
Kode Sage (cadangan statis)
s = 3*y^0
s.parent()
Keluaran referensi (cadangan statis)
Univariate Polynomial Ring in y over Integer Ring
Polinomial dapat dievaluasi seperti fungsi, sehingga kita dapat meniru homomorfisma evaluasi.
Kode Sage (cadangan statis)
p = 3 + 5*x + 2*x^2
p.parent()
Keluaran referensi (cadangan statis)
Univariate Polynomial Ring in x over Ring of integers modulo 8
Kode Sage (cadangan statis)
p(1)
Keluaran referensi (cadangan statis)
2
Kode Sage (cadangan statis)
[p(t) for t in Integers(8)]
Keluaran referensi (cadangan statis)
[3, 2, 5, 4, 7, 6, 1, 0]
Perhatikan bahwa p merupakan polinomial berderajat dua, tetapi melalui pemeriksaan brute-force kita melihat bahwa polinomial tersebut hanya memiliki satu akar, bertentangan dengan harapan kita yang lazim. Keadaannya bahkan dapat lebih tidak biasa.
Kode Sage (cadangan statis)
q = 4*x^2+4*x
[q(t) for t in Integers(8)]
Keluaran referensi (cadangan statis)
[0, 0, 0, 0, 0, 0, 0, 0]
Sage dapat membuat dan memanipulasi gelanggang polinomial dalam lebih dari satu variabel, meskipun kita tidak akan sering menggunakan fungsionalitas ini dalam mata kuliah ini.
Kode Sage (cadangan statis)
M.<s, t> = QQ[]; M
Keluaran referensi (cadangan statis)
Multivariate Polynomial Ring in s, t over Rational Field

Subbagian 17.7.2 Polinomial Tak Tereduksi

Apakah suatu polinomial dapat difaktorkan atau tidak, dengan mempertimbangkan gelanggang yang digunakan untuk koefisiennya, merupakan topik penting dalam bab ini dan banyak bab berikutnya. Sage dapat memfaktorkan dan menentukan ketaktereduksian atas bilangan bulat, bilangan rasional, dan lapangan hingga.
Pertama, atas bilangan rasional.
Kode Sage (cadangan statis)
R.<x> = QQ[]
p = 1/4*x^4 - x^3 + x^2 - x - 1/2
p.is_irreducible()
Keluaran referensi (cadangan statis)
True
Kode Sage (cadangan statis)
p.factor()
Keluaran referensi (cadangan statis)
(1/4) * (x^4 - 4*x^3 + 4*x^2 - 4*x - 2)
Kode Sage (cadangan statis)
q = 2*x^5 + 5/2*x^4 + 3/4*x^3 - 25/24*x^2 - x - 1/2
q.is_irreducible()
Keluaran referensi (cadangan statis)
False
Kode Sage (cadangan statis)
q.factor()
Keluaran referensi (cadangan statis)
(2) * (x^2 + 3/2*x + 3/4) * (x^3 - 1/4*x^2 - 1/3)
Pemfaktoran atas bilangan bulat sebenarnya tidak berbeda dengan pemfaktoran atas bilangan rasional. Inilah isi Teorema 17.3.4 — pencarian faktorisasi atas bilangan bulat dapat diubah menjadi pencarian faktorisasi atas bilangan rasional. Demikian pula dalam Sage, hanya ada sedikit perbedaan antara bekerja atas bilangan rasional dan bilangan bulat. Bekerja atas lapangan hingga sedikit berbeda. Penjelasannya menyusul.
Kode Sage (cadangan statis)
F.<a> = FiniteField(5^2)
S.<y> = F[]
p = 2*y^5 + 2*y^4 + 4*y^3 + 2*y^2 + 3*y + 1
p.is_irreducible()
Keluaran referensi (cadangan statis)
True
Kode Sage (cadangan statis)
p.factor()
Keluaran referensi (cadangan statis)
(2) * (y^5 + y^4 + 2*y^3 + y^2 + 4*y + 3)
Kode Sage (cadangan statis)
q = 3*y^4+2*y^3-y+4; q.factor()
Keluaran referensi (cadangan statis)
(3) * (y^2 + (a + 4)*y + 2*a + 3) * (y^2 + 4*a*y + 3*a)
Kode Sage (cadangan statis)
r = y^4+2*y^3+3*y^2+4; r.factor()
Keluaran referensi (cadangan statis)
(y + 4) * (y^3 + 3*y^2 + y + 1)
Kode Sage (cadangan statis)
s = 3*y^4+2*y^3-y+3; s.factor()
Keluaran referensi (cadangan statis)
(3) * (y + 1) * (y + 3) * (y + 2*a + 4) * (y + 3*a + 1)
Untuk memeriksa faktorisasi-faktorisasi ini, kita perlu melakukan komputasi dalam lapangan hingga F, sehingga kita perlu mengetahui perilaku simbol a. Simbol ini dianggap sebagai akar polinomial berderajat dua atas bilangan bulat modulo 5, yang dapat kita peroleh dengan metode .modulus().
Kode Sage (cadangan statis)
F.modulus()
Keluaran referensi (cadangan statis)
x^2 + 4*x + 2
Jadi, \(a^2+4a+2=0\text{,}\) atau \(a^2=-4a-3=a+2\text{.}\) Karena itu, ketika memeriksa faktorisasi, setiap kali menjumpai \(a^2\) Anda dapat menggantinya dengan \(a+2\text{.}\) Perhatikan bahwa berdasarkan Korolari 17.2.3 kita dapat menemukan satu faktor linear dari r, dan empat faktor linear dari s, melalui pencarian akar secara brute-force. Hal ini dapat dilakukan karena lapangannya hingga.
Kode Sage (cadangan statis)
[t for t in F if r(t)==0]
Keluaran referensi (cadangan statis)
[1]
Kode Sage (cadangan statis)
[t for t in F if s(t)==0]
Keluaran referensi (cadangan statis)
[2, 3*a + 1, 4, 2*a + 4]
Akan tetapi, q terfaktor menjadi sepasang polinomial berderajat 2, sehingga pengujian akar sebanyak apa pun tidak akan menemukan faktornya.
Dengan Kriteria Eisenstein, kita dapat membuat polinomial tak tereduksi, seperti dalam Contoh 17.3.8.
Kode Sage (cadangan statis)
W.<w> = QQ[]
p = 16*w^5 - 9*w^4 +3*w^2 + 6*w -21
p.is_irreducible()
Keluaran referensi (cadangan statis)
True
Atas lapangan \({\mathbb Z}_p\text{,}\) yaitu lapangan bilangan bulat modulo bilangan prima \(p\text{,}\) polinomial Conway merupakan pilihan kanonik untuk polinomial berderajat \(n\) yang tak tereduksi atas \({\mathbb Z}_p\text{.}\) Lihat latihan untuk pembahasan lebih lanjut mengenai polinomial ini.

Subbagian 17.7.3 Polinomial atas Lapangan

Jika \(F\) suatu lapangan, maka setiap ideal dari \(F[x]\) merupakan ideal utama (Teorema 17.3.10). Anda tetap dapat memberikan dua (atau lebih) pembangkit kepada Sage untuk membangun suatu ideal, tetapi Sage akan menentukan elemen yang digunakan untuk menyatakan ideal tersebut sebagai ideal utama.
Kode Sage (cadangan statis)
W.<w> = QQ[]
r = -w^5 + 5*w^4 - 4*w^3 + 14*w^2 - 67*w + 17
s = 3*w^5 - 14*w^4 + 12*w^3 - 6*w^2 + w
S = W.ideal(r, s)
S
Keluaran referensi (cadangan statis)
Principal ideal (w^2 - 4*w + 1) of
Univariate Polynomial Ring in w over Rational Field
Kode Sage (cadangan statis)
(w^2)*r + (3*w-6)*s in S
Keluaran referensi (cadangan statis)
True
Teorema 17.3.12 adalah fakta kunci yang memungkinkan kita membangun lapangan hingga dengan mudah. Berikut ini konstruksi lapangan hingga berorde \(7^5=16\,807\text{.}\) Yang kita perlukan hanyalah polinomial berderajat \(5\) yang tak tereduksi atas \({\mathbb Z}_7\text{.}\)
Kode Sage (cadangan statis)
F = Integers(7)
R.<x> = F[]
p = x^5+ x + 4
p.is_irreducible()
Keluaran referensi (cadangan statis)
True
Kode Sage (cadangan statis)
id = R.ideal(p)
Q = R.quotient(id); Q
Keluaran referensi (cadangan statis)
Univariate Quotient Polynomial Ring in xbar over
Ring of integers modulo 7 with modulus x^5 + x + 4
Kode Sage (cadangan statis)
Q.is_field()
Keluaran referensi (cadangan statis)
True
Kode Sage (cadangan statis)
Q.order() == 7^5
Keluaran referensi (cadangan statis)
True
Simbol xbar merupakan pembangkit lapangan tersebut, tetapi saat ini simbol itu tidak dapat diakses. xbar adalah koset \(x + \langle x^5+ x + 4\rangle\text{.}\) Konstruksi yang lebih baik akan mencakup penetapan pembangkit ini.
Kode Sage (cadangan statis)
Q.gen(0)
Keluaran referensi (cadangan statis)
xbar
Kode Sage (cadangan statis)
Q.<t> = R.quotient(id); Q
Keluaran referensi (cadangan statis)
Univariate Quotient Polynomial Ring in t over
Ring of integers modulo 7 with modulus x^5 + x + 4
Kode Sage (cadangan statis)
t^5 + t + 4
Keluaran referensi (cadangan statis)
0
Kode Sage (cadangan statis)
t^5 == -(t+4)
Keluaran referensi (cadangan statis)
True
Kode Sage (cadangan statis)
t^5
Keluaran referensi (cadangan statis)
6*t + 3
Kode Sage (cadangan statis)
(3*t^3 + t + 5)*(t^2 + 4*t + 2)
Keluaran referensi (cadangan statis)
5*t^4 + 2*t^2 + 5*t + 5
Kode Sage (cadangan statis)
a = 3*t^4 - 6*t^3 + 3*t^2 + 5*t + 2
ainv = a^-1; ainv
Keluaran referensi (cadangan statis)
6*t^4 + 5*t^2 + 4
Kode Sage (cadangan statis)
a*ainv
Keluaran referensi (cadangan statis)
1