Bagian 20.7 Sage
Banyak komputasi dalam bidang-bidang matematika yang tampaknya sangat berbeda dapat diterjemahkan menjadi pertanyaan mengenai kombinasi linear atau bagian lain dari aljabar linear. Oleh karena itu, Sage menyediakan dukungan yang luas dan menyeluruh untuk topik seperti ruang vektor.
Subbagian 20.7.1 Ruang Vektor
Cara paling sederhana untuk membuat ruang vektor adalah memulai dengan suatu lapangan dan menggunakan eksponen untuk menunjukkan banyaknya entri dalam vektor-vektor ruang tersebut.
Kode Sage (cadangan statis)
V = QQ^4; V
Keluaran referensi (cadangan statis)
Vector space of dimension 4 over Rational Field
Kode Sage (cadangan statis)
F.<a> = FiniteField(3^4) W = F^5; W
Keluaran referensi (cadangan statis)
Vector space of dimension 5 over Finite Field in a of size 3^4
Elemen dapat dibuat dengan konstruktor vektor.
Kode Sage (cadangan statis)
v = vector(QQ, [1, 1/2, 1/3, 1/4]); v
Keluaran referensi (cadangan statis)
(1, 1/2, 1/3, 1/4)
Kode Sage (cadangan statis)
v in V
Keluaran referensi (cadangan statis)
True
Kode Sage (cadangan statis)
w = vector(F, [1, a^2, a^4, a^6, a^8]); w
Keluaran referensi (cadangan statis)
(1, a^2, a^3 + 1, a^3 + a^2 + a + 1, a^2 + a + 2)
Kode Sage (cadangan statis)
w in W
Keluaran referensi (cadangan statis)
True
Perhatikan bahwa vektor ditampilkan dengan tanda kurung biasa, yang membantu membedakannya dari daftar (meskipun vektor juga tampak seperti tupel). Vektor ditampilkan secara horizontal, tetapi dalam Sage tidak ada istilah “vektor baris” atau “vektor kolom,” meskipun ketika matriks mulai terlibat kita perlu membahas perbedaan ini. Terakhir, perhatikan bagaimana elemen-elemen lapangan hingga telah diubah menjadi representasi alternatif.
Setelah memiliki ruang vektor yang berisi vektor-vektor, kita dapat melakukan komputasi dengannya. Pada akhirnya, semua kegiatan dalam ruang vektor kembali pada penjumlahan vektor dan perkalian skalar, yang bersama-sama menghasilkan kombinasi linear.
Kode Sage (cadangan statis)
u = vector(QQ, [ 1, 2, 3, 4, 5, 6]) v = vector(QQ, [-1, 2, -4, 8, -16, 32]) 3*u - 2*v
Keluaran referensi (cadangan statis)
(5, 2, 17, -4, 47, -46)
Kode Sage (cadangan statis)
w = vector(F, [1, a^2, a^4, a^6, a^8]) x = vector(F, [1, a, 2*a, a, 1]) y = vector(F, [1, a^3, a^6, a^9, a^12]) a^25*w + a^43*x + a^66*y
Keluaran referensi (cadangan statis)
(a^3 + a^2 + a + 2, a^2 + 2*a, 2*a^3 + a^2 + 2, 2*a^3 + a^2 + a, a^3 + 2*a^2 + a + 2)
Subbagian 20.7.2 Subruang
Sage dapat membuat subruang dengan berbagai cara, seperti ketika membuat ruang baris atau ruang kolom suatu matriks. Namun, cara yang paling langsung adalah memulai dengan suatu himpunan vektor untuk digunakan sebagai himpunan perentang.
Kode Sage (cadangan statis)
u = vector(QQ, [1, -1, 3]) v = vector(QQ, [2, 1, -1]) w = vector(QQ, [3, 0, 2]) S = (QQ^3).subspace([u, v, w]); S
Keluaran referensi (cadangan statis)
Vector space of degree 3 and dimension 2 over Rational Field Basis matrix: [ 1 0 2/3] [ 0 1 -7/3]
Kode Sage (cadangan statis)
3*u - 6*v + (1/2)*w in S
Keluaran referensi (cadangan statis)
True
Kode Sage (cadangan statis)
vector(QQ, [4, -1, -2]) in S
Keluaran referensi (cadangan statis)
False
Perhatikan bahwa informasi yang ditampilkan mengenai
S mencakup suatu “matriks basis.” Baris-baris matriks ini merupakan basis bagi ruang vektor tersebut. Kita dapat memperoleh basis itu sebagai daftar vektor (bukan sebagai baris-baris matriks) dengan metode .basis().
Kode Sage (cadangan statis)
S.basis()
Keluaran referensi (cadangan statis)
[(1, 0, 2/3), (0, 1, -7/3)]
Perhatikan bahwa Sage telah mengubah himpunan perentang yang terdiri atas tiga vektor menjadi basis yang terdiri atas dua vektor. Hal ini sebagian disebabkan oleh fakta bahwa himpunan awal yang terdiri atas tiga vektor tersebut bergantung linear, tetapi perubahan yang lebih mendasar juga telah terjadi.
Bagian ini merupakan tempat yang baik untuk membahas sebagian matematika di balik cara kerja Sage. Ruang vektor atas lapangan tak hingga, seperti bilangan rasional atau bilangan real, merupakan himpunan tak hingga. Betapapun besarnya memori komputer tampak, memori tersebut tetap berhingga. Bagaimana Sage memuat himpunan tak hingga ke dalam mesin kita yang berhingga? Gagasan utamanya adalah bahwa ruang vektor berdimensi hingga memiliki himpunan pembangkit yang berhingga, yang kita kenal sebagai basis. Jadi, Sage sebenarnya hanya memerlukan elemen-elemen suatu basis (dua vektor dalam contoh sebelumnya) agar dapat bekerja dengan tak hingga banyak kemungkinan elemen subruang tersebut.
Selain itu, untuk setiap basis yang dikaitkan dengan suatu ruang vektor, Sage melakukan kombinasi linear untuk mengubah basis yang diberikan menjadi basis “standar” lain. Basis baru ini memiliki sifat bahwa ketika vektor-vektornya menjadi baris suatu matriks, matriks tersebut berada dalam bentuk eselon baris tereduksi. Anda dapat melihatnya pada matriks basis di atas. Bentuk eselon baris tereduksi suatu matriks bersifat tunggal, sehingga basis standar ini memungkinkan Sage mengenali kapan dua ruang vektor sama. Berikut sebuah contoh.
Kode Sage (cadangan statis)
u = vector(QQ, [1, -1, 3]) v = vector(QQ, [2, 1, -1]) w = vector(QQ, [3, 0, 2]) u + v == w
Keluaran referensi (cadangan statis)
True
Kode Sage (cadangan statis)
S1 = (QQ^3).subspace([u, v, w]) S2 = (QQ^3).subspace([u-v, v-w, w-u]) S1 == S2
Keluaran referensi (cadangan statis)
True
Seperti yang mungkin Anda duga, menentukan dimensi suatu ruang vektor adalah hal yang mudah.
Kode Sage (cadangan statis)
u = vector(QQ, [1, -1, 3, 4]) v = vector(QQ, [2, 1, -1, -2]) S = (QQ^4).subspace([u, v, 2*u + 3*v, -u + 2*v]) S.dimension()
Keluaran referensi (cadangan statis)
2
Subbagian 20.7.3 Kebebasan Linear
Sage menyediakan berbagai cara untuk menentukan apakah suatu himpunan vektor bebas linear dan untuk menemukan relasi kebergantungan linear jika relasi tersebut ada. Teknik yang akan kita tunjukkan di sini merupakan pengujian sederhana untuk mengetahui apakah suatu himpunan vektor bebas linear. Cukup gunakan vektor-vektor tersebut sebagai himpunan perentang bagi suatu subruang, lalu periksa dimensi subruang tersebut. Dimensi itu sama dengan banyaknya vektor dalam himpunan perentang jika dan hanya jika himpunan perentang tersebut bebas linear.
Kode Sage (cadangan statis)
F.<a> = FiniteField(3^4) u = vector(F, [a^i for i in range(0, 7, 1)]) v = vector(F, [a^i for i in range(0, 14, 2)]) w = vector(F, [a^i for i in range(0, 21, 3)]) S = (F^7).subspace([u, v, w]) S.dimension()
Keluaran referensi (cadangan statis)
3
Kode Sage (cadangan statis)
S = (F^7).subspace([u, v, a^3*u + a^11*v]) S.dimension()
Keluaran referensi (cadangan statis)
2
Jadi, himpunan vektor pertama,
[u, v, w], bebas linear, sedangkan himpunan kedua, [u, v, a^3*u + a^11*v], tidak bebas linear.
Subbagian 20.7.4 Ruang Vektor Abstrak
Sage tidak mengimplementasikan banyak ruang vektor abstrak secara langsung, seperti \(P_n\text{,}\) yakni ruang vektor polinomial berderajat \(n\) atau kurang. Hal ini sebagian disebabkan oleh fakta bahwa ruang vektor berdimensi hingga atas suatu lapangan \(F\) isomorfik dengan ruang vektor \(F^n\text{.}\) Jadi, Sage mencakup seluruh fungsionalitas ruang vektor berdimensi hingga, sedangkan pengguna perlu melakukan konversi sesuai dengan isomorfisma tersebut (yang sering kali mudah jika dipilih basis yang jelas).
Namun, terdapat keadaan ketika gelanggang secara alami berperilaku sebagai ruang vektor dan kita dapat memanfaatkan struktur tambahan ini. Kita akan melihat jauh lebih banyak mengenai hal tersebut dalam bab-bab tentang lapangan dan teori Galois. Sebagai contoh, lapangan hingga memiliki satu pembangkit, dan beberapa pangkat pertama pembangkit tersebut membentuk suatu basis. Tinjau pembuatan ruang vektor dari elemen-elemen lapangan hingga berorde \(7^6=117\,649\text{.}\) Sebagai elemen lapangan, kita mengetahui bahwa elemen-elemen itu dapat dijumlahkan, sehingga kita akan mendefinisikan operasi tersebut sebagai penjumlahan dalam ruang vektor kita. Untuk setiap elemen bilangan bulat modulo 7, kita dapat mengalikan suatu elemen lapangan dengan bilangan bulat tersebut, sehingga kita mendefinisikan operasi ini sebagai perkalian skalar. Kelak kita akan memastikan bahwa kedua definisi ini menghasilkan suatu ruang vektor, tetapi untuk sekarang terimalah fakta tersebut. Berikut beberapa operasi dalam ruang vektor baru kita.
Kode Sage (cadangan statis)
F.<a> = FiniteField(7^6) u = 2*a^5 + 6*a^4 + 2*a^3 + 3*a^2 + 2*a + 3 v = 4*a^5 + 4*a^4 + 4*a^3 + 6*a^2 + 5*a + 6 u + v
Keluaran referensi (cadangan statis)
6*a^5 + 3*a^4 + 6*a^3 + 2*a^2 + 2
Kode Sage (cadangan statis)
4*u
Keluaran referensi (cadangan statis)
a^5 + 3*a^4 + a^3 + 5*a^2 + a + 5
Kode Sage (cadangan statis)
2*u + 5*v
Keluaran referensi (cadangan statis)
3*a^5 + 4*a^4 + 3*a^3 + a^2 + a + 1
Anda mungkin mengenali bahwa hal ini sangat menyerupai cara kita menjumlahkan polinomial dan mengalikan polinomial dengan skalar. Pengamatan tersebut benar. Namun, perhatikan bahwa dalam konstruksi ruang vektor ini, kita sama sekali mengabaikan kemungkinan mengalikan dua elemen lapangan. Sebagai ruang vektor dengan skalar dari \({\mathbb Z}_7\text{,}\) salah satu basisnya adalah enam pangkat pertama pembangkit, \(\{1,\,a,\,a^2,\,a^3,\,a^4,\,a^5\}\text{.}\) (Perhatikan bahwa pencacahan dari nol terasa alami di sini.) Anda mungkin telah memperhatikan bahwa Sage secara konsisten menuliskan ulang elemen-elemen lapangan sebagai kombinasi linear — kini Anda memiliki penjelasan yang baik.
Berikut hal-hal yang diketahui Sage mengenai suatu lapangan hingga sebagai ruang vektor. Pertama, Sage mengetahui bahwa lapangan hingga tersebut merupakan ruang vektor dan mengetahui lapangan skalarnya. Kita menyembunyikan keluaran tambahan yang memuat isomorfisma antara struktur lapangan hingga dan struktur ruang vektor.
Kode Sage (cadangan statis)
V = F.vector_space(map=False); V
Keluaran referensi (cadangan statis)
Vector space of dimension 6 over Finite Field of size 7
Kode Sage (cadangan statis)
R = V.base_ring(); R
Keluaran referensi (cadangan statis)
Finite Field of size 7
Kode Sage (cadangan statis)
R == FiniteField(7)
Keluaran referensi (cadangan statis)
True
Kode Sage (cadangan statis)
V.dimension()
Keluaran referensi (cadangan statis)
6
Jadi, lapangan hingga tersebut (sebagai ruang vektor) isomorfik dengan ruang vektor \(({\mathbb Z}_7)^6\text{.}\) Perhatikan bahwa ini bukan isomorfisma gelanggang ataupun lapangan, karena isomorfisma tersebut tidak sepenuhnya memperhitungkan perkalian elemen, meskipun perkalian itu dapat dilakukan dalam lapangan tersebut.
Kedua, elemen-elemen lapangan dapat dengan mudah dikonversi menjadi elemen ruang vektor.
Kode Sage (cadangan statis)
x = V(u); x
Keluaran referensi (cadangan statis)
(3, 2, 3, 2, 6, 2)
Kode Sage (cadangan statis)
y = V(v); y
Keluaran referensi (cadangan statis)
(6, 5, 6, 4, 4, 4)
Perhatikan bahwa Sage menuliskan elemen lapangan dengan pangkat tinggi pembangkit terlebih dahulu, sedangkan basis yang digunakan diurutkan dengan pangkat rendah terlebih dahulu. Komputasi berikut memperagakan isomorfisma yang mempertahankan struktur antara lapangan hingga itu sendiri dan penafsirannya sebagai ruang vektor, \(({\mathbb Z}_7)^6\text{.}\)
Kode Sage (cadangan statis)
V(u + v) == V(u) + V(v)
Keluaran referensi (cadangan statis)
True
Kode Sage (cadangan statis)
two = R(2) V(two*u) == two*V(u)
Keluaran referensi (cadangan statis)
True
Subbagian 20.7.5 Aljabar Linear
Sage menyediakan dukungan yang luas untuk aljabar linear, jauh melampaui apa yang telah kita uraikan di sini atau yang akan kita perlukan dalam bab-bab selanjutnya. Buatlah ruang vektor dan vektor (dengan lapangan skalar yang berbeda), lalu gunakan pelengkapan tab pada objek-objek tersebut untuk menjelajahi banyak perintah yang tersedia.

