Bagian 4.8 Sage
Grup siklik sangat penting, sehingga tidak mengherankan bahwa grup tersebut muncul dalam berbagai bentuk di Sage. Setiap bentuk sedikit berbeda, dan tidak ada satu implementasi yang ideal untuk pengantar, tetapi secara bersama-sama implementasi tersebut dapat menggambarkan sebagian besar gagasan penting. Berikut panduan berbagai cara untuk membangun dan mempelajari grup siklik di Sage.
Subbagian 4.8.1 Grup Siklik Tak Hingga
Dalam Sage, bilangan bulat \(\mathbb Z\) dibangun dengan
ZZ. Untuk membangun grup siklik tak hingga seperti \(3\mathbb Z\) dari Contoh 4.1.1, cukup gunakan 3*ZZ. Karena merupakan himpunan tak hingga, tidak terlalu banyak yang dapat dilakukan dengannya. Anda dapat menguji apakah bilangan bulat berada dalam himpunan tersebut atau tidak. Anda juga dapat mengambil kembali pembangkitnya dengan perintah .gen().
Kode Sage (cadangan statis)
G = 3*ZZ -12 in G
Keluaran referensi (cadangan statis)
True
Kode Sage (cadangan statis)
37 in G
Keluaran referensi (cadangan statis)
False
Kode Sage (cadangan statis)
G.gen()
Keluaran referensi (cadangan statis)
3
Subbagian 4.8.2 Grup Siklik Aditif
Grup siklik aditif \(\mathbb Z_n\) dapat dibangun sebagai kasus khusus dari konstruksi Sage yang lebih umum. Pertama-tama kita membangun \(\mathbb Z_{14}\) dan menyimpan pembangkitnya. Selama pembahasan, perhatikan baik-baik penggunaan tanda kurung biasa dan tanda kurung siku ketika Anda bereksperimen sendiri.
Kode Sage (cadangan statis)
G = AdditiveAbelianGroup([14]) G.order()
Keluaran referensi (cadangan statis)
14
Kode Sage (cadangan statis)
G.list()
Keluaran referensi (cadangan statis)
[(0), (1), (2), (3), (4), (5), (6), (7), (8), (9), (10), (11), (12), (13)]
Kode Sage (cadangan statis)
a = G.gen(0) a
Keluaran referensi (cadangan statis)
(1)
Anda dapat melakukan perhitungan dalam grup ini dengan menggunakan pembangkit, dengan menggunakan elemen baru yang dibentuk melalui pemaksaan bilangan bulat ke dalam grup, atau dengan mengambil hasil operasi pada elemen lain. Kita juga dapat menghitung orde elemen dalam grup ini. Perhatikan bahwa penjumlahan berulang dapat disingkat dengan mengambil kelipatan bilangan bulat dari suatu elemen.
Kode Sage (cadangan statis)
a + a
Keluaran referensi (cadangan statis)
(2)
Kode Sage (cadangan statis)
a + a + a + a
Keluaran referensi (cadangan statis)
(4)
Kode Sage (cadangan statis)
4*a
Keluaran referensi (cadangan statis)
(4)
Kode Sage (cadangan statis)
37*a
Keluaran referensi (cadangan statis)
(9)
Kita dapat membuat, lalu melakukan perhitungan dengan, elemen baru grup melalui pemaksaan suatu bilangan bulat (dalam daftar berpanjang \(1\)) ke dalam grup. Anda mungkin mendapatkan
DeprecationWarning ketika pertama kali menggunakan sintaks ini jika memakai Sage versi lama. Peringatan yang tampak misterius tersebut aman untuk diabaikan.
Kode Sage (cadangan statis)
G([2])
Kode Sage (cadangan statis)
b = G([2]); b
Keluaran referensi (cadangan statis)
(2)
Kode Sage (cadangan statis)
b + b
Keluaran referensi (cadangan statis)
(4)
Kode Sage (cadangan statis)
2*b == 4*a
Keluaran referensi (cadangan statis)
True
Kode Sage (cadangan statis)
7*b
Keluaran referensi (cadangan statis)
(0)
Kode Sage (cadangan statis)
b.order()
Keluaran referensi (cadangan statis)
7
Kode Sage (cadangan statis)
c = a - 6*b; c
Keluaran referensi (cadangan statis)
(3)
Kode Sage (cadangan statis)
c + c + c + c
Keluaran referensi (cadangan statis)
(12)
Kode Sage (cadangan statis)
c.order()
Keluaran referensi (cadangan statis)
14
Subgrup siklik dapat dibuat dari suatu elemen yang ditetapkan sebagai pembangkit baru. Sayangnya, hal ini memerlukan metode
.submodule() (yang semestinya diberi nama lain dalam Sage).
Kode Sage (cadangan statis)
H = G.submodule([b]); H
Keluaran referensi (cadangan statis)
Additive abelian group isomorphic to Z/7
Kode Sage (cadangan statis)
H.list()
Keluaran referensi (cadangan statis)
[(0), (2), (4), (6), (8), (10), (12)]
Kode Sage (cadangan statis)
H.order()
Keluaran referensi (cadangan statis)
7
Kode Sage (cadangan statis)
e = H.gen(0); e
Keluaran referensi (cadangan statis)
(2)
Kode Sage (cadangan statis)
3*e
Keluaran referensi (cadangan statis)
(6)
Kode Sage (cadangan statis)
e.order()
Keluaran referensi (cadangan statis)
7
Subgrup siklik
H yang baru dibuat mempunyai lebih dari satu pembangkit. Kita dapat mengujinya dengan membangun subgrup baru dan membandingkan kedua subgrup tersebut.
Kode Sage (cadangan statis)
f = 12*a; f
Keluaran referensi (cadangan statis)
(12)
Kode Sage (cadangan statis)
f.order()
Keluaran referensi (cadangan statis)
7
Kode Sage (cadangan statis)
K = G.submodule([f]); K
Keluaran referensi (cadangan statis)
Additive abelian group isomorphic to Z/7
Kode Sage (cadangan statis)
K.order()
Keluaran referensi (cadangan statis)
7
Kode Sage (cadangan statis)
K.list()
Keluaran referensi (cadangan statis)
[(0), (2), (4), (6), (8), (10), (12)]
Kode Sage (cadangan statis)
K.gen(0)
Keluaran referensi (cadangan statis)
(2)
Kode Sage (cadangan statis)
H == K
Keluaran referensi (cadangan statis)
True
Daftar elemen dan pembangkit bersama
(2) tentu membuat kita percaya bahwa H dan K sama, tetapi perbandingan pada baris terakhir meniadakan segala keraguan.
Hasil-hasil dalam bagian ini, khususnya Teorema 4.1.13 dan Korolari 4.1.14, dapat diselidiki dengan membuat pembangkit subgrup dari pembangkit suatu grup siklik aditif, membuat subgrup-subgrup tersebut, serta menghitung orde elemen dan orde grup.
Subbagian 4.8.3 Grup Siklik Perkalian Abstrak
Kita dapat membuat grup siklik abstrak seperti dalam Teorema 4.1.3, Teorema 4.1.9, dan Teorema 4.1.10. Dalam sintaks di bawah,
a merupakan nama pembangkit, dan 14 merupakan orde elemen tersebut. Perhatikan bahwa notasinya sekarang bersifat perkalian, sehingga kita mengalikan elemen, dan hasil kali berulang dapat ditulis sebagai pangkat.
Kode Sage (cadangan statis)
G.<a> = AbelianGroup([14]) G.order()
Keluaran referensi (cadangan statis)
14
Kode Sage (cadangan statis)
G.list()
Keluaran referensi (cadangan statis)
(1, a, a^2, a^3, a^4, a^5, a^6, a^7, a^8, a^9, a^10, a^11, a^12, a^13)
Kode Sage (cadangan statis)
a.order()
Keluaran referensi (cadangan statis)
14
Perhitungan dalam grup serupa dengan sebelumnya, hanya saja menggunakan notasi yang berbeda. Sekarang digunakan hasil kali, dengan hasil kali berulang ditulis sebagai perpangkatan.
Kode Sage (cadangan statis)
b = a^2 b.order()
Keluaran referensi (cadangan statis)
7
Kode Sage (cadangan statis)
b*b*b
Keluaran referensi (cadangan statis)
a^6
Kode Sage (cadangan statis)
c = a^7 c.order()
Keluaran referensi (cadangan statis)
2
Kode Sage (cadangan statis)
c^2
Keluaran referensi (cadangan statis)
1
Kode Sage (cadangan statis)
b*c
Keluaran referensi (cadangan statis)
a^9
Kode Sage (cadangan statis)
b^37*c^42
Keluaran referensi (cadangan statis)
a^4
Subgrup dapat dibentuk dengan perintah
.subgroup(). Namun, jangan mencoba mencantumkan isi suatu subgrup, karena hasilnya akan tampak asing. Selain itu, perbandingan subgrup belum diimplementasikan.
Kode Sage (cadangan statis)
H = G.subgroup([a^2]) H.order()
Keluaran referensi (cadangan statis)
7
Kode Sage (cadangan statis)
K = G.subgroup([a^12]) K.order()
Keluaran referensi (cadangan statis)
7
Salah satu keunggulan implementasi ini adalah kemampuannya membuat semua subgrup yang mungkin. Di sini kita membuat daftar subgrup, mengambil salah satu subgrup tertentu (yang ketiga), dan memeriksa ordenya.
Kode Sage (cadangan statis)
allsg = G.subgroups(); allsg
Keluaran referensi (cadangan statis)
[Multiplicative Abelian subgroup isomorphic to C2 x C7 generated by {a},
Multiplicative Abelian subgroup isomorphic to C7 generated by {a^2},
Multiplicative Abelian subgroup isomorphic to C2 generated by {a^7},
Trivial Abelian subgroup]
Kode Sage (cadangan statis)
sub = allsg[2] sub.order()
Keluaran referensi (cadangan statis)
2
Subbagian 4.8.4 Grup Permutasi Siklik
Kita akan mempelajari lebih banyak mengenai grup permutasi dalam bab berikutnya. Namun, perlu disebutkan di sini bahwa grup siklik mudah dibuat sebagai grup permutasi, dan tersedia beragam metode untuk mengolahnya, meskipun elemen sebenarnya dapat menjadi agak rumit untuk digunakan. Seperti sebelumnya, perhatikan bahwa notasi dan sintaksnya bersifat perkalian.
Kode Sage (cadangan statis)
G=CyclicPermutationGroup(14) a = G.gen(0); a
Keluaran referensi (cadangan statis)
(1,2,3,4,5,6,7,8,9,10,11,12,13,14)
Kode Sage (cadangan statis)
b = a^2 b = a^2; b
Keluaran referensi (cadangan statis)
(1,3,5,7,9,11,13)(2,4,6,8,10,12,14)
Kode Sage (cadangan statis)
b.order()
Keluaran referensi (cadangan statis)
7
Kode Sage (cadangan statis)
a*a*b*b*b
Keluaran referensi (cadangan statis)
(1,9,3,11,5,13,7)(2,10,4,12,6,14,8)
Kode Sage (cadangan statis)
c = a^37*b^26; c
Keluaran referensi (cadangan statis)
(1,6,11,2,7,12,3,8,13,4,9,14,5,10)
Kode Sage (cadangan statis)
c.order()
Keluaran referensi (cadangan statis)
14
Kita dapat membuat subgrup, memeriksa ordenya, dan mencantumkan elemennya.
Kode Sage (cadangan statis)
H = G.subgroup([a^2]) H.order()
Keluaran referensi (cadangan statis)
7
Kode Sage (cadangan statis)
H.gen(0)
Keluaran referensi (cadangan statis)
(1,3,5,7,9,11,13)(2,4,6,8,10,12,14)
Kode Sage (cadangan statis)
H.list()
Keluaran referensi (cadangan statis)
[(), (1,3,5,7,9,11,13)(2,4,6,8,10,12,14), (1,5,9,13,3,7,11)(2,6,10,14,4,8,12), (1,7,13,5,11,3,9)(2,8,14,6,12,4,10), (1,9,3,11,5,13,7)(2,10,4,12,6,14,8), (1,11,7,3,13,9,5)(2,12,8,4,14,10,6), (1,13,11,9,7,5,3)(2,14,12,10,8,6,4)]
Mungkin akan membantu jika grup dan subgrup ini divisualisasikan sebagai rotasi segi-\(12\) beraturan dengan titik-titik sudut yang diberi label bilangan bulat \(1\) hingga \(12\text{.}\) Ini bukan grup simetri lengkap, karena tidak mencakup refleksi, melainkan hanya \(12\) rotasi.
Subbagian 4.8.5 Tabel Cayley
Sebagai grup, setiap contoh di atas (grup maupun subgrup) mempunyai implementasi tabel Cayley. Karena grup tersebut siklik, dan subgrupnya dengan demikian juga siklik, tabel Cayley seharusnya mempunyai pola “siklik” yang serupa. Perhatikan bahwa huruf-huruf dalam tabel bawaan bersifat umum dan tidak berkaitan dengan huruf yang digunakan di atas untuk elemen tertentu — huruf tersebut hanya dipasangkan dengan elemen grup menurut urutan yang diberikan oleh
.list().
Kode Sage (cadangan statis)
G.<a> = AbelianGroup([14]) G.cayley_table()
Keluaran referensi (cadangan statis)
* a b c d e f g h i j k l m n +---------------------------- a| a b c d e f g h i j k l m n b| b c d e f g h i j k l m n a c| c d e f g h i j k l m n a b d| d e f g h i j k l m n a b c e| e f g h i j k l m n a b c d f| f g h i j k l m n a b c d e g| g h i j k l m n a b c d e f h| h i j k l m n a b c d e f g i| i j k l m n a b c d e f g h j| j k l m n a b c d e f g h i k| k l m n a b c d e f g h i j l| l m n a b c d e f g h i j k m| m n a b c d e f g h i j k l n| n a b c d e f g h i j k l m
Jika nama sebenarnya dari elemen-elemen tersebut tidak terlalu rumit, tabel dapat dibuat lebih informatif dengan menggunakan nama-nama itu.
Kode Sage (cadangan statis)
K.<b> = AbelianGroup([10]) K.cayley_table(names='elements')
Keluaran referensi (cadangan statis)
* 1 b b^2 b^3 b^4 b^5 b^6 b^7 b^8 b^9 +---------------------------------------- 1| 1 b b^2 b^3 b^4 b^5 b^6 b^7 b^8 b^9 b| b b^2 b^3 b^4 b^5 b^6 b^7 b^8 b^9 1 b^2| b^2 b^3 b^4 b^5 b^6 b^7 b^8 b^9 1 b b^3| b^3 b^4 b^5 b^6 b^7 b^8 b^9 1 b b^2 b^4| b^4 b^5 b^6 b^7 b^8 b^9 1 b b^2 b^3 b^5| b^5 b^6 b^7 b^8 b^9 1 b b^2 b^3 b^4 b^6| b^6 b^7 b^8 b^9 1 b b^2 b^3 b^4 b^5 b^7| b^7 b^8 b^9 1 b b^2 b^3 b^4 b^5 b^6 b^8| b^8 b^9 1 b b^2 b^3 b^4 b^5 b^6 b^7 b^9| b^9 1 b b^2 b^3 b^4 b^5 b^6 b^7 b^8
Subbagian 4.8.6 Akar Kesatuan Kompleks
Subgrup siklik hingga dari \({\mathbb T}\) yang dibangkitkan oleh suatu akar kesatuan ke-\(n\) primitif diimplementasikan sebagai konstruksi yang lebih umum dalam Sage, yang dikenal sebagai lapangan siklotomik. Jika Anda hanya berfokus pada perkalian pangkat suatu pembangkit (dan mengabaikan tak hingga banyaknya elemen lain), maka konstruksi ini merupakan grup siklik hingga. Karena konstruksi tersebut tidak diimplementasikan secara langsung sebagai grup dalam Sage, per se, hal-hal seperti subgrup sedikit lebih sulit dibangun, tetapi mencobanya merupakan latihan yang sangat baik. Ini merupakan contoh yang bagus karena bilangan kompleks adalah konstruksi yang konkret dan dikenal baik. Berikut beberapa contoh perhitungan yang menyediakan perangkat eksplorasi. Lihat catatan setelah perhitungan.
Kode Sage (cadangan statis)
G = CyclotomicField(14) w = G.gen(0); w
Keluaran referensi (cadangan statis)
zeta14
Kode Sage (cadangan statis)
wc = CDF(w) wc.abs()
Keluaran referensi (cadangan statis)
1.0
Kode Sage (cadangan statis)
wc.arg()/N(2*pi/14)
Keluaran referensi (cadangan statis)
1.0
Kode Sage (cadangan statis)
b = w^2 b.multiplicative_order()
Keluaran referensi (cadangan statis)
7
Kode Sage (cadangan statis)
bc = CDF(b); bc
Keluaran referensi (cadangan statis)
0.62348980185... + 0.781831482468...*I
Kode Sage (cadangan statis)
bc.abs()
Keluaran referensi (cadangan statis)
1.0
Kode Sage (cadangan statis)
bc.arg()/N(2*pi/14)
Keluaran referensi (cadangan statis)
2.0
Kode Sage (cadangan statis)
sg = [b^i for i in range(7)]; sg
Keluaran referensi (cadangan statis)
[1, zeta14^2, zeta14^4, zeta14^5 - zeta14^4 + zeta14^3 - zeta14^2 + zeta14 - 1, -zeta14, -zeta14^3, -zeta14^5]
Kode Sage (cadangan statis)
c = sg[3]; d = sg[5] c*d
Keluaran referensi (cadangan statis)
zeta14^2
Kode Sage (cadangan statis)
c = sg[3]; d = sg[6] c*d in sg
Keluaran referensi (cadangan statis)
True
Kode Sage (cadangan statis)
c*d == sg[2]
Keluaran referensi (cadangan statis)
True
Kode Sage (cadangan statis)
sg[5]*sg[6] == sg[4]
Keluaran referensi (cadangan statis)
True
Kode Sage (cadangan statis)
G.multiplication_table(elements=sg)
Keluaran referensi (cadangan statis)
* a b c d e f g +-------------- a| a b c d e f g b| b c d e f g a c| c d e f g a b d| d e f g a b c e| e f g a b c d f| f g a b c d e g| g a b c d e f
Catatan:
-
zeta14adalah nama pembangkit yang digunakan untuk lapangan siklotomik; elemen ini merupakan akar kesatuan primitif (dalam kasus ini, akar kesatuan ke-\(14\)). Kita menyimpannya sebagaiw. -
Sintaks
CDF(w)mengubah bilangan komplekswmenjadi bentuk yang lebih dikenal dengan bagian real dan imajiner. -
Metode
.abs()mengembalikan modulus suatu bilangan kompleks, yaitu \(r\) sebagaimana dijelaskan dalam teks. Untuk elemen \({\mathbb C}^\ast\text{,}\) nilai ini seharusnya selalu sama dengan \(1\text{.}\) -
Metode
.arg()mengembalikan argumen suatu bilangan kompleks, yaitu \(\theta\) sebagaimana dijelaskan dalam teks. Setiap elemen grup siklik dalam contoh ini seharusnya mempunyai argumen yang merupakan kelipatan bilangan bulat dari \(\frac{2\pi}{14}\text{.}\) SintaksN()mengubah nilai simbolispimenjadi hampiran numerik. -
sgadalah daftar elemen yang membentuk subgrup siklik berorde 7, terdiri atas 7 pangkat pertama darib = w^2. Jadi, sebagai contoh, perbandingan terakhir mengalikan pangkat kelimabdengan pangkat keenamb, yang menghasilkan pangkat kesebelasb. Namun, karenabberorde 7, hasil ini menyederhana menjadi pangkat keempat. -
Jika Anda mengetahui bahwa suatu himpunan bagian dari grup tak hingga membentuk subgrup, Anda dapat menghasilkan tabel Cayley-nya dengan menentukan daftar elemen yang ingin digunakan. Di sini kita meminta tabel perkalian, karena itulah operasi yang relevan.

