Anda di halaman 1dari 10

Work Sheet Pertemuan 2

1. [22524085_BAGAS ANDIKA PUTRA AMBODALE]

2. [22524084_DANAR BAGUS F]
Nama Kelompok :
3. [22524087_MUHAMMAD AINUN BASYIR]

4. [22524088_LUCKY NUGROHO]

Soal 1:

a. Buatlah program yang dapat menyelesaikan masalah SPL dengan metode eliminasi Gauss,
Elminasi Gauss-Jordan dan Dekomposisi LU. (75 Poin)

b. Buatlah program untuk mencari balikan (invers) matriks dari SPL dengan metode eliminasi
Gauss-Jordan. (25 Poin)

Nilai bonus tambahan jika,

a. Mahasiswa dapat membuat program dimana di awal program pengguna dapat memilih
metode yang digunakan, dan program akan mencari solusi SPL sesuai dengan metode yang
dipilih. (20 Poin)

b. Mahasiswa dapat membuat program yang sekaligus dapat mendeteksi apakah SPL yang
diberikan memiliki solusi trival atau solusi non-trivial. (20 Poin)

Jawab:

Jawaban berupa:

nomor 1 bagian a dan b sudah dalam satu program.

1. Pseudocode:

1. Mulai

2. Definisikan fungsi clear_screen():

a. Periksa sistem operasi yang digunakan.

b. Bersihkan layar konsol sesuai dengan sistem operasi.

3. Definisikan fungsi input_matrix():

a. Meminta pengguna untuk memasukkan jumlah baris dan kolom matriks.


b. Validasi jumlah baris dan kolom.

c. Buat matriks nol dengan ukuran yang sesuai.

d. Meminta pengguna untuk memasukkan elemen-elemen matriks.

e. Validasi input elemen matriks.

f. Kembalikan matriks yang diisi dengan nilai-nilai input pengguna.

4. Definisikan fungsi input_vector(n):

a. Meminta pengguna untuk memasukkan elemen-elemen vektor.

b. Validasi input elemen vektor.

c. Kembalikan vektor yang diisi dengan nilai-nilai input pengguna.

5. Definisikan fungsi gauss_jordan_inverse(A):

a. Inisialisasi variabel n sebagai jumlah baris atau kolom dari matriks A.

b. Bentuk matriks augmented dengan matriks identitas.

c. Lakukan proses eliminasi Gauss-Jordan pada matriks augmented.

d. Kembalikan matriks invers dari matriks A.

6. Definisikan fungsi solve_linear_system(A, b):

a. Hitung determinan matriks A.

b. Jika determinan tidak nol, selesaikan SPL dengan satu solusi menggunakan
np.linalg.solve.

c. Jika determinan nol, periksa apakah SPL memiliki banyak solusi atau tidak ada solusi.

d. Jika SPL memiliki banyak solusi, hitung solusi SPL homogen terkait menggunakan
scipy.linalg.null_space.

e. Kembalikan solusi SPL sesuai dengan kondisi yang ditemukan.

7. Definisikan fungsi main():

a. Tampilkan pesan selamat datang dan menu pilihan kepada pengguna.

b. Lakukan input pilihan pengguna.

c. Jika pengguna memilih metode penyelesaian SPL (1, 2, atau 3):

i. Lakukan input matriks dan vektor dari pengguna.

ii. Tampilkan SPL asli.

iii. Selesaikan SPL menggunakan metode yang dipilih.

iv. Tampilkan solusi atau pesan kesalahan.

d. Jika pengguna memilih untuk keluar (opsi 4), tampilkan pesan dan keluar dari loop.
8. Jalankan fungsi main() jika program dijalankan langsung.

9. Selesai

2.

Fungsi clear_screen() adalah sebuah fungsi yang bertujuan untuk mengosongkan tampilan
layar pada konsol dengan menggunakan perintah sistem yang sesuai dengan jenis sistem
operasi yang digunakan, entah itu Windows atau Unix.

Fungsi input_matrix bertugas menginstruksi pengguna untuk memasukkan jumlah baris dan
kolom matriks, serta elemen-elemen matriksnya. Pengguna diminta memasukkan jumlah baris
dan kolom, jika input tidak valid (bukan bilangan bulat positif), program akan menampilkan
pesan kesalahan dan meminta input kembali. Setelah jumlah baris dan kolom yang valid
dimasukkan, dibuat matriks numpy dengan ukuran yang sesuai. Selanjutnya, pengguna diminta
memasukkan elemen-elemen matriks satu per satu. Program memeriksa validitas input,
memastikan bahwa input yang dimasukkan adalah angka yang valid. Setelah semua elemen
matriks dimasukkan, matriks yang diisi dengan nilai-nilai input pengguna dikembalikan.

Fungsi input vector ini meminta pengguna untuk memasukkan elemen-elemen vektor.
Parameter n menunjukkan panjang vektor yang telah ditentukan sebelumnya dan digunakan
untuk menentukan jumlah elemen yang diperlukan dari pengguna. Pengguna diminta
memasukkan elemen-elemen vektor satu per satu, dimulai dari indeks 1 hingga indeks n.
Program akan memeriksa kevalidan input, memastikan bahwa yang dimasukkan adalah angka
yang sah. Setelah semua elemen vektor dimasukkan, vektor yang diisi dengan nilai-nilai input
pengguna akan dikembalikan.
fungsi gaus jordan inverse melakukan perhitungan invers dari matriks A menggunakan
metode eliminasi Gauss-Jordan. Pertama, dibentuk matriks augmented dengan
menggabungkan matriks A dengan matriks identitas. Selanjutnya, dilakukan proses eliminasi
Gauss-Jordan pada matriks augmented untuk mencapai matriks identitas di bagian kiri. Setelah
proses eliminasi selesai, matriks yang dihasilkan di bagian kanan adalah invers dari matriks A.
Matriks invers tersebut kemudian dikembalikan sebagai output.

Fungsi ini mengatasi sistem persamaan linear (SPL) berdasarkan matriks koefisien A dan
vektor konstanta b. Pertama, fungsi menghitung determinan matriks A. Jika determinan tidak
sama dengan nol, SPL memiliki satu solusi, dan fungsi np.linalg.solve dipanggil untuk
menyelesaikan SPL. Jika determinan sama dengan nol, fungsi memeriksa apakah SPL memiliki
banyak solusi atau tidak ada solusi. Jika SPL memiliki banyak solusi, fungsi menghitung solusi
SPL homogen terkait menggunakan scipy.linalg.null_space, yang merupakan ruang nol dari
matriks augmented yang dibentuk oleh A dan b. Jika matriks A adalah matriks singular (tidak
memiliki rank penuh), fungsi akan menimbulkan kesalahan karena SPL tidak memiliki solusi
unik. Hasilnya, fungsi mengembalikan solusi SPL sesuai dengan kondisi yang ditemukan.
Fungsi utama ini mengoperasikan program solver untuk Sistem Persamaan Linear (SPL).
Didalamnya, terdapat loop yang terus berjalan hingga pengguna memilih untuk keluar. Selama
loop berjalan, program membersihkan layar, menampilkan menu pilihan, dan meminta
pengguna untuk memilih opsi. Setelah pengguna memilih opsi, program memproses pilihan
tersebut. Jika pengguna memilih metode penyelesaian SPL, program meminta input matriks
dan vektor dari pengguna, menampilkan SPL awal, menyelesaikan SPL dengan metode yang
dipilih, dan menampilkan solusi atau pesan kesalahan. Jika pengguna memilih untuk keluar,
program menampilkan pesan dan keluar dari loop. Fungsi ini juga memanggil fungsi lain seperti
input_matrix(), input_vector(n), solve_linear_system(A, b), gauss_jordan_inverse(A), dan
fungsi-fungsi terkait dalam proses penyelesaian SPL.

Blok if __name__ == "__main__": digunakan untuk mengecek apakah program ini sedang
dijalankan langsung atau diimpor sebagai modul ke dalam program lain. Ketika program
dijalankan langsung, fungsi main() akan dipanggil untuk menjalankan program solver SPL. Ini
adalah praktik umum dalam Python untuk memisahkan kode yang akan dieksekusi saat
program berjalan langsung dari kode yang hanya akan dieksekusi saat program diimpor sebagai
modul ke dalam program lain. Dengan cara ini, kode yang diimpor tidak akan dieksekusi secara
otomatis saat program dijalankan.

Soal 2:

a. Buatlah program yang dapat menyelesaikan masalah SPL dengan metode Jacobian dengan
menentukan jumlah iterasi (50 Poin)

b. Buatlah program yang dapat menyelesaikan masalah SPL dengan metode Gauss-Seidel
dengan menentukan jumlah iterasi (50 Poin)

Nilai bonus tambahan jika,

a. Mahasiswa dapat membuat program dimana program dapat mendeteksi syarat cukup
koefisien persamaan dominan secara diagonal. (20 Poin)

b. Program dapat mendeteksi hasil perhitungan yang konvergen dan memberhentikan iterasi
saat nilai sudah konvergen. (20 Poin)

Jawab:

Jawaban berupa:

Soal nomor 2

pseudecode:

1. Mulai

2. Tampilkan pesan selamat datang di program penyelesaian SPL.

3. Meminta input jumlah baris dan kolom matriks A.

4. Meminta input elemen-elemen matriks A dan menyimpannya dalam list A.

5. Meminta input elemen-elemen vektor b dan menyimpannya dalam list b.

6. Meminta input jumlah iterasi maksimum.

7. Menentukan nilai awal x0 dengan semua elemen 0.

8. Tampilkan pilihan metode penyelesaian SPL (Jacobi atau Gauss-Seidel).

9. Meminta input pilihan metode.


10. Meminta input nilai toleransi.

11. Jika pilihan metode adalah Jacobi:

a. Coba jalankan jacobi_method dengan matriks A, vektor b, nilai awal x0, toleransi, dan
jumlah iterasi maksimum.

b. Tampilkan solusi yang ditemukan.

c. Tangkap dan tampilkan pesan kesalahan jika terjadi.

12. Jika pilihan metode adalah Gauss-Seidel:

a. Coba jalankan gauss_seidel_method dengan matriks A, vektor b, nilai awal x0, toleransi,
dan jumlah iterasi maksimum.

b. Tampilkan solusi yang ditemukan.

c. Tangkap dan tampilkan pesan kesalahan jika terjadi.

13. Jika pilihan metode tidak valid, tampilkan pesan kesalahan.

14. Selesai

bagian B

Fungsi jacobi_method menerima matriks koefisien A, vektor konstanta b, nilai awal x0,
toleransi tolerance, dan jumlah iterasi maksimum max_iterations. Pertama, ukuran matriks A
ditentukan dari panjang sisi matriks. Dilakukan pengecekan apakah syarat cukup koefisien
dominan secara diagonal terpenuhi. Jika tidak, baris matriks akan ditukar untuk memenuhi
syarat tersebut. Iterasi dilakukan hingga mencapai jumlah maksimum iterasi atau toleransi
terpenuhi. Pada setiap iterasi, nilai baru x_new dihitung menggunakan metode Jacobi. Error
dihitung sebagai perbedaan antara nilai iterasi sebelumnya dan nilai iterasi sekarang. Jika
toleransi terpenuhi, nilai x_new dikembalikan. Jika tidak, nilai x_new pada iterasi terakhir
dikembalikan.
Fungsi ini menerima matriks koefisien A, vektor konstanta b, nilai awal x0, toleransi
tolerance, dan jumlah iterasi maksimum max_iterations. Pertama, di dalam fungsi ini,
dilakukan pengecekan apakah koefisien diagonal cukup dominan secara diagonal. Jika tidak,
baris-baris yang tidak memenuhi syarat akan ditukar. Nilai awal x_new diinisialisasi dengan nilai
awal x0 yang telah disalin. Dilakukan iterasi sebanyak max_iterations. Pada setiap iterasi, nilai
x_new diperbarui berdasarkan rumus iterasi Gauss-Seidel. Di akhir setiap iterasi, dihitung nilai
error antara iterasi sekarang dan iterasi sebelumnya. Jika nilai error kurang dari toleransi yang
ditentukan, solusi x_new akan dikembalikan. Jika jumlah iterasi telah mencapai batas
maksimum tanpa memenuhi toleransi, nilai x_new pada iterasi terakhir akan dikembalikan.
Program dimulai dengan menyampaikan sambutan kepada pengguna. Pengguna diminta
untuk memasukkan dimensi matriks A (jumlah baris dan kolom). Selanjutnya, pengguna
diminta memasukkan elemen-elemen matriks A satu per satu, dan juga elemen-elemen vektor
b. Pengguna kemudian diminta untuk memasukkan jumlah iterasi maksimum yang diinginkan.
Nilai awal x0 ditetapkan menjadi nol untuk semua elemen. Selanjutnya, pengguna diminta
untuk memilih metode penyelesaian SPL, yaitu metode Jacobi atau metode Gauss-Seidel.
Selanjutnya, pengguna diminta memasukkan nilai toleransi. Berdasarkan pilihan pengguna,
program akan memanggil fungsi jacobi_method atau gauss_seidel_method untuk menemukan
solusi SPL. Solusi yang diperoleh akan ditampilkan. Jika terjadi kesalahan, pesan error akan
ditampilkan.

Blok if __name__ == "__main__": memastikan bahwa fungsi main() dijalankan ketika


program ini dijalankan langsung sebagai program utama.

Anda mungkin juga menyukai