Aplikasi Aljabar Linear ini adalah proyek aplikasi yang dikembangkan sebagai proyek tugas Ujian Tengah Semester mata kuliah Aljabar Linear yang diampu oleh Prof. Drs. Bambang Harjito, M.App.Sc., Ph.D.. Proyek ini dikembangkan oleh :
- Farras Arkan Wardana (L0123052)
- Fathoni Nur Habibi (L01233054)
- Ivan Wahyu Nugroho (L013068)
Aplikasi Aljabar Linear ini merupakan aplikasi kalkulator berbasis console yang dapat melakukan kalkulasi pada matriks dan sistem persamaan linear.
Untuk matriks, berikut yang dapat dikalkulasi oleh program ini :
- Transpose, Determinan, Operasi Aritmatika Matriks (penjumlahan, pengurangan, dan perkalian) dan Invers matriks (metode Gaussian, metode Gauss Jordan, dan metode balikan matriks)
- Nilai eigen, vektor eigen, dan persamaan dan akar-akar dari polinomial karakteristiknya
- LU Decompositon
- Singular Value Decompositon (SVD)
- Diagonalisasi Matriks
Sementara untuk sistem persamaan linear (SPL), program ini dapat menyelesaikan sistem persamaan linear dengan berbagai metode, yaitu metode Gaussian, metode Gauss Jordan, dan metode balikan matriks. Bahkan, program ini dapat menyelesaikan sistem persamaan linear bukan hanya untuk bilangan real, melainkan untuk bilangan kompleks sekalipun.
Program ini menggunakan bahasa pemrograman Python dengan paradigma Object Oriented Programming (OOP). File utama pada program ini adalah main.py
.
Program ini menggunakan module utama pada folder LinAlg
yang berisi beberapa file, seperti Menu.py
, Matriks.py
, dan SistemPersamaan.py
. Ketiga file tersebut berisikan kelas untuk memudahkan pengorganisasian program ini. File __init__.py
berfungsi mengekspor komponen dalam module LinAlg
dan menghubungkan module LinAlg
ketika digunakan oleh main.py
supaya penulisan sintaksnya lebih ringkas. Sementara file __main__.py
berfungsi memberikan informasi singkat mengenai module LinAlg
. File __main__.py
dapat dijalankan di console dengan menggunakan perintah.
python LinAlg
Anda perlu memastikan telah berada di folder yang sama dengan
main.py
.
Program ini menggunakan library NumPy, Sympy, SciPy sebagai library utama dalam proses perhitungan. Library tabulate berfungsi mencetak output matriks dalam bentuk tabel di console sehingga tampilan visual matriksnya akan lebih mudah dipahami. Sementara library Colorama digunakan untuk melakukan styling tulisan pada console sehingga menjadi berwarna-warni agar lebih menarik tampilan visualnya.
Program ini dikembangkan menggunakan bahasa pemrograman Python. Untuk itu, Anda perlu memastikan interpreter Python telah ter-install pada perangkat Anda untuk menjalan program ini. Apabila Anda belum meng-install Python, Anda dapat mengunduh interpreter Python di sini dan meng-install-nya.
Diperlukan library Python seperti NumPy, Sympy, SciPy, Tabulate, Colorama, dan DateTime untuk menjalankan program ini. Untuk meng-install-nya, Anda dapat menuliskan perintah berikut di Command Prompt atau terminal Anda :
pip install numpy sympy tabulate scipy datetime colorama
Untuk menjalankan program ini, Anda dapat melakukan running di IDE Python seperti PyCharm, code editor seperti Visual Studio Code, atau dapat menggunakan perintah berikut pada Command Prompt atau terminal Anda :
python main.py
Anda perlu memastikan telah berada pada folder yang sama dengan file
main.py
.
Dalam program ini terdapat tiga folder utama, yaitu src, doc, dan test. Folder src adalah folder yang berisi source code dari program Aplikasi Aljabar Linear ini. Di dalamnya, terdapat file main.py yang merupakan file program utama, modul [LinAlg](src/LinAlg/ yang berisi modul untuk program Kalkulator Aljabar Linear ini, dan Arsip Output, yaitu folder yang digunakan untuk menyimpan output hasil perhitungan.
Di dalam folder doc, terdapat laporan dokumentasi dari program Kalkulator Aljabar Linear ini dan file README untuk petunjuk awal bagi pengguna.
Folder test adalah folder yang berisi output yang didimpan dalam file txt guna keperluan pengujian atau test case program ini. Program ini akan diuji beberapa kasus/soal sesuai yang terdapat pada buku petunjuk proyek ini.
Untuk memberikan masukan pada menu utama dan submenu utama pada program ini, sesuaikan dengan nomor yang tertera pada awal pilihan. Sebagai contoh, jika Anda ingin mencari Singular Value Decompositon (SVD), Anda dapat memberikan masukan 8
pada menu utama. Selain memberikan masukan berupa nomor menu, pada beberapa bagian menu juga diperlukan masukan berupa huruf. Sebagai contoh, jika terdapat pilihan untuk kembali ke menu utama atau tidak, akan disertakan tanda ?
dengan petunjuk masukan berupa (y/n)
. Jika Anda menginginkan untuk kembali ke menu utama, Anda dapat memberikan masukan y
atau Y
.
Untuk memberikan masukan berupa matriks, Anda dapat memberikan masukan ordo matriksnya terlebih dahulu. Ordo matriks adalah banyaknya baris dan banyaknya kolom pada matriks. Untuk memasukkan elemen pada matriks, masukkan setiap baris matriks dengan memisahkan setiap elemen dengan tanda spasi. Sebagai contoh, jika Anda memiliki matriks $
\begin{bmatrix}
1 & -1 \
0 & 1 \
1 & 0
\end{bmatrix}
$, ordo matriks tersebut adalah
Masukkan Ordo Matriks
Banyak Baris : 3
Banyak Kolom : 2
Baris ke-1 : 1 -1
Baris ke-2 : 0 1
Baris ke-3 : 1 0
Pada menu sistem persamaan linear, Anda perlu menuliskan banyaknya variabel dan banyaknya persamaan dalam sistem persamaan linear yang ingin Anda masukkan. Bentuk umum persamaan linear adalah
Berikutnya, Anda dapat memasukkan setiap koefisien
Sebagai contoh, jika Anda memiliki sistem persamaan linear berikut:
$ \begin{cases} 2x_1 + 3x_2 + x_3 &= 10 \ x_1 + 2x_2 - x_3 &= 8 \ -x_1 + x_2 -2x_3 & = -5 \end{cases} $
Anda memiliki sistem persamaan linear tiga variabel dengan tiga persamaan. Anda dapat memberikan masukan sebagai berikut
Banyak Variabel : 3
Banyak Persamaan : 3
Persamaan ke-1 : 2 3 1
Konstanta ke-1 : 10
Persamaan ke-2 : 1 2 -1
Konstanta ke-2 : 8
Persamaan ke-3 : -1 1 -2
Konstanta ke-3 : -5
Jika Anda memiliki sistem persamaan linear dengan bilangan kompleks, Anda dapat menuliskan bentuk a+bj
.
Untuk menuliskan bilangan imaginer, gunakan
j
, bukani
. Jika$a$ bernilai 0, Anda dapat memberikan masukan dalam bentuk$bj$ saja, tidak harus$0+bj$ . Jika$b$ bernilai 0, Anda dapat memberikan masukan dalam bentuk$a$ saja, tidak harus$a+0j$ .
Sebagai contoh, jika Anda memiliki sistem persamaan linear dengan bilangan kompleks seperti berikut:
$ \begin{cases} (1+i)x_1 + (2-i)x_2 &= 3+2i \ -ix_1 + (1+i)x_2 &= 6-i \end{cases} $
Anda memiliki sistem persamaan linear dua variabel dengan dua persamaan. Anda dapat memberikan masukan berikut:
Banyak Variabel : 2
Banyak Persamaan : 2
Persamaan ke-1 : 1+j 2-j
Konstanta ke-1 : 3+2j
Persamaan ke-2 : -j 1+j
Konstanta ke-2 : 6-j
Keluaran untuk matriks akan ditampilkan dalam bentuk tabel matriks. Hal ini dimaksudkan untuk memudahkan dalam visualisasi. Selain itu, pada beberapa menu, akan ditampilan validasi untuk pembuktian. Hal ini digunakan untuk pembuktian output telah sesuai dengan teori.
Dalam sistem persamaan linear, keluaran berupa bilangan imaginer terkadang akan ditampilkan dalam bentuk I
atau j
. Keduanya sama saja, i
= j
=
File output akan disimpan dalam folder Arsip Output dengan ekstensi .txt sesuai dengan nama yang diberikan oleh pengguna dan diikuti dengan tanggal dan waktu untuk memastikan nama file adalah unik dan tidak terjadi duplikasi nama file.