Bagian 18.6 Sage
Kita telah menjumpai beberapa daerah integral dan faktorisasi tunggal dalam dua bab sebelumnya. Di samping hal-hal yang telah kita lihat, Sage mendukung beberapa topik dari bagian ini, tetapi cakupannya terbatas. Beberapa fungsi bekerja untuk gelanggang tertentu, tetapi tidak untuk gelanggang lain, sedangkan beberapa fungsi belum menjadi bagian dari Sage. Karena itu, kita akan memberikan beberapa contoh, tetapi contoh-contoh ini sama sekali belum menyeluruh.
Subbagian 18.6.1 Lapangan Pecahan
Sage sering kali dapat membangun lapangan pecahan, atau mengenali suatu lapangan tertentu sebagai lapangan pecahan. Sebagai contoh, gelanggang bilangan bulat dan lapangan bilangan rasional keduanya diimplementasikan dalam Sage, dan bilangan bulat “mengetahui” bahwa bilangan rasional merupakan lapangan pecahannya.
Kode Sage (cadangan statis)
Q = ZZ.fraction_field(); Q
Keluaran referensi (cadangan statis)
Rational Field
Kode Sage (cadangan statis)
Q == QQ
Keluaran referensi (cadangan statis)
True
Dalam kasus lain, Sage akan membangun lapangan pecahan, sesuai dengan gagasan dalam Lema 18.1.3. Dengan demikian, perhitungan dasar dapat dilakukan dalam lapangan yang dibangun tersebut.
Kode Sage (cadangan statis)
R.<x> = ZZ[] P = R.fraction_field();P
Keluaran referensi (cadangan statis)
Fraction Field of Univariate Polynomial Ring in x over Integer Ring
Kode Sage (cadangan statis)
f = P((x^2+3)/(7*x+4)) g = P((4*x^2)/(3*x^2-5*x+4)) h = P((-2*x^3+4*x^2+3)/(x^2+1)) ((f+g)/h).numerator()
Keluaran referensi (cadangan statis)
3*x^6 + 23*x^5 + 32*x^4 + 8*x^3 + 41*x^2 - 15*x + 12
Kode Sage (cadangan statis)
((f+g)/h).denominator()
Keluaran referensi (cadangan statis)
-42*x^6 + 130*x^5 - 108*x^4 + 63*x^3 - 5*x^2 + 24*x + 48
Subbagian 18.6.2 Sublapangan Prima
Korolari 18.1.7 menyatakan bahwa setiap lapangan berkarakteristik \(p\) mempunyai sublapangan yang isomorfik dengan \({\mathbb Z}_p\text{.}\) Untuk lapangan hingga, hakikat sublapangan ini tidak mengejutkan, tetapi Sage memungkinkan kita mengekstraknya dengan mudah.
Kode Sage (cadangan statis)
F.<c> = FiniteField(3^5) F.characteristic()
Keluaran referensi (cadangan statis)
3
Kode Sage (cadangan statis)
G = F.prime_subfield(); G
Keluaran referensi (cadangan statis)
Finite Field of size 3
Kode Sage (cadangan statis)
G.list()
Keluaran referensi (cadangan statis)
[0, 1, 2]
Secara lebih umum, lapangan yang disebut dalam kesimpulan Korolari 18.1.6 dan Korolari 18.1.7 dikenal sebagai “sublapangan prima” dari gelanggang yang memuatnya. Berikut ini contoh untuk kasus karakteristik nol.
Kode Sage (cadangan statis)
K.<y>=QuadraticField(-7); K
Keluaran referensi (cadangan statis)
Number Field in y with defining polynomial x^2 + 7 with y = 2.645751311...?*I
Kode Sage (cadangan statis)
K.prime_subfield()
Keluaran referensi (cadangan statis)
Rational Field
Secara kasar, setiap lapangan berkarakteristik nol memuat salinan bilangan rasional (lapangan pecahan dari bilangan bulat), yang dapat menjelaskan dukungan luas Sage bagi gelanggang dan lapangan yang memperluas bilangan bulat dan bilangan rasional.
Subbagian 18.6.3 Daerah Integral
Sage dapat menentukan apakah gelanggang tertentu merupakan daerah integral, dan kita dapat menguji hasil kali di dalamnya. Akan tetapi, konsep unit, elemen tak tereduksi, atau elemen prima umumnya tidak didukung (selain yang telah kita lihat untuk polinomial dalam bab sebelumnya). Lebih buruk lagi, konstruksi di bawah ini membuat suatu gelanggang di dalam lapangan yang lebih besar sehingga beberapa fungsi (seperti
.is_unit()) diteruskan dan memberikan hasil yang menyesatkan. Hal ini terjadi karena konstruksi di bawah membentuk gelanggang yang dikenal sebagai “orde dalam suatu lapangan bilangan.”
Kode Sage (cadangan statis)
K.<x> = ZZ[sqrt(-3)]; K
Keluaran referensi (cadangan statis)
Order of conductor 2 generated by a in Number Field in a with defining polynomial x^2 + 3 with a = 0.?e-18 + 1.732050807...?*I
Kode Sage (cadangan statis)
K.is_integral_domain()
Keluaran referensi (cadangan statis)
True
Kode Sage (cadangan statis)
K.basis()
Keluaran referensi (cadangan statis)
[1, a]
Kode Sage (cadangan statis)
x
Keluaran referensi (cadangan statis)
a
Kode Sage (cadangan statis)
(1+x)*(1-x) == 2*2
Keluaran referensi (cadangan statis)
True
Hal berikut agak menyesatkan karena \(4\text{,}\) sebagai elemen \({\mathbb Z}[\sqrt{3}i]\text{,}\) tidak mempunyai invers multiplikatif, meskipun tampaknya kita dapat menghitungnya.
Kode Sage (cadangan statis)
four = K(4) four.is_unit()
Keluaran referensi (cadangan statis)
False
Kode Sage (cadangan statis)
four^-1
Keluaran referensi (cadangan statis)
1/4
Subbagian 18.6.4 Ideal Utama
Ketika suatu gelanggang merupakan domain ideal utama, seperti bilangan bulat atau polinomial di atas suatu lapangan, Sage bekerja dengan baik. Di luar itu, dukungannya mulai berkurang.
Kode Sage (cadangan statis)
T.<x>=ZZ[] T.is_integral_domain()
Keluaran referensi (cadangan statis)
True
Kode Sage (cadangan statis)
J = T.ideal(5, x); J
Keluaran referensi (cadangan statis)
Ideal (5, x) of Univariate Polynomial Ring in x over Integer Ring
Kode Sage (cadangan statis)
Q = T.quotient(J); Q
Keluaran referensi (cadangan statis)
Quotient of Univariate Polynomial Ring in x over Integer Ring by the ideal (5, x)
Kode Sage (cadangan statis)
J.is_principal()
Keluaran referensi (cadangan statis)
Traceback (most recent call last): ... NotImplementedError
Kode Sage (cadangan statis)
Q.is_field()
Keluaran referensi (cadangan statis)
Traceback (most recent call last): ... NotImplementedError

