{"id":25037440,"url":"https://github.com/ifwhy/linear-algebra-calculator","last_synced_at":"2025-07-27T00:36:02.770Z","repository":{"id":234626307,"uuid":"789270612","full_name":"ifwhy/linear-algebra-calculator","owner":"ifwhy","description":"Linear Algebra calculator for solving Matrix Calculations and System of Linear Equations","archived":false,"fork":false,"pushed_at":"2024-04-20T05:05:35.000Z","size":4706,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-30T21:27:13.869Z","etag":null,"topics":["calculator","linear-algebra","linear-equation-solver","matrix-calculations"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ifwhy.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-04-20T04:56:30.000Z","updated_at":"2024-07-05T11:30:14.000Z","dependencies_parsed_at":null,"dependency_job_id":"008dc153-88a2-4b0e-b020-95f318cc4208","html_url":"https://github.com/ifwhy/linear-algebra-calculator","commit_stats":null,"previous_names":["ifwhy/linear-algebra","ifwhy/linear-algebra-calculator"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/ifwhy/linear-algebra-calculator","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ifwhy%2Flinear-algebra-calculator","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ifwhy%2Flinear-algebra-calculator/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ifwhy%2Flinear-algebra-calculator/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ifwhy%2Flinear-algebra-calculator/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ifwhy","download_url":"https://codeload.github.com/ifwhy/linear-algebra-calculator/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ifwhy%2Flinear-algebra-calculator/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":267276992,"owners_count":24063221,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-07-26T02:00:08.937Z","response_time":62,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["calculator","linear-algebra","linear-equation-solver","matrix-calculations"],"created_at":"2025-02-06T01:49:12.214Z","updated_at":"2025-07-27T00:36:02.726Z","avatar_url":"https://github.com/ifwhy.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Aplikasi Aljabar Linear pada Persamaan Linear\n\n## Latar Belakang\n\nAplikasi 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.](https://bambang.staff.uns.ac.id/). Proyek ini dikembangkan oleh :\n\n1. Farras Arkan Wardana (L0123052)\n2. Fathoni Nur Habibi (L01233054)\n3. Ivan Wahyu Nugroho (L013068)\n\n## Deskripsi Aplikasi\n\nAplikasi Aljabar Linear ini merupakan aplikasi kalkulator berbasis _console_ yang dapat melakukan kalkulasi pada matriks dan sistem persamaan linear.\n\nUntuk matriks, berikut yang dapat dikalkulasi oleh program ini :\n\n* Transpose, Determinan, Operasi Aritmatika Matriks (penjumlahan, pengurangan, dan perkalian) dan Invers matriks (metode Gaussian, metode Gauss Jordan, dan metode balikan matriks)\n* Nilai eigen, vektor eigen, dan persamaan dan akar-akar dari polinomial karakteristiknya\n* LU _Decompositon_\n* _Singular Value Decompositon_ (SVD)\n* Diagonalisasi Matriks\n\nSementara 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.\n\n## Dokumentasi Singkat\n\nProgram ini menggunakan bahasa pemrograman Python dengan paradigma _Object Oriented Programming_ (OOP). File utama pada program ini adalah `main.py`.\n\nProgram 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.\n\n```cmd\npython LinAlg\n```\n\n\u003e Anda perlu memastikan telah berada di folder yang sama dengan `main.py`.\n\nProgram ini menggunakan _library_ [NumPy](https://numpy.org/), [Sympy](https://sympy.org/), [SciPy](https://scipy.org/) 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.\n\n## Instalasi\n\nProgram 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](https://python.org) dan meng-_install_-nya.\n\nDiperlukan library Python seperti [NumPy](https://numpy.org/), [Sympy](https://sympy.org/), [SciPy](https://scipy.org/), Tabulate, Colorama, dan DateTime untuk menjalankan program ini. Untuk meng-_install_-nya, Anda dapat menuliskan perintah berikut di _Command Prompt_ atau _terminal_ Anda :\n\n```python\n  pip install numpy sympy tabulate scipy datetime colorama\n```\n\nUntuk menjalankan program ini, Anda dapat melakukan _running_ di IDE Python seperti [PyCharm](https://www.jetbrains.com/pycharm//), _code editor_ seperti [Visual Studio Code](https://code.visualstudio.com/), atau dapat menggunakan perintah berikut pada _Command Prompt_ atau _terminal_ Anda :\n\n```cmd\n    python main.py\n```\n\n\u003e Anda perlu memastikan telah berada pada folder yang sama dengan file `main.py`.\n\n## Petunjuk Folder\n\nDalam program ini terdapat tiga folder utama, yaitu [src](src/), [doc](doc), dan [test](test). Folder [src](src) adalah folder yang berisi _source code_ dari program Aplikasi Aljabar Linear ini. Di dalamnya, terdapat file [main.py](src/main.py) yang merupakan file program utama,  modul [LinAlg](src/LinAlg/ yang berisi modul untuk program Kalkulator Aljabar Linear ini, dan [Arsip Output](src/Arsip%20Output), yaitu folder yang digunakan untuk menyimpan  _output_ hasil perhitungan.\n\nDi dalam folder [doc](doc), terdapat laporan dokumentasi dari program Kalkulator Aljabar Linear ini dan file [README](README) untuk petunjuk awal bagi pengguna. \n\nFolder [test](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.\n\n## Petunjuk Masukan\n\n### Masukan untuk Menu, Submenu, dan Pilihan\n\nUntuk 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`.\n\n### Masukan untuk Matriks\n\nUntuk 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 $\n\\begin{bmatrix}\n  1 \u0026 -1 \\\\\n  0 \u0026 1 \\\\\n  1 \u0026 0\n\\end{bmatrix}\n$, ordo matriks tersebut adalah $3 \\times 2$ sebab terdapat tiga baris dan dua kolom. Untuk memasukkan setiap elemennya, Anda dapat menuliskannya sebagai berikut :\n\n```input\nMasukkan Ordo Matriks\nBanyak Baris  : 3\nBanyak Kolom  : 2\n\nBaris ke-1    : 1 -1\nBaris ke-2    : 0 1\nBaris ke-3    : 1 0\n```\n\n### Masukan untuk Sistem Persamaan Linear\n\nPada 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\n\n$\\Sigma_{i = 1} ^n a_i x_i = k$, dengan $k \\in \\mathbb{C}$ dan $a_i \\in \\mathbb{C}$\n\n$a_1x_1 + a_2x_2 + a_3x_3 + \\cdots a_nx_n = k$\n\nBerikutnya, Anda dapat memasukkan setiap koefisien $(a_i)$ dari persamaannya tanpa variabel $(x_i)$. Secara otomatis, nantinya akan dibuatkan variabel $x_1, x_2, x_3, \\cdots, x_n$, dengan $n$ menyesuaikan ke banyaknya variabel yang Anda berikan. Untuk bagian masukan konstanta $(k)$, konstanta yang dimaksud berada pada ruas kanan atau dengan kata lain konstanta berada di sebelah kanan tanda sama dengan $(=)$.\n\nSebagai contoh, jika Anda memiliki sistem persamaan linear berikut:\n\n$\n\\begin{cases}\n  2x_1 + 3x_2 + x_3 \u0026= 10 \\\\\n  x_1 + 2x_2 - x_3 \u0026= 8 \\\\\n  -x_1 + x_2 -2x_3 \u0026 = -5\n\\end{cases}\n$\n\nAnda memiliki sistem persamaan linear tiga variabel dengan tiga persamaan. Anda dapat memberikan masukan sebagai berikut \n\n```input\nBanyak Variabel   : 3\nBanyak Persamaan  : 3\n\nPersamaan ke-1    : 2 3 1\nKonstanta ke-1    : 10\n\nPersamaan ke-2    : 1 2 -1\nKonstanta ke-2    : 8\n\nPersamaan ke-3    : -1 1 -2\nKonstanta ke-3    : -5\n```\n\nJika Anda memiliki sistem persamaan linear dengan bilangan kompleks, Anda dapat menuliskan bentuk $a + bi$, dengan $a$ adalah komponen bilangan real, $b$ merupakan komponen bilangan imaginer, dan $i$ menyatakan bilangan imaginer $(i = \\sqrt{-1})$, sebagai `a+bj`.\n\n\u003e Untuk menuliskan bilangan imaginer, gunakan `j`, bukan `i`.\n\u003e Jika $a$ bernilai 0, Anda dapat memberikan masukan dalam bentuk $bj$ saja, tidak harus $0+bj$.\n\u003e Jika $b$ bernilai 0, Anda dapat memberikan masukan dalam bentuk $a$ saja, tidak harus $a+0j$.\n\nSebagai contoh, jika Anda memiliki sistem persamaan linear dengan bilangan kompleks seperti berikut:\n\n$\n\\begin{cases}\n  (1+i)x_1 + (2-i)x_2 \u0026= 3+2i \\\\\n  -ix_1 + (1+i)x_2 \u0026= 6-i\n\\end{cases}\n$\n\nAnda memiliki sistem persamaan linear dua variabel dengan dua persamaan. Anda dapat memberikan masukan berikut:\n\n```input\nBanyak Variabel   : 2\nBanyak Persamaan  : 2\n\nPersamaan ke-1    : 1+j 2-j\nKonstanta ke-1    : 3+2j\n\nPersamaan ke-2    : -j 1+j\nKonstanta ke-2    : 6-j\n```\n\n## Petunjuk Keluaran\n\n### Matriks\n\nKeluaran 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. \n\n### Sistem Persamaan Linear\n\nDalam sistem persamaan linear, keluaran berupa bilangan imaginer terkadang akan ditampilkan dalam bentuk `I` atau `j`. Keduanya sama saja, `i` = `j` = $\\sqrt{-1}$.\n\n### File _output_ yang disimpan\n\nFile _output_ akan disimpan dalam folder [**Arsip Output**](src/Arsip%20Output/) 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.\n\n## _Python Libraries_\n\n![NumPy](https://img.shields.io/badge/numpy-%23013243.svg?style=for-the-badge\u0026logo=numpy\u0026logoColor=white)\n[![Sympy Version](https://img.shields.io/badge/sympy-%3E=1.9-blue)](https://sympy.org/)\n![SciPy](https://img.shields.io/badge/SciPy-%230C55A5.svg?style=for-the-badge\u0026logo=scipy\u0026logoColor=%white)\n\n## _Screenshots_\n\n### Tampilan Menu\n\n![Menu](doc/photo/image1.png)\n\n### Tampilan _Output_\n\n![Tampilan Output](doc/photo/image2.png)\n\n## Proyek Ini Dikembangkan Oleh\n\n1. [Farras Arkan Wardana (L0123052)](https://www.instagram.com/arknwrdn/)\n2. [Fathoni Nur Habibi (L01233054)](https://www.instagram.com/fn._habibi/)\n3. [Ivan Wahyu Nugroho (L013068)](https://instagram.com/ifwhy._)\n\n## Institusi\n\n\u003cdiv style=\"display:flex; justify-content:center; border:3px solid #00AFEF; align-items:center; padding:20px; border-radius:10px; height:max-content;\" \u003e\n  \u003ca href=\"https://uns.ac.id\" style=\"color:#00AFEF; text-decoration:none\"\u003e\n    \u003cimg src=\"doc/photo/image3.png\" alt=\"Universitas Sebelas Maret\" height=\"102.5px\"\u003e\n  \u003c/a\u003e\n\n  \u003cdiv style=\"margin-left:30px; font-family:Times New Roman; font-size:1.15rem; display:flex; flex-direction:column; font-weight:bold; height:105px; color:#00AFEF\"\u003e\n    \u003cp\u003e\u003ca href=\"https://if.fatisda.uns.ac.id\" style=\"color:#00AFEF; text-decoration:none\"\u003eProgram Studi Informatika\u003c/a\u003e\u003c/p\u003e\n    \u003cp\u003e\u003ca href=\"https://fatisda.uns.ac.id\" style=\"color:#00AFEF; text-decoration:none\"\u003eFakultas Teknologi Informasi dan Sains Data\u003c/a\u003e\u003c/p\u003e\n    \u003cp\u003e\u003ca href=\"https://uns.ac.id\" style=\"color:#00AFEF; text-decoration:none\"\u003eUniversitas Sebelas Maret\u003c/a\u003e\u003c/p\u003e\n  \u003c/div\u003e  \n\u003c/div\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fifwhy%2Flinear-algebra-calculator","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fifwhy%2Flinear-algebra-calculator","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fifwhy%2Flinear-algebra-calculator/lists"}