23 September 2017

Polinomial


Pada bagian ini kita akan menggambarkan bagaimana membuat dan menggunakan polinomial di Sage.
  • Polinomial uni variabel.
Ada tiga cara untuk membuat ring polinomial:

Cara di atas dapat digunakan untuk membuat ring polinomial dan memberitahu Sage untuk menggunakan (string) 't' sebagai variabel ketika mencetak ke layar. Namun, hal ini tidak membuat simbol t bisa langsung digunakan di Sage, jadi kita tidak dapat menggunakannya variabel 't' tersebut untuk dimasukkan di polinom (seperti \(t^{2}+1\)) milik R .

Cara alternatifnya adalah sebagai berikut:

Cara di atas juga memiliki masalah yang sama mengenai t (kita belum bisa menggunakan variabel 't' secara langsung pada polinom R). Cara ketiga yang sangat mudah adalah sebagai berikut:  

Dengan cara ini, kita dapat menggunakan variabel 't' pada ring polinomial, sehingga kita dapat dengan mudah membuat elemen R, sebagai berikut.

Apapun cara (dari ketiga cara di atas) yang kita gunakan untuk menentukan ring polinomial, kita dapat memulihkan variabel sehingga dapat digunakan dengan generator \(0^{th}\) seperti cara di bawah ini.

Perhatikan bahwa konstruksi serupa bekerja dengan bilangan kompleks: bilangan kompleks dapat dipandang sebagai suatu bilangan yang dihasilkan dari bilangan real dengan simbol i; Dengan demikian kita memiliki yang berikut ini:

Untuk ring polinomial, kita bisa mendapatkan ring dan generatornya, atau hanya generator saja, jika pembuatan ring sebagai berikut:

Akhirnya kita akan melakukan aritmatika dalam Q [t] Q [t].

Perhatikan bahwa faktorisasi benar memperhitungkan dan mencatat bagian unit. Jika kita menggunakan, misalnya, fungsi R.cyclotomic_polynomial banyak untuk beberapa proyek penelitian, selain mengutip Sage kita harus berusaha untuk mengetahui komponen Sage apa yang digunakan untuk benar-benar menghitung polinomial siklotomik dan mengutipnya dengan baik. Dalam kasus ini, jika kita mengetik R.cyclotomic_polynomial? untuk melihat kode sumbernya, kita akan segera melihat garis f = pari.polcyclo (n) yang berarti bahwa PARI digunakan untuk perhitungan polimom siklotomik. Kutipankan PARI di pekerjaan kita juga. Membagi dua polinom menyusun elemen bidang pecahan (yang dibuat oleh Sage secara otomatis). 

Dengan menggunakan Laurent Series, kita dapat menghitung ekspansi seri di bidang pecahan QQ [x]: 

Jika kita memberi nama variabel secara berbeda, kita mendapatkan ring polinomial uni-varian yang berbeda.

Ring ditentukan oleh variabel. Perhatikan bahwa membuat ring lain dengan variabel yang disebut x tidak mengembalikan ring yang berbeda.

Sage juga support untuk power  series dan  Laurent series di atas ring dasar manapun. Pada contoh berikut, kita membuat elemen \(F_{7}\left[[T]\right]\) dan bagi untuk membuat elemen \(F_{7}\left((T)\right)\). 

Kita juga dapat membuat deret deret daya menggunakan stik tanda kurung siku ganda:
  • Polinomial multi variabel.
Untuk bekerja dengan polinomial dari beberapa variabel, kita harus mendeklarasikan ring dan variabel polinomial terlebih dahulu.

Sama seperti untuk menentukan ring polinomial univariabel, ada beberapa cara alternatif sebagai berikut:

Dan juga, jika kita ingin nama variabel menjadi huruf tunggal maka kita dapat menggunakan steno berikut ini:

Selanjutnya mari kita melakukan aritmatika.

Kita juga dapat menggunakan lebih banyak notasi matematika untuk membuat ring polinomial.

Multivariabel polinomial diimplementasikan dalam Sage dengan menggunakan kamus Python dan "representasi distributif" polinomial. Sage memanfaatkan Singular [Si], misal, untuk menghitung basis ideal gcd dan Gröbner.

Selanjutnya kita bisa menciptakan ideal \((f,g)\) yang dihasilkan oleh f dan g, hanya dengan mengalikan (f, g) dengan R (kita juga bisa menulis ideal ([f, g]) atau ideal (f, g )).

Kebetulan, basis Gröbner di atas bukanlah daftar tapi urutan yang tidak berubah. Ini berarti bahwa ia memiliki semesta, parent, dan tidak dapat diubah (yang baik karena mengubah basis akan mematahkan rutinitas lain yang menggunakan basis Gröbner).

Beberapa (baca: tidak sebanyak yang kita mau) aljabar komutatif tersedia di Sage, diimplementasikan melalui Singular. Sebagai contoh, kita dapat menghitung dekomposisi primer dan bilangan prima terkait dari I:

Aljabar Linier

<<Basic Rings

Sage menyediakan konstruksi standar dari aljabar linear, misalnya polinomial karakteristik, bentuk eselon, jejak, dekomposisi, dan lain-lain dari matriks. Pembuatan matrik dan perkalian matriks mudah dan alami:

Pada Sage, kita bisa membuat matriks dimana nilai masing-masing baris dan kolomnya merupakan modulus dari nilai yang kita tentukan. Dan juga bisa dalam bentuk finite field (GF)Contohnya sebagai berikut:

Perhatikan bahwa di Sage, kernel dari matriks A adalah "kernel kiri", yaitu ruang vektor dengan wA = 0. Memecahkan persamaan matriks itu mudah, dengan menggunakan metode solve_right. Mengevaluasi A.solve_right (Y) mengembalikan sebuah matriks (atau vektor) X sehingga AX = Y: 

Garis miring terbalik \ dapat digunakan di tempat solve_right; gunakan A \ Y dan bukan A.solve_right (Y)

Jika tidak ada solusi, Sage mengembalikan kesalahan:

Demikian pula, gunakan A.solve_left (Y) untuk menyelesaikan X di XA =  Y. Sage juga bisa menghitung nilai eigen dan vektor eigen:

(Sintaks untuk output dari eigenvectors_left adalah daftar tiga kali lipat: (eigenvalue, eigenvector, multiplicity).) Nilai eigen dan vektor eigen di atas QQ atau RR juga dapat dihitung dengan menggunakan Maxima (lihat Maxima di bawah).

Seperti dicatat dalam Rings Dasar, ring di mana matriks didefinisikan mempengaruhi beberapa propertinya. Berikut ini, argumen pertama pada perintah matriks memberi tahu Sage untuk melihat matriks sebagai matriks bilangan bulat (kasus ZZ), matriks bilangan rasional (QQ), atau matriks real (RR): 

Untuk menghitung nilai eigen dan vektor eigen dari matriks di atas bilangan floating point bilangan real atau kompleks, matriks harus didefinisikan melalui RDF (Field Real Double Field) atau CDF (Complexs Double Field). Jika tidak ada ring yang ditentukan dan bilangan floating point bilangan real atau kompleks digunakan maka secara default matriks didefinisikan di atas bidang RR atau CC, masing-masing, yang tidak mendukung penghitungan ini untuk semua kasus: 
  • Ruang matriks 
Kita dapat membuat marik  \(Mat_{3x3}(Q)\) dengan masukan bilangan rational.

(Untuk menentukan ruang dari 3 dengan 4 matrik, Anda akan menggunakan MatrixSpace (QQ, 3,4). Jika jumlah kolom dihilangkan, defaultnya adalah jumlah baris, jadi MatrixSpace (QQ, 3) adalah sinonim untuk MatrixSpace (QQ, 3,3).) Ruang matrik dilengkapi dengan dasar kanoniknya:

Kita membuat matriks sebagai elemen dari M.

Selanjutnya kita menghitung bentuk eselon baris tereduksi dan kernelnya.

Selanjutnya kita menggambarkan perhitungan matrik yang didefinisikan di atas bidang yang terbatas:

Kita dapat membuat subruang di atas F2 yang direntang oleh baris di atas.
Dasar S yang digunakan oleh Sage diperoleh dari baris non-nol dari bentuk eselon baris tereduksi dari matriks generator S.

  • Aljabar Linear Langka
Sage mendukung aljabar linier langka sesuai PID.

Algoritma multi-modular pada Sage bagus untuk matriks bujursangkar (tapi tidak begitu bagus untuk matriks non-kuadrat):

Perhatikan bahwa Python adalah case sensitive:

Basic Rings

<<Plotting

Saat menentukan matriks, vektor, atau polinomial, kadang kita perlu mendefiniskannya dalam sebuah ring. Ring adalah konstruksi matematis dimana ada beberapa pengertian tentang penambahan dan perkalian; Ada empat jenis ring yang digunakan dalam Sage:
  • Bilangan bulat {..., - 1,0,1,2, ...} {..., - 1,0,1,2, ...}, disebut ZZ,
  • Bilangan rasional - yaitu, pecahan, atau rasio, bilangan bulat - disebut QQ,
  • Bilangan real, disebut RR,
  • Bilangan kompleks, disebut CC.
Kita mungkin perlu mengetahui perbedaan ini karena polinomial yang sama dapat diperlakukan berbeda tergantung pada ring yang ditentukan. Misalnya, polinomial \(x^{2}-2\) memiliki dua akar, \(\pm\sqrt{2}\). Akar-akar itu tidak rasional, jadi jika kita bekerja dengan polinomial dengan koefisien rasional, polinomial tidak akan menjadi faktor. Dengan koefisien riil, maka akan menjadi faktor. Oleh karena itu, kita mungkin ingin menentukan ring itu untuk memastikan bahwa kita mendapatkan informasi yang sesuai dengan harapan kita. Dua perintah berikut mendefinisikan rangkaian polinomial dengan koefisien rasional dan koefisien riil. Perangkat itu diberi nama ratpoly dan realpoly, tapi ini tidak penting divsini; Namun, perhatikan bahwa string ". <t>" dan ". <z>" beri nama variabel yang digunakan dalam dua kasus.

Sekarang kita menggambarkan tentang faktorisasi \(x^{2}-2\):

Hal serupa berlaku untuk matriks: bentuk matriks yang diturunkan dari baris dapat bergantung pada ring di mana matriks tersebut didefinisikan, seperti juga nilai eigen dan vektor eigennya. Untuk lebih lanjut tentang membangun polinomial, lihat polinomial, dan untuk lebih banyak tentang matriks, lihat Aljabar Linier.

Simbol I mewakili akar kuadrat dari -1; I adalah sinonim untuk i. I adalah bilangan kompleks:
Catatan: Kode di atas mungkin tidak bekerja seperti yang diharapkan jika variabel i diberi nilai yang berbeda, misalnya jika digunakan sebagai variabel loop. Jika ini masalahnya, kita dapat mengembalikan nilai i ke default dengan perintah berikut:

Untuk mendapatkan nilai kompleks asli dari i. Ada satu kehalusan dalam mendefinisikan bilangan kompleks: seperti yang disebutkan di atas, simbol i mewakili akar kuadrat -1, tapi ini adalah akar kuadrat formal atau simbolis dari -1. Memanggil CC (i) atau CC.0 mengembalikan akar kuadrat kompleks dari -1. Aritmatika yang melibatkan berbagai jenis angka dimungkinkan oleh apa yang disebut coercion.

Berikut adalah beberapa contoh ring dasar di Sage. Seperti disebutkan di atas, ring bilangan rasional dapat disebut menggunakan QQ, atau juga RationalField () (bidang adalah cincin di mana perkalian bersifat komutatif dan di mana setiap elemen tak-nol memiliki invers dalam ring itu, jadi bentuk penjabarannya bilangan rational, tapi bilangan bulatnya tidak):

Angka desimal 1.2 dianggap berada di QQ: bilangan desimal yang kebetulan juga rasional dapat "dipaksakan" ke angka rasional. Angka π dan 2√2 tidak rasional:

Untuk digunakan dalam matematika yang lebih tinggi, Sage juga tahu tentang ring lainnya, seperti bidang yang terbatas, bilangan bulat \(p\)-adic, ring bilangan aljabar, ring polinomial, dan ring matriks. Berikut adalah beberapa konstruksi dari beberapa ini:

Plotting

<<Aljabar dan Kalkulus Dasar

Sage dapat menghasilkan plot dua dimensi dan tiga dimensi.
  • Plot dua dimensi
Dalam plot dua dimensi, Sage bisa menggambar lingkaran, garis, dan poligon; plot fungsi dalam koordinat persegi panjang; dan juga plot polar, plot kontur dan plot bidang vektor. Kita akan memberikan beberapa contoh di sini. Untuk lebih banyak contoh merencanakan dengan Sage, bisa dilihat Memecahkan Persamaan Diferensial dan Maxima, dan juga dokumentasi Sage Constructions.
Perintah ini menghasilkan lingkaran kuning radius 1, berpusat pada titik asal:

Kita juga bisa menghasilkan lingkaran yang diisi dengan warna:
Membuat Histogram:

Kita juga bisa membuat lingkaran dan menyimpannya dalam sebuah variabel; dengan demikian tidak akan di-plot:

Sebagai alternatif, dengan perintah c.save ('filename.png'), kita akan dapat menyimpan plot ke nama file yang diberikan. Pada lingkaran di bawah ini terlihat lebih mirip elips karena sumbunya berbeda. Kita bisa memperbaikinya:

Perintah show (c, aspect_ratio = 1) digunakan untuk  hal yang sama, atau kita dapat menyimpan gambar menggunakan c.save ('filename.png', aspect_ratio = 1). Sangat mudah untuk mem-plot fungsi-fungsi dasar.

Setelah kita menentukan nama variabel, kita dapat juga membuat plot parametrik:

Agar diperhatikan bahwa sumbu plot hanya akan berpotongan jika titik asal berada pada kisaran tampilan grafik, dan dengan nilai notasi ilmiah yang cukup besar, untuk hal tersebut dapat digunakan fungsi di bawah ini:

Kita dapat juga menggabungkan beberapa plot dengan menambahkannya:

Cara yang baik untuk menghasilkan bentuk yang terisi adalah menghasilkan daftar titik (L pada contoh di bawah) dan kemudian menggunakan perintah poligon untuk mem-plot bentuk dengan batas yang dibentuk oleh titik-titik tersebut. Sebagai contoh, berikut adalah deltoid hijau:

Tipe show (p, axes = false) untuk melihat ini tanpa sumbu.

Jika ingin mem-plot kalkulus, tidak hanya satu cabang arcsin tapi beberapa di antaranya: yaitu plot y = sin (x) y = sin⁡ (x) untuk x diantara -2π dan 2π , membalik sekitar garis 45 derajat. Untuk menggambarnya dapat menggunakan perintah Sage berikut ini:

Karena fungsi tangen memiliki rentang yang lebih besar daripada sinus, jika kita menggunakan trik yang sama untuk menggambar garis singgung terbalik, kita harus mengubah koordinat minimum dan maksimum untuk sumbu x:

Sage juga dapat menghitung plot polar, plot kontur dan plot bidang vektor (untuk jenis fungsi khusus). Berikut adalah contoh plot kontur:
  • Plot Tiga Dimensi
Sage juga bisa digunakan untuk membuat plot tiga dimensi. Di kedua notebook dan REPL, plot ini akan ditampilkan secara default menggunakan paket open source [Jmol], yang mendukung secara interaktif bagaimana memutar dan memperbesar gambar dengan mouse. Gunakan plot3d untuk memotret fungsi dari bentuk f (x, y) = zf (x, y) = z:

Sebagai alternatif, kita dapat menggunakan parametric_plot3d untuk membuat grafik permukaan parametrik di mana masing-masing x, y, z ditentukan oleh fungsi satu atau dua variabel (parameter, biasanya u dan v). Plot sebelumnya dapat dinyatakan secara parametrik sebagai berikut:

Cara ketiga untuk menggambar permukaan 3D di Sage adalah implicit_plot3d, yang memotret kontur fungsi seperti f (x, y, z) = 0 (ini mendefinisikan satu set titik). Kita membuat grafik bola menggunakan rumus klasik: 
Berikut beberapa contohnya:
  1. Yellow Whitney’s umbrella:

  2. Cross cap:

  3. Twisted torus:

  4. Lemniscate:

22 September 2017

Aljabar dan Kalkulus Dasar

<<Fungsi, Identasi & Perhitungan

Basic Algebra and Calculus.   Sage dapat melakukan berbagai perhitungan yang terkait dengan aljabar dan kalkulus dasar: misalnya, menemukan solusi untuk persamaan, diferensial, integral, dan transformasi Laplace. Lihat dokumentasi Sage Constructions untuk lebih banyak contoh.

Dalam semua contoh ini, penting untuk dicatat bahwa variabel dalam fungsi didefinisikan sebagai var (...). Sebagai contoh:

MENYELESAIKAN PERSAMAAN 
  • Menyelesaikan persamaan secara tepat.
Sebelum menggunakan sebuah Fungsi pemecahan  persamaan, tentukan dulu beberapa variabel; maka argumen yang harus dipecahkan adalah persamaan (atau sistem persamaan), bersama dengan variabel yang harus dipecahkan:

Kita dapat memecahkan persamaan untuk satu variabel dalam hal orang lain: 

Kita juga bisa memecahkan beberapa variabel:

Contoh berikut menggunakan Sage untuk memecahkan suatu sistem persamaan non-linier diberikan oleh Jason Grout: pertama, kita menyelesaikan sistem secara simbolis:

Untuk solusi perkiraan numerik, kita dapat menggunakan:
(Fungsi n mencetak aproksimasi numerik, dan argumennya adalah jumlah bit presisi.)

  • Memecahkan Persamaan Secara numerik
Sering kali, pemecahan tidak akan bisa menemukan solusi yang tepat untuk sebuah persamaan. Bila gagal, kita bisa menggunakan find_root untuk menemukan solusi numerik. Sebagai contoh pada persamaan berikut ini, pemecahan persamaan ini tidak menemukan sebuah solusi:

Di sisi lain, kita dapat menggunakan find_root untuk menemukan solusi terhadap persamaan di atas pada kisaran 0 <φ <π / 20 <φ <π / 2:

  • Diferensial, Integral, dll. 
Sage memiliki kemampuan untuk membedakan dan mengintegrasikan banyak fungsi. Misalnya, untuk membedakan sin(u) sehubungan dengan u, lakukan hal berikut:

Untuk menghitung turunan ke-4 dari sin (\(x^{2}\)) :

Untuk menghitung turunan parsial \(x^{2}+17y^{2}\) dengan x dan y masing-masing adalah sebagai berikut:

Untuk menghitung Integral \(\int_{}^{} x\) sin \((x^{2})dx\) dan \(\int_{0}^{1} \frac{x}{x^{2}+1}dx\) adalah sebagai berikut:

Menghitung dekomposisi pecahan parsial dari \(\frac{1}{x^{2}-1}\) :

  • Memecahkan Persamaan Diferensial.
Kita dapat menggunakan Sage untuk menyelidiki persamaan diferensial biasa. Dan untuk mencari solusi dari persamaan \(x'+x-1=0\) adalah:

Ini menggunakan antarmuka Sage untuk Maxima [Max], sehingga hasilnya mungkin sedikit berbeda dari keluaran Sage lainnya. Dalam kasus ini, ini mengatakan bahwa solusi umum untuk persamaan diferensial adalah \(x(t)=e^{-t}(e^{t}+c)\). 
Kita bisa menghitung transformasi Laplace juga; Transformasi Laplace dari \(t^{2}e^{t}-\sin (t)\) dihitung sebagai berikut:

Fungsi, Indentasi, dan Penghitungan

<<Penugasan, Kesetaraan & Aritmatika

Functions, Indentation, and Counting.   Untuk menentukan fungsi baru di Sage, gunakan perintah def dan titik dua setelah daftar nama variabel. Sebagai contoh:

Kita tidak menentukan jenis argumen masukan mana pun. Kita dapat menentukan beberapa masukan, yang masing-masing mungkin memiliki nilai pilhan default. Misalnya, fungsi di bawah adalah default untuk pembagi = 2 jika pembagi tidak ditentukan.

Kita juga dapat secara eksplisit menentukan satu atau salah satu input saat memanggil fungsi; Jika kita menentukan input secara eksplisit, kita dapat memberikannya dalam urutan apa pun:(Harap diingat, sebelum menjalankan Interactive Shell di bawah ini, pastikan kita menjalankan yang di atasnya ini terlebih dahulu karena fungsi di bawah ini memerlukan def fungsi di atas).

Di Python, blok kode tidak ditunjukkan oleh kurung kurawal atau blok awal dan akhir seperti pada banyak bahasa lainnya. Sebagai gantinya, blok kode ditandai dengan indentasi, yang harus sesuai persis. Misalnya, berikut ini adalah kesalahan sintaks karena pernyataan pengembalian tidak menjorok dengan jumlah yang sama sesuai baris lain di atasnya. 

Jika Kita memperbaiki indentasinya, fungsinya berfungsi:

Semikolon tidak diperlukan di ujung garis; garis dalam kebanyakan kasus diakhiri dengan baris baru. Namun, kita dapat menempatkan beberapa pernyataan pada satu baris, dipisahkan oleh titik koma:

Jika kita ingin satu baris kode membentang beberapa baris, gunakan garis miring terbalik:

Di Sage, kita menghitung dengan iterasi pada rentang bilangan bulat. Sebagai contoh, baris pertama di bawah ini persis seperti untuk (i = 0; i <3; i ++) di C ++ atau Java:

Baris pertama di bawah adalah seperti untuk (i = 2; i <5; i ++).

Pada contoh berikut, argumen ketiga mengendalikan step-nya, jadi berikut ini untuk (i = 1; i <6; i + = 2).

Seringkali kita ingin membuat tabel yang bagus untuk menampilkan nomor yang telah kita hitung dengan menggunakan Sage. Salah satu cara mudah untuk melakukannya adalah dengan menggunakan format string. Di bawah ini, kita membuat tiga kolom masing-masing dengan lebar 6 dan membuat tabel kotak dan batu. 

Struktur data yang paling dasar di Sage adalah daftar, yang - seperti namanya - hanya daftar objek sewenang-wenang. Misalnya, perintah jangkauan yang kita gunakan membuat daftar (di python 2).

Gunakan len(v) untuk mendapatkan panjang v, gunakan v.append(obj) untuk menambahkan objek baru ke akhir v, dan gunakan del v[i] untuk menghapus entri ke-i pada v: 

Struktur data penting lainnya adalah dictionary(atau array asosiatif). Ini bekerja seperti daftar, kecuali bahwa itu dapat di-indeks dengan hampir semua objek (indeksnya harus tidak berubah): 

Kita juga dapat menentukan jenis data baru menggunakan kelas. Enkapsulasi objek matematika dengan kelas adalah teknik yang bagus yang dapat membantu menyederhanakan dan mengatur program Sage kita. Di bawah ini, kita mendefinisikan sebuah kelas yang mewakili daftar bilangan bulat positif sampai n; Kelas ini berasal dari daftar tipe built-in. 

Metode __init__ dipanggil untuk menginisialisasi objek saat dibuat; Metode __repr__ mencetak objek keluar. Kita memanggil daftar metode konstruktor pada baris kedua dari metode __init__. Kita membuat objek kelas Evens sebagai berikut: 
(sebelum mengeksekusi kode yang di bawah ini, pastikan mengeksekusi kode di atas terlebih dahulu, jika sudah terlanjur, dan terjadi error, silahkan di-reload/refresh tab browser ini/muat ulang page ini)

Penugasan, Kesetaraan, dan Aritmatika

<<Pengenalan Sagemath

Assignment, Equality, and Arithmetic. Dengan beberapa pengecualian kecil, Sage menggunakan bahasa pemrograman Python, jadi kebanyakan buku pengantar tentang Python akan membantu Anda mempelajari Sage. Sage menggunakan = untuk penugasan. Dan menggunakan ==, <=, >=, < dan > untuk perbandingan.

Sage juga menyediakan semua operasi matematika dasar:

Perhitungan seperti 3 ^ 2 * 4 + 2% 5 bergantung pada urutan operasi diterapkan; ini ditentukan dalam tabel "operator precedence" pada operator berbasis binari Aritmatika. Sage juga menyediakan banyak fungsi matematika yang familiar; Berikut adalah beberapa contoh:

Sebagai contoh terakhir, beberapa ekspresi matematika menghasilkan nilai 'tepat', bukan perkiraan numerik. Untuk mendapatkan aproksimasi numerik, gunakan fungsi n atau metode n (dan keduanya memiliki nama yang lebih panjang, numerical_approx, dan fungsi N sama dengan n)). Ini mengambil argumen opsional sebelum, yang merupakan jumlah bit presisi yang diminta, dan digit, yang merupakan jumlah digit desimal yang diminta; default adalah 53 bit presisi.


Python diketik secara dinamis, jadi nilai yang ditunjukkan oleh masing-masing variabel memiliki tipe yang terkait dengannya, namun variabel yang diberikan dapat menyimpan nilai dari jenis Python dalam lingkup yang diberikan:

Berbeda halnya dengan bahasa pemrograman C yang sifatnya statis, pada C sebuah variabel yang digunakan untuk menyimpan int hanya dapat menyimpan int tersebut dalam scope-nya.

Pengenalan Sage

Softcopy makalah "Kriptografi dan Implementasinya Menggunakan Sagemath"dapat di download di sini : https://app.box.com/s/e69kumvcbfjvtcs2gsmsr7cy188nl8y6

SageMath adalah perangkat lunak matematika yang bersifat open source dan gratis yang berlisensi di bawah GNU Public License (GPL). SageMath menggabungkan sekitar 100 paket open source dengan jumlah kode program yang sangat besar untuk menyediakan platform open source gratis dalam perhitungan matematis. 2.1 Tentang SageMath Proyek pembuatan SageMath dimulai pada awal tahun 2005. SageMath dibuat dengan tujuan agar pengguna bisa melihat seperti apa program yang digunakan berjalan yaitu dengan melihat source code-nya. Banyak aplikasi matematika yang bersifat komersial, akan tetapi kita tidak bisa melihat isi source code yang digunakannya sehingga kita tidak dapat mengetahui bagaimana aplikasi tersebut berjalan. Sedangkan untuk matematika, kita harus mengetahui secara pasti bagaimana sebuah sistem bekerja.

SageMath dibuat dengan bahasa pemrogramanan yang mainstream, tidak seperti aplikasi matematika yang lain seperti Maple, Mathematica, dan Matlab, yang masing-masing menggunakan bahasa khusus yang ditulis hanya untuk matematika. SageMath dibuat dengan menggunakan Python (Python 2.x), yang merupakan salah satu bahasa pemrograman populer di dunia. Dengan menggunakan Python, seseorang bisa menggunakan hampir semua yang ditulis dengan Python langsung di SageMath. Daripada membuat banyak library untuk SageMath, lebih baik kita menggunakan library yang sudah dibuat dengan Python untuk diimplementasikan pada SageMath.

SageMath memiliki fitur-fitur sebagai berikut :
  1. SageMath bersifat gratis, hal ini dimungkinkan karena usaha para sukarelawan dari ratusan orang dan dana dari dermawan National Science Foundation, sumbangan pribadi, dan lainnya seperti Google dan Microsoft. Tidak ada kode lisensi atau salinan perlindungan.
  2. SageMath juga bersifat open source, sama sekali tidak ada algoritma rahasia atau proprietary di SageMath. Tidak ada yang tidak bisa kita lihat atau kita ubah.
  3. SageMath memiliki fitur kompiler Cython, yang memungkinkan seseorang menggabungkan library Python, C / C ++ / Fortran, dan jenis mesin lain yang berpotensi memiliki performa yang lebih tinggi. 
  4. SageMath secara unik dapat menggabungkan fungsionalitas dari lusinan program matematika lainnya. Kita dapat menggabungkan kode Lisp, Mathematica, dan C untuk tujuan tertentu.
  5. SageMath memiliki antarmuka grafis (GUI) yang berbasis multiuser yang canggih dan antarmuka command prompt yang powerful. SageMath juga bisa digunakan untuk bekerja lingkungan pengembangan interaktif Python (IDE), SageCloud dan SageCell.
  6. SageMath memiliki kemampuan matematis terluas dari setiap sistem perangkat lunak matematis yang ada. SageMath dan komponennya dikembangkan oleh komunitas orang-orang matematika, sains, dan teknik yang aktif dan antusias di seluruh dunia.
  7. SageMath memungkinkan modifikasi secara terbuka. Jika kita memiliki ide, library atau program yang ingin kita masukkan ke dalam library SageMath atau bahkan menemukan sebuah kesalahan(bug), kita bisa mengajukannya untuk ditinjau dan jika sesuai maka akan bisa dimasukkan secara resmi menjadi library SageMath.
  8. SageMath juga memiliki banyak sumber yang tersedia untuk membantu kita menggunakan SageMath. Secara khusus, SageMath memiliki kelompok diskusi (millist) pendukung SageMath (http://groups.google.com/group/sage-support) dan website ask.sagemath.org.
Meskipun Sage banyak diimplementasikan dengan menggunakan Python, tidak dibutuhkan backgroud Python untuk membaca tutorial ini. Pada Interactive Shell di bawah ini, kita dapat memasukkan, merubah dan menjalankan command line sesuai yang kita inginkan. Jika terjadi error dan eksekusi kode tidak bisa jalan lagi, browser di-refresh/reload saja agar bisa digunakan kembali. Klik tombol Evaluate Sage Code untuk menjalankan program pada Shell.

Coba saja masukkan beberapa contoh kode di bawah ini (yang dicetak miring saja) pada  interactive shell di atas dan lihat hasilnya.

Contoh 1: Contoh mencari faktorial.
factor(-2007)

Contoh 2: Contoh sebuah Matrix, dengan nilai masing-masing baris dan kolomnya dengan nilai default berupa index-nya. Masukkan matrix? pada Interactive Shell di atas untuk melihat penjelasan tentang fungsi matrix.
A = matrix(4,4, range(16)); A
Contoh 3: Mencari karakteristik polynomial.
factor(A.charpoly())
Contoh 4: membuat sebuah matrik dan mengisi nilainya dengan nilai default berupa index dimana baris dan kolom 0,0 dikurangi dengan 3.
m = matrix(ZZ,2, range(4))
m[0,0] = m[0,0] - 3; m
Contoh 5: Adalah contoh untuk merubah kode yang diketik pada Sage untuk ditampilkan pada web browser dengan menggunakan LaTex yang merupakan program komputer yang digunakan untuk membuat typesetting suatu dokumen, atau membuat formula matematika.
k = 1/(sqrt(3)*I + 3/4 + sqrt(73)*5/9); k
N(k)
N(k,30)      # 30 "bits"
latex(k)

Jika dalam 1(satu) jendela browser terdapat lebih dari 1(satu) Interactive Shell maka semua Interactive Shell tersebut terhubung dalam 1 (satu) session jadi hasil eksekusi (misal. sebuah variabel) pada Interactive Shell yang pertama bisa digunakan pada Interactive Shell berikutnya. Atau Eksekusi Interactive Shell yang berikutnya bisa terjadi error jika Interactive Shell yang pertama tidak dieksekusi terlebih dahulu. Dalam kasus ini, program yang dijalankan tersebut menunggu sebuah definisi/nilai variabel dari Interactive Shell sebelumnya. Sebagai contoh, masukkan contoh 2 di atas pada Interactive Shell pertama dan Contoh 2 pada Interactive Shell kedua kemudian jalankan (Evaluate Sage Code).

Jika ada command/fungsi yang tidak dimengerti atau tidak tahu kegunaannya maka kita bisa tanyakan langsung pada Interactive Shell tersebut. Berikut contohnya :



INSTALASI

Jika kita tidak menginstal Sage di komputer dan hanya ingin mencoba beberapa perintah, gunakan secara online di http://sagecell.sagemath.org. atau gunakan saja Interactive Shell pada Blog ini. File download Sage dilengkapi dengan "batteries included". Dengan kata lain, meskipun Sage menggunakan Python, IPython, PARI, GAP, Singular, Maxima, NTL, GMP, dan seterusnya, kita tidak perlu menginstalnya secara terpisah karena disertakan dengan distribusi Sage. Namun, untuk menggunakan fitur Sage tertentu, misalnya, Macaulay atau KASH, kita harus menginstal paket opsional yang relevan atau setidaknya menginstal program yang relevan di komputer kita. Macaulay dan KASH adalah paket Sage (untuk daftar paket opsional yang tersedia, ketik sage -optional, atau jelajahi halaman "Download" di situs web Sage).

Pre-compiled binary version dari Sage (terdapat di situs web Sage) mungkin lebih mudah dan cepat dipasang daripada versi Souce Code-nya. Hanya unpack file-nya dan jalankan Sage.

CARA MENGGUNAKAN SAGE
Kita bisa menggunakan Sage dengan beberapa cara sebagai berikut :
  1. Notebook Graphical Interface: bisa dilihat bagian pada  manual referensi Notebook dan interface Notebook di bawah ini,
  2. Interactive Command Line: Baris perintah interaktif: bisa dilihat pada Interactive Shell,
  3. Programs: Dengan menulis program yang diinterpretasikan dan dikompilasi di Sage,
  4. Scripts: dengan menulis script Python yang berdiri sendiri yang menggunakan pustaka Sage (lihat Standalone Python / Sage Scripts).
TUJUAN JANGKA PANJANG PENGGUNAAN SAGE
  • Berguna: Pengguna Sage yang dimaksud adalah siswa matematika (dari sekolah menengah sampai sekolah pascasarjana), guru, dan matematikawan penelitian. Tujuannya adalah untuk menyediakan perangkat lunak yang dapat digunakan untuk mengeksplorasi dan bereksperimen dengan konstruksi matematis dalam aljabar, geometri, teori bilangan, kalkulus, perhitungan numerik, dan sebagainya. Sage membantu mempermudah eksperimen interaktif dengan objek matematika.
  • Efisien: Lebih cepat. Sage menggunakan perangkat lunak yang sangat optimal seperti GMP, PARI, GAP, dan NTL, dan sangat cepat pada operasi tertentu.
  • Gratis dan open source: Kode sumber harus tersedia secara bebas dan mudah dibaca, sehingga pengguna dapat memahami apa yang sebenarnya dilakukan sistem dan lebih mudah memperpanjangnya. Sama seperti ahli matematika mendapatkan pemahaman teorema yang lebih dalam dengan membaca atau setidaknya membaca sekilas bukti dengan cermat, orang-orang yang melakukan perhitungan harus dapat memahami bagaimana perhitungan bekerja dengan membaca kode sumber yang terdokumentasi. Jika kita menggunakan Sage untuk melakukan penghitungan di kertas yang kita publikasikan, kita dapat yakin bahwa pembaca Kita akan selalu memiliki akses gratis ke Sage dan semua kode sumbernya, dan kita bahkan diizinkan untuk mengarsipkan dan mendistribusikan kembali versi Sage yang kita gunakan .
  • Mudah dikompilasi: Sage mudah dikompilasi dari sumber Linux, OS X dan Windows. Ini memberikan fleksibilitas lebih bagi pengguna untuk memodifikasi sistem.
  • Kerjasama: Menyediakan antarmuka yang kuat untuk kebanyakan sistem aljabar komputer lainnya, termasuk PARI, GAP, Singular, Maxima, KASH, Magma, Maple, dan Mathematica. Sage dimaksudkan untuk menyatukan dan memperluas perangkat lunak matematika yang ada.
  • Didokumentasikan dengan baik: Tutorial, panduan pemrograman, referensi manual, dan bagaimana caranya, dengan banyak contoh dan diskusi tentang latar belakang matematika.
  • Extensible: Mampu menentukan tipe data baru atau berasal dari tipe built-in, dan gunakan kode yang ditulis dalam berbagai bahasa.
  • User friendly: Mudah untuk memahami fungsi apa yang disediakan untuk objek tertentu dan untuk melihat dokumentasi dan kode sumber. Juga memberikan dukungan yang tinggi kepada pengguna.

20 September 2017

Caesar Chiper


<<Pengenalan tentang Kriptografi
Caesar Chiper adalah salah satu teknik enkripsi paling sederhana dan sangat dikenal luas. Enkripsi ini termasuk bagian dari enkripsi substitusi dimana setiap huruf pada pesan (plaintext) digantikan oleh huruf lain yang memiliki selisih posisi tertentu dalam alfabet bahasa Inggris.
  • Enkripsi Sederhana.
Sebelum kita melakukan proses enkripsi, kita harus menjalankan fungsi Encode dan Decode di bawah ini.

Encode Plaintext seperti di bawah ini :
Dari hasil di atas terlihat jelas bahwa A=1, B=2 dan seterusnya. Sekarang coba kita tambahkan 3 ke masing-masing.
  • Dekripsi dan Invers. 
Agar ciphertext dapat di-dekripsi menjadi plaintext maka algoritma yang digunakan untuk proses enkripsi harus memiliki invers. Dalam hal ini, operasi di atas adalah operasi penambahan modular, yang tentunya memiliki invers. Jika plaintext yang sudah di-encode adalah x, kuncinya adalah a dan kita bekerja dengan modulo (n) maka ciphertext-nya adalah : \[m\equiv x+a \bmod(n)\]Untuk mendapatkan nilai x kembali maka kita hanya perlu menggunakan invers penjumlahan dari \(a \bmod(n)\) yaitu -a. Pada kasus di atas, karena -3 adalah invers dari 3 maka Decipher-nya adalah sebagai berikut :

Berikut adalah Caesar Cipher versi Buku William Stalling "Cryptography and Network Security 6th Edition" Halaman 670.

Berikut contoh implementasi Brute Force Attack dari Caesar Cipher :

17 September 2017

Semigroup, Monoid, Group

<<Operasi Biner
Suatu Group \(<G,*>\) terdiri dari himpunan elemen \(G\) bersama dengan operasi biner * yang didefinisikan pada \(G\) dan memenuhi hukum berikut ini:
  1. Hukum Tertutup:  \(a*b \in G\) untuk semua \(a,b \in G\),
  2. Hukum Assosiatif :  \((a*b)*c=a*(b*c)\) untuk semua \(a,b,c \in G\),
  3. Hukum Identitas : terdapatlah suatu elemen \(e\in G\) sehingga \(e*x=x*e=x\) untuk semua \(x \in G\),
  4. Hukum Invers : untuk setiap \(a \in G\) terdapatlah \(a^{'} \in G\) sehingga \(a*a^{'}=a^{'}*a=e\).

NoSifat-sifat OperasiOperasi BinerSemi groupMonoidGroup
1.KetertutupanYaYaYaYa
2.AssosiatifTidakYaYaYa
3.Elemen IdentitasTidakTidakYaYa
4.Semua elemen memiliki InversTidakTidakTidakYa
5.Komutatif-Abelian
Semi
Group
Abelian
Monoid
Abelian
Group
Contoh Soal.
Tentukan apakah rangkaian berikut bersamaan dengan operasi biner adalah semigroup,
monoid, atau tidak. Jika monoid, tentukan identitasnya. Jika itu adalah semigroup atau monoid 
tentukan apakah itu bersifat komutatif. 
  • \(S=\left\{1,2,3,6,12\right\}\),  dimana \(a*b=GCD\left(a,b\right)\).
Jawaban :

* 1 2 3 6 12
1 1 1 1 1 1
2 1 2 1 2 2
3 1 1 3 3 3
6 1 2 3 6 6
12 1 2 3 6 12
a.  Bersifat Tertutup\(a*b \in S\) untuk semua \(a,b \in S\)
b.  Bersifat Assosiatif\(\left(a*b\right)*c=a*\left(b*c\right)\) untuk semua \(a,b,c\) dalam \(S\),
\(GCD\left(a,GCD\left(b,c\right)\right)=GCD\left(GCD\left(a,b\right),c\right)\)
c. Memiliki Elemen Identitasterdapatlah suatu elemen \(e\in S\) sehingga \(e*a=a*e=a\) untuk semua \(a \in S\), dari tabel dapat dilihat bahwa \(e=12\).
d.  Bersifat komutatif\(a*b=b*a\) untuk semua \(a,b\) dalam \(S\)
\(a*b=b*a\Rightarrow GCD\left(a,b\right)=GCD\left(b,a\right)\).
Sehingga \(<S,*>\) merupakan Monoid dan bersifat Komutatif sehingga bisa disebut Abelian Monoid.


  • \(S=\left\{1,2,3,6,9,18\right\}\),  dimana \(a*b=LCM\left(a,b\right)\)
Jawaban :

* 1 2 3 6 9 18
1 1 2 3 6 9 18
2 2 2 6 6 18 18
3 3 6 3 6 9 18
6 6 6 6 6 18 18
9 9 18 9 18 9 18
18 18 18 18 18 18 18
a.  Bersifat Tertutup\(a*b \in S\) untuk semua \(a,b \in S\),
b.  Bersifat Assosiatif\(\left(a*b\right)*c=a*\left(b*c\right)\) untuk semua \(a,b,c\) dalam \(S\),
\(LCM\left(a,LCM\left(b,c\right)\right)=LCM\left(LCM\left(a,b\right),c\right)\)
c. Memiliki Elemen Identitasterdapatlah suatu elemen \(e\in S\) sehingga \(e*a=a*e=a\) untuk semua \(a \in S\), dari tabel dapat dilihat bahwa \(e=1\).
d.  Bersifat komutatif\(a*b=b*a\) untuk semua \(a,b\) dalam \(S\)

\(a*b=b*a\Rightarrow LCM\left(a,b\right)=LCM\left(b,a\right)\).
Sehingga \(<S,*>\) merupakan Monoid dan bersifat Komutatif sehingga bisa disebut Abelian Monoid.


  • \(Z\) dimana  \(a*b=a+b-ab\)
Jawaban :
a.  Bersifat Tertutup\(a*b \in Z\) untuk semua \(a,b \in Z\), dimana \(a+b \) menghasilkan bilangan bulat, \(ab\) juga menghasilkan bilangan bulat, sehingga \(a+b-ab\) juga bilangan bulat.
b.  Bersifat Assosiatif  \(\left(a*b\right)*c=a*\left(b*c\right)\) untuk semua \(a,b,c\) dalam \(Z\),
\((a*b)*c=a*(b*c)\)
\((a*b)*c=(a+b-ab)*c\)
\((a+b-ab)*c=a+b-ab+c-(a+b-ab)c\)
\((a+b-ab)*c=a+b+c-ab-ac-bc+abc\)...........Ruas kiri
\(a*(b*c)=(a*(b+c-bc)\)
\((a*(b+c-bc))=a+(b+c-bc)-a(b+c-bc)\)
\((a*(b+c-bc))=a+b+c-ab-ac-bc+abc\).......Ruas kanan.
Ruas kiri = Ruas kanan.
c. Memiliki Elemen Identitas
 \(e*a=a\)
\(e+a-ea=a\)
\(e-ea = 0\)
\(e\left(1-a\right)=0\)
\(e=\frac{0}{1-a}\),  \(e=0\)Jika \(a\neq1\)
d.  Bersifat komutatif \(a*b=b*a\) untuk semua \(a,b\) dalam \(Z\)
\(a*b=b*a\)
\(a*b=a+b-ab\)
\(b*a=b+a-ba\)
\(a+b-ab=b+a-ba\)
Sehingga \(<Z,*>\) merupakan Monoid dan bersifat Komutatif sehingga bisa disebut Abelian Monoid.


  • Diketahui A=B={ x|x adalah bilangan riil dan x \(\neq\) 0 , x \(\neq\) 1. Ditentukan enam buah fungsi dari A ke B dengan formula sebagai berikut : 

\(f_{1}\left(x\right)=x\) \(f_{2}\left(x\right)=1-x\) \(f_{3}\left(x\right)=\frac{1}{x}\)
\(f_{4}\left(x\right)=\frac{1}{1-x}\) \(f_{5}\left(x\right)=\frac{x}{x-1}\) \(f_{6}\left(x\right)=\frac{x-1}{x}\)
\(G=\left\{f_{1}, f_{2}, f_{3}, f_{4}, f_{5}, f_{6}\right\}\), dan \(f*g =f\circ g\)

Pertanyaan (jawaban):
a.  Buat tabel Cayley dari \(<G,*>\).

* \(x\) \(1-x\) \(\frac{1}{x}\) \(\frac{1}{1-x}\) \(\frac{x}{x-1}\) \(\frac{x-1}{x}\)
\(x\) \(x\) \(1-x\) \(\frac{1}{x}\) \(\frac{1}{1-x}\) \(\frac{x}{x-1}\) \(\frac{x-1}{x}\)
\(1-x\) \(1-x\) \(x\) \(\frac{x-1}{x}\) \(\frac{x}{x-1}\) \(\frac{1}{1-x}\) \(\frac{1}{x}\)
\(\frac{1}{x}\) \(\frac{1}{x}\) \(\frac{1}{1-x}\) \(x\) \(1-x\) \(\frac{x-1}{x}\) \(\frac{x}{x-1}\)
\(\frac{1}{1-x}\) \(\frac{1}{1-x}\) \(\frac{1}{x}\) \(\frac{x}{x-1}\) \(\frac{x-1}{x}\) \(1-x\) \(x\)
\(\frac{x}{x-1}\) \(\frac{x}{x-1}\) \(\frac{x-1}{x}\) \(\frac{1}{1-x}\) \(\frac{1}{x}\) \(x\) \(1-x\)
\(\frac{x-1}{x}\) \(\frac{x-1}{x}\) \(\frac{x}{x-1}\) \(1-x\) \(x\) \(\frac{1}{x}\) \(\frac{1}{1-x}\)
Tabel dalam bentuk fungsinya sbb :


* \(f_{1}\) \(f_{2}\) \(f_{3}\) \(f_{4}\) \(f_{5}\) \(f_{6}\)
\(f_{1}\) \(f_{1}\) \(f_{2}\) \(f_{3}\) \(f_{4}\) \(f_{5}\) \(f_{6}\)
\(f_{2}\) \(f_{2}\) \(f_{1}\) \(f_{6}\) \(f_{5}\) \(f_{4}\) \(f_{3}\)
\(f_{3}\) \(f_{3}\) \(f_{4}\) \(f_{1}\) \(f_{2}\) \(f_{6}\) \(f_{5}\)
\(f_{4}\) \(f_{4}\) \(f_{3}\) \(f_{5}\) \(f_{6}\) \(f_{2}\) \(f_{1}\)
\(f_{5}\) \(f_{5}\) \(f_{6}\) \(f_{4}\) \(f_{3}\) \(f_{1}\) \(f_{2}\)
\(f_{6}\) \(f_{6}\) \(f_{5}\) \(f_{2}\) \(f_{1}\) \(f_{3}\) \(f_{4}\)
b. Apakah \(<G,*>\) sebuah Group ? Ya
Karena:
   1. Tertutup : \(a*b \in G\) untuk semua \(a,b \in G\)
   2.  Assosiatif : \(((f \circ g)\circ h)(x) = (f\circ(g\circ h))(x)\)
   3. Memiliki Elemen Identitas.
   4. Memiliki Invers-nya masing-masing.
c. Apakah \(<G,*>\) sebuah Abelian Group? Tidak, karena tidak komutatif.
d. Jika sebuah Group, Apa elemen identitasnya? \(f_{1}\left(x\right)=x\)
e. Jika sebuah Group, Tentukan elemen inversnya masing-masing! \(f^{'}\) adalah fungsi invers.
\(f^{'}_{1}=f_{1}\)
\(f^{'}_{2}=f_{2}\)
\(f^{'}_{3}=f_{3}\)
\(f^{'}_{4}=f_{6}\)
\(f^{'}_{5}=f_{5}\)
\(f^{'}_{6}=f_{4}\).


Operasi Biner

Misalkan himpunan A tidak kosong.  Operasi biner * pada A adalah pemetaan dari setiap pasangan berurutan  \(x,y\)   dalam A (himpunan bagian dari A) dengan tepat satu elemen \(x*y\) dalam A.

Himpunan bilangan bulat Z mempunyai dua operasi biner yang dikenakan padanya yaitu penjumlahan (+) dan perkalian (.).  Dalam hal ini untuk setiap pasangan x dan y dalam Z, \(x+y\) dan  \(x.y\)  dikawankan secara tunggal dengan suatu elemen dalam Z. Operasi biner mempunyai dua bagian dari definisi yaitu:
  1. Terdefinisikan dengan baik (well-defined) yaitu untuk setiap pasangan berurutan x, y dalam A dikawankan dengan tepat satu nilai \(x*y\).
  2. A tertutup di bawah operasi * yaitu untuk setiap x, y himpunan bagian A maka \(x*y\) masih himpunan bagian A.
Suatu  sistim  aljabar  terdiri  dari  himpunan  objek  dengan  satu atau  lebih  operasi  yang didefinisikan  padanya. Bersama  dengan hukum-hukum yang dibutuhkan dalam operasi.

Misalkan * operasi biner pada himpunan  \(A\) :
  1. Operasi * assosiatif jika \(\left(a*b\right)*c=a*\left(b*c\right)\) untuk semua \(a,b,c\) dalam \(A\).
  2. Operasi * komutatif jika \(a*b=b*a\) untuk semua \(a,b\) dalam  \(A\) (himpunan bagian dari A).

Contoh Soal.
Tentukan apakah deskripsi operasi di bawah ini merupakan Operasi Biner!
  • Pada \(Z\), dimana \(a*b=a^{b}\)
Diketahui \(Z\) adalah himpunan  bilangan bulat. Didefinisikan  \(a*b=a^{b}\), karena 2 dan -1 dalam \(Z\) dan \(2*(-1)=2^{-1}=\frac{1}{2}=0.5\) tidak berada dalam \(Z\) maka \(Z\) tidak tertutup di bawah operasi * sehingga * bukan operasi biner pada \(Z\).


  • Pada \(Z^{+}\), dimana \(a*b=a^{b}\)
Diketahui \(Z^{+}\) adalah himpunan bilangan bulat positif. Didefinisikan \(a*b=a^{b}\), Jelas  bahwa    terdefinisikan  dengan  baik  karena  rumus  \(a^{b}\) memberikan hasil tunggal untuk setiap \(a\), \(b\) dalam \(Z^{+}\). Untuk  sebarang   \(a\), \(b\)  dalam  \(Z^{+}\)  maka  jelas  bahwa   \(a^{b}\)   masih merupakan bilangan bulat positif.  Lebih jauh \(a^{b}>0\) jika  \(a>0\) dan \(b>0\).  Berarti  hasil  dari \(a^{b}\)  masih  merupakan  bilangan  bulat positif  dan akibatnya \(Z^{+}\)  tertutup di bawah operasi * sehingga * merupakan operasi biner pada \(Z^{+}\).


  • Pada \(R\), dimana \(a*b=a\sqrt{b}\)
Diketahui \(R\) adalah himpunan semua bilangan riil. Didefinisikan  \(a*b=a\sqrt{b}\), karena 1 dan -2 dalam \(R\) dan  \(1*(-2)=1\sqrt{-2}=\sqrt{-2}\) tidak berada dalam \(R\) maka \(R\) tidak tertutup di bawah operasi * sehingga * bukan operasi biner pada \(R\). (Intinya cari dua buah contoh bilangan riil yang tidak memenuhi persamaan di atas).


  • Pada \(Z\), dimana \(a*b=2a+b\)
Diketahui \(Z\) adalah himpunan  bilangan bulat. Didefinisikan  \(a*b=2a+b\),  Jelas bahwa   terdefinisikan  dengan  baik  karena  rumus \(2a+b\) memberikan hasil tunggal untuk setiap \(a\), \(b\) dalam \(Z\).  Untuk  sebarang   \(a\), \(b\)  dalam  \(Z\)  maka  jelas  bahwa   \(2a+b\)   masih merupakan bilangan bulat.   Berarti  hasil  dari \(2a+b\)  masih  merupakan  bilangan  bulat dan akibatnya \(Z\)  tertutup di bawah operasi * sehingga * merupakan operasi biner pada \(Z\).


  • Sebuah operasi biner * didefinisikan pada \(A=\left\{a,b,c,d\right\}\) dengan tabel berikut ini :

* a b c d
a a c b d
b d a b c
c c d a a
d d b a c
Hitunglah (jawaban) :
a.  \(c*d=a\) dan \(d*c=a\)
b.  \(b*d=c\) dan \(d*b=b\)
c.  \(a*(b*c) =c\) dan \((a*b)*c =a\)
d.  Apakah * komutatif ? Tidak
e.  Apakah * Assosiatif ? Tidak


  • Lengkapi tabel berikut sehingga Operasi Biner * bersifat Komutatif.

* a b c
a b ... ...
b c b a
c a ... c
Jawaban :
Agar Operasi Biner * Komutatif  maka :
\(a*b=b*a=c\)
\(a*c=c*a=a\)
\(b*c=c*b=a\),   sehingga tabelnya menjadi:


* a b c
a b c a
b c b a
c a a c


  • Lengkapi Tabel berikut sehingga Operasi Biner * bersifat Asosiatif.

* a b c d
a a b c d
b b a d c
c c d a b
d ... ... ... ...
Jawaban :
Agar Operasi Biner * Asosiatif maka :
\((a*b)*c=a*(b*c)\)
\((a*b)*d=a*(b*d)\), sehingga tabelnya menjadi :

* a b c d
a a b c d
b b a d c
c c d a b
d d c b a


SAAT RESTORAN DIBUKA KEMBALI, INILAH YANG HARUS ANDA KETAHUI TENTANG AC, ALIRAN UDARA, DAN COVID-19

Pengunjung yang makan di restoran mungkin bisa memberi tahu banyak tentang bagaimana para penggiat bisnis restoran berusaha mengurangi risik...