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