Jangan puas dulu.. Matrik dan Eliminasi Gauss dalam Python

4.4. MATRIK DAN ELIMINASI GAUSS DALAM PYTHON 55

4.4.7 Pivoting

Pada baris ke-15, yang merupakan bagian dari proses triangularisasi dalam source code di atas, terdapat m=A[i,k]A[k,k] elemen A[k, k] tentunya tidak boleh bernilai nol. Jika itu terjadi, maka proses triangularisasi otomatis akan berhenti dan itu sekaligus menggagalkan metode eliminasi Gauss. Dilihat dari indeks-nya yang kembar yaitu [k, k], maka tidak diragukan lagi bahwa ia pasti menempati posisi di elemen diagonal. Nama lain elemen ini adalah elemen pivot. Jadi apa yang harus dilakukan jika secara tidak disengaja didalam aliran proses terdapat elemen pivot yang bernilai nol? Salah satu cara untuk mengatasinya adalah dengan menukar seluruh elemen yang se- baris dengan elemen diagonal bernilai nol. Ia harus ditukar posisinya dengan baris yang ada dibawahnya, sampai elemen diagonal matrik menjadi tidak nol, a ii 6= 0. Cara ini disebut pivot- ing 3 . Penambahan proses pivoting kedalam source code eliminasi Gauss dimulai dari baris ke-15 sampai baris ke-20 berikut ini 1 from numpy import array, zeros 2 3 ~~~~~~inisialisasi matrik augment~~~~~ 4 A = array[[1.,-1.,2.,-1.,-8.],\ 5 [2.,-2.,3.,-3.,-20],\ 6 [1.,1.,1.,0.,-2],\ 7 [1.,-1.,4.,3,4]] 8 print A 9 10 ===== METODE ELIMINASI GAUSS ========= 11 n=lenA 12 ~~~~~~proses triangularisasi~~~~~~~~~~ 13 for k in range0,n-1: 14 -----proses pivot dari sini---------- 15 if A[k,k]==0: 16 for s in range0,n+1: 17 v=A[k,s] 18 u=A[k+1,s] 19 A[k,s]=u 20 A[k+1,s]=v 21 -----proses pivot sampai sini---------- 22 for i in rangek+1,n: 23 m=A[i,k]A[k,k] 24 for j in range0,n+1: 25 A[i,j]=A[i,j]-mA[k,j] 26 27 ~~~~~~proses substitusi-mundur~~~~~~~~ 28 X = zerosn,1 29 X[n-1,0]=A[n-1,n]A[n-1,n-1] 30 for j in rangen-2,-1,-1: 31 S=0 32 for i in rangej+1,n: 33 S=S+A[j,i]X[i,0] 3 Catatan singkat dan source code mengenai pivoting sudah diterangkan di Bab-2 56 BAB 4. METODE ELIMINASI GAUSS 34 X[j,0]=A[j,n]-SA[j,j] 35 ====================================== 36 print X OK. Sekarang source-code diatas sudah bekerja dengan baik.

4.4.8 Kembali ke bentuk Ax = b

Sistem persamaan linear dalam pembahasan kita sejak awal memiliki rumusan Ax = b yang dijabarkan dalam operasi matrik       1 1 3 2 1 −1 1 3 −1 −1 2 −1 2 3 −1             x x 1 x 2 x 3       =       4 1 −3 4       dimana A =       1 1 3 2 1 −1 1 3 −1 −1 2 −1 2 3 −1       dan b =       4 1 −3 4       Pada semua source-code yang baru saja dibuat di atas, inisialisasi selalu dimulai dari matrik augment yang menggabungkan matrik A dan vektor b seperti berikut A =       1 1 3 4 2 1 −1 1 1 3 −1 −1 2 −3 −1 2 3 −1 4       Oleh karena itu sebaiknya source-code tersebut perlu membedakan matrik A dan vektor b pada inisialisasi awalnya, baru setelah itu keduanya digabung menjadi matrik augment. Untuk maksud tersebut, modifikasi yang perlu dilakukan adalah 1 from numpy import array, zeros 2 3 ~~~~~~inisialisasi matrik A~~~~~ 4 A = array[[1.,1.,0.,3.],\ 5 [2.,1.,-1.,1.],\ 6 [3.,-1.,-1.,2.],\ 7 [-1.,2.,3.,-1.]] 8 print A 9 ~~~~~~inisialisasi vektor b~~~~~ 10 b = array[[4.],\ 11 [1],\ 12 [-3],\ 13 [4]] 14 print b