Wiryanto
Bab 2
Sistem Persamaan
Pada bab sebelumnya telah dibahas bagaimana menentukan x yang memenuhi f(x)=0.
Pada bagian ini kita memperluas masalah di atas menjadi system, yaitu kita tentukan
x1 , x2 , , xn yang memenuhi
f1 ( x1 , x2 , , xn ) 0
f 2 ( x1 , x2 , , xn ) 0
f n ( x1 , x2 , , xn ) 0
System persamaan tersebut dapat berupa linear maupun tak-linear. Di sini kita membatasi
hanya yang linear saja, sekaligus sedikit mengulang apa yang telah dipelajari di aljabar
linear.
Pada bagian depan telah diberikan contoh, dimana kita menjumpai masalah system
persamaan linear (SPL), terkait dalam distribusi gaya pada suatu bentuk struktur. Secara
umum kita berhadapan dengan bentuk
a11 x1 a12 x2 a1n xn b1
a21 x1 a22 x2 a2 n xn b2
an1 x1 an 2 x2 ann xn bn
dengan a11 , a12 , , ann , b1 , , bn konstanta yang diketahui. Kita tuliskan dalam bentuk
matrik
a11 a12 a1n x1 b1
a
21 a22 a2 n x2 b2
an1 an 2 ann xn bn
Langkah-langkah:
1. Jika |a[n,n]|<E-15, maka PROSES GAGAL, stop
2. x[n]:=a[n,n+1]/a[n,n]
3. Untuk k:=n-1, n-2, …, 1
a. Jika |a[k,k]|<E-15, maka PROSES GAGAL, stop
b. s:=0
Untuk i:=k+1, k+2, …, n
s:=s+a[k,i]*x[i]
x[k]:=(a[k,n+1]-s)/a[k,k]
Dengan cara serupa kita dapat selesaikan SPL dengan matrik berupa segitiga bawah,
yaitu dengan substitusi maju.
Bentuk SPL:
a11 0 0 x1 b1
a
21 a22 0 0 x2 b2
0
an1 an 2 ann xn bn
L.H. Wiryanto
Substitusi maju:
x1 : b1 / a11
x2 : b2 a2,1 x1 / a2,2
k 1
xk : bk ak ,i xi / akk
i 1
n 1
xn : bn an ,i xi / ann
i 1
Algoritma Substitusi Maju:
Masukan :n ukuran SPL
a[i,j], i:=1, 2, …, n, j:=1, 2, …, i, i+1
Langkah-langkah:
1. Jika |a[1,1]|<E-15, maka PROSES GAGAL, stop
2. x[1]:=a[1,2]/a[1,1]
3. Untuk k:=2, 3, …, n
a. Jika |a[k,k]|<E-15, maka PROSES GAGAL, stop
b. s:=0
Untuk i:=1, 2, …, k-1
s:=s+a[k,i]*x[i]
x[k]:=(a[k,k+1]-s)/a[k,k]
Latihan:
1. Tentukan urutan penghitungan x1 , x2 , x3 , x4 dari SPL berbentuk
a11a14 x1 b1
a12 a13
a
a22 a23 0 x2 b2
21 .
a31
a32 0 0 x3 b3
0 a41
0 0 x4 b4
2. Tuliskan algoritma SPL perluasan nomer 1 untuk ukuran nxn.
Jawab:
x1 b4 / a41
x2 b3 a 31 x1 / a32
x3 b2 a 21 x1 a22 x2 / a23
x4 b1 a 11 x1 a12 x2 a13 x3 / a14
L.H. Wiryanto
k 1
xk bn 1 k an 1 k ,i xi / an 1 k ,k
i 1
Untuk mengenolkan a21 , a31 , , an1 , kita ikuti proses berikut. Operasi penggantian baris
ke-2 dengan baris ke-2 ditambah p kali baris ke 1 dilakukan untuk membuat a21 menjadi
nol. Di sini kita gunakan p a21 / a11 , a11 sebagai pembagi disebut elemen pivot. Pada
tahap ini algoritma dapat disusun
1. p:=-a[2,1]/a[1,1]
2. Untuk j:=2, 3, …, n+1
a[2,j]:=a[2,j]+p*a[1,j]
3. a[2,1]:=0
Penggantian baris ke-3 dengan baris ke-3 ditambah p kali baris ke 1 dilakukan untuk
membuat a31 menjadi nol, kita gunakan p a31 / a11 , dengan algoritma
1. p:=-a[3,1]/a[1,1]
2. Untuk j:=2, …, n+1
a[3,j]:=a[3,j]+p*a[1,j]
3. a[3,1]:=0
Penggantian baris ke-4 dan seterusnya dapat dilakukan dengan cara yang sama, sehingga
keseluruhan tahap tersebut dapat digabungkan menjadi
Untuk i:=2, 3, …, n
p:=a[i,1]/a[1,1]
Untuk j:=2, 3, …, n+1
a[i,j]:=a[i,j]-p*a[1,j]
a[i,1]:=0
Sampai di sini kita peroleh matrik perluasan, menjadi
L.H. Wiryanto
0
0 an 2 ann ann 1
Tahap brikutnya adalah mengenolkan kolom ke-2 (warna merah), dengan algoritma
Untuk i:=3, …, n
p:=a[i,2]/a[2,2]
Untuk j:=3, …, n+1
a[i,j]:=a[i,j]-p*a[2,j]
a[i,2]:=0
Begitu seterusnya untuk kolom yang lain, sehingga keseluruhan diperoleh algoritma
eliminasi Gauss
Untuk k:=1, 2, …, n-1
Untuk i:=k+1, k+2, …, n
p:=a[i,k]/a[k,k]
Untuk j:=k+1, k+2, …, n+1
a[i,j]:=a[i,j]-p*a[k,j]
a[i,k]:=0
Oleh karena itu, untuk menyelesaikan SPL dilakukan dua tahap utama, yaitu
1. eliminasi Gauss (membentuk matrik segitiga atas)
2. substitusi mundur
Algoritma merupakan gabungan dari algoritma di atas.
Pemilihan elemen pivot berpengaruh terhadap hasil solusi. Coba kita selesaikan SPL
1.133 x1 5.281x2 6.414
24.14 x1 1.210 x2 22.93
a11
1 1
a12 1
a13
Dalam matrik ~ 1 1 1
a21 a22 a23
1. Secara langsung, dengan menggunakan perhitungan 4 digit.
Kalikan persamaan 1 dengan m21 24.14 /1.133 21.31 dan kurangkan terhadap
persamaan 2
2
a22 1.21 m21 *5.281 113.7
2
a23 22.93 m21 *6.414 113.8
Solusi x2 1.001, x1 0.9956
2. Tukar lebih dahulu kedua persamaan
24.14 x1 1.210 x2 22.93
1.133 x1 5.281x2 6.414
Pengali m21 0.04693 , menghasilkan SPL
L.H. Wiryanto
a3 d3 c3 b3
a4 d 4 c4 b4
a5 d 5 b5
Kalau kita perhatikan dalam matrik tersebut, kita dapat menuliskan elemen matrik dalam
4 vektor
d1 b1
a2 d c1 b
a 2 c 2
a : 3
, d : d3 , c : 2
, b : b3 ,
a4 c3
d4 b4
a5 d5 c4
b5
untuk menghemat tempat karena elemen lainnya berisikan nol. Selanjutnya eliminasi
Gaus dilakukan untuk membentuk matrik segitiga atas, dengan tidak melakukan
penukaran baris, karena akan membuat isi vector berantakan, dan kemudian substitusi
mundur.
Algoritma
Masukan : n ukuran SPL
a[i], d[i], c[i], b[i], i:=1,2,…,n
Keluaran : x[i]
Lankah:
1. Eliminasi Gauss (membentuk matrik segitiga atas, mengenolkan a[i])
Untuk k:=1, 2, …,n-1
Jika |d[k]|<E-15, maka proses gagal, stop
L.H. Wiryanto
p:=a[k+1]/d[k]
d[k+1]:=d[k+1]-p*c[k]
b[k+1]:=b[k+1]-p*b[k]
a[k+1]:=0
2. Substitusi mundur
Jika |d[n]|<E-15 maka SPL singular, stop
x[n]:=b[n]/d[n]
Untuk k:=n-1, n-2, …, 1
x[k]:=(b[k]-c[k]*x[k+1])/d[k]
Contoh:
Dengan mengikuti algoritma di atas, selesaikan SPL yang dituliskan dalam matrik
perluasan berikut
4 6 0 0 | 14
2 3 1 0 | 3
0 9 4 1 | 0
0 0 5 1 | 5
Jawab:
1. Proses Eliminasi
k:=1
p:=2/4=0.5
d[2]:=-3-0.5*6=-6
b[2]:=3-0.5*14=-4
a[2]:=0
Matrik yang diperoleh:
4 6 0 0 | 14
0 6 1 0 | 4
0 9 4 1 | 0
0 0 5 1 | 5
k:=2
p:=9/(-6)=-1.5
d[3]:=-4-(-1.5)*1=-2.5
b[3]:=0-(-1.5)*(-4)=-6
a[3]:=0
Matrik yang diperoleh:
4 6 0 0 | 14
0 6 1 0 | 4
0 0 2.5 1 | 6
0 0 5 1 | 5
k:=3
p:=5/(-2.5)=-2
d[4]:=-1-(-2)*(-1)=-3
L.H. Wiryanto
b[4]:=5-(-2)*(-6)=-7
a[4]:=0
program tridiag
implicit double precision (a-h,o-z)
dimension a(10),d(10),c(10), b(10) ,x(10)
c Program menyelesaikan SPL dengan matrik koefisiennya berupa matrik
c tri-diagonal
c Matrix A=[tri-diagonal, a,b,c], spl: Ax=b
n=4
print *,'Ukuran SPL'
print *, n
print *,'input a(i) diagonal -1'
do 80 i=2,n
read *, a(i)
80 continue
print *,'input d(i) diagonal utama'
do 81 i=1,n
read *, d(i)
81 continue
print *,'input c(i) diagonal +1'
do 82 i=1,n-1
read *, c(i)
82 continue
print *,'input b(i) ruas kanan SPL'
do 83 i=1,n
read *, b(i)
83 continue
c Eliminasi Gauss
do 1 k=1,n-1
p=a(k+1)/d(k)
L.H. Wiryanto
d(k+1)=d(k+1)-p*c(k)
b(k+1)=b(k+1)-p*b(k)
a(k+1)=0.0
1 continue
print *, (d(i),i=1,n)
print *, (c(i),i=1,n-1)
print *, (b(i),i=1,n)
pause
c Substitusi mundur
x(n)=b(n)/d(n)
print *, x(n)
do 2 k=1,n-1
x(n-k)=(b(k)-c(k)*x(k+1))/d(k)
print *, x(n-k)
2 continue
10 stop
end
Dengan menggunakan program tersebut, SPL pada contoh di atas menghasilkan jawab
yang sama. Selanjutnya kita ujikan pada SPL yang dituliskan dalam matrik perluasan
berikut. Elemen matrik yang tidak diisi berarti bernilai nol.
1 1 | 1
3 0 2 | 0
1 4 4 | 0
1 3 1 | 1
4 4 1 | 0
2 4 3 | 0
1 2 1 | 1
5 3 | 0
Setelah proses eliminasi Gauss, matrik menjadi
1 1 | 1
3 2 | 3
3.3333 4 | 1
1.8 1 | 0.7
6.2222 1 | 1.5556
3.6786 3 | 0.5
1.1845 1 | 1.1359
1.2213 | 4.7951
dan memberikan jawab
L.H. Wiryanto
Latihan:
Sebuah pompa mampu mengalirkan fluida dengan debit Q1=1. Pompa tersebut terhubung
secara tertutup seperti gambar. Debit pada setiap cabang pipa memenuhi persamaan di
bawah. Sebagi tugas di sini adalah menyelesaikan SPL yang ada. Kemudian jelaskan
apakah ada pipa yang tidak dialiri, adakah yang alirannya kebalik?
2Q3 Q4 Q2 0
2Q5 Q6 Q4 0
3Q1 Q6 0
Q1 Q2 Q3
Q3 Q4 Q5
Q5 Q6 Q7
Q1 Q3 Q5
pompa Q2 Q4 Q6 Q7
Dekomposisi LU
Suatu cara menyelesaikan SPL
Ax b
adalah dengan memecah matrik A menjadi matrik segitiga bawah L dan matrik segitiga
atas U , lebih khusus lagi L mempunyai elemen 1 pada diagonal utama. Sehingga
penyelesaian SPL dalam dua tahap
Ly b, Ux y
y diselesaikan dari SPL pertama, kemudian diikuti menentukan x melalui matrik U .
Masalah sekarang adalah bagaimana mendekomposisi A menjadi dua matrik L dan U ,
dan membuat algoritma-nya.
Kita ikuti proses dekomposisi untuk matrik ukuran 3x3 berikut. Diberikan matrik
L.H. Wiryanto
a11(1)
a13(1) a12(1)
(1)
(1)
A : a21
(1)
a22 a23
(1)
a32 a31
(1)
(1)
a33
Kita gunakan subscript (1) untuk menyatakan sebagai notasi awal, dan setelah melalui
proses perhitungan tempat yang ada akan ditimpa, karena matrik L dan U akan
disimpan pada matrik A tersebut.
Sekarang kita lihat proses dekomposisi untuk matrik ukuran 4x4. Dari matrik
a11(1) a12(1) a13(1) a14(1)
(1) (1) (1) (1)
a21 a22 a23 a24
a31
(1) (1)
a32 (1)
a33 (1)
a34
(1) (1)
a41 a42 a43 a44
(1) (1)
Baris pertama dan kedua sudah selesai diolah, begitu juga dengan kolom pertama (warna
hijau). Baris ke tiga dan ke empat perlu disempurnakan. Untuk itu kita lakukan
perhitungan
m32 a32 (2)
/ a22(2) (3)
; a33 a33
(2)
m32 a22
(2)
(3)
a34 a34
(2)
m32 a14(2)
L.H. Wiryanto
m42 a42
(2) (2)
/ a22 (3)
; a43 a43
(2)
m42 a23
(2)
(3)
a44 a44
(2)
m42 a24
(2)
berkaitan dengan suku warna merah dan biru pada matrik LU . Sampai tahap ini kita
sudah menghitung hamper semua elemen L dan U , seperti yang ditampilkan pada
matrik berikut, warna hijau.
a11(1) a12(1) a13(1) a14(1)
(2) (2) (2)
m21 a22 a23 a24
m31 m32 a33 (3) (3)
a34
(3)
m41 m42 a43 a44
(3)
Sehingga diperoleh
a11(1) a12(1) a13(1) a14(1)
(2) (2) (2)
m21 a22 a23 a24
m31 m32 a33 (3) (3)
a34
(4)
m41 m42 m43 a44
Dengan mengikuti proses dekomposisi dari matrik 3x3 dan 4x4, diharapkan dapat
memberikan pola berpikir untuk mendekomposisikan matrik ukuran nxn. Sedangkan
eksistensi dari dekomposisi matrik A=LU dijamin: (lihat Anton & Rorres, Elementary
Linear Alg., hal. 479), yaitu:
Jika A matrik bujur sangkar yang dapat direduksi menjadi bentuk eselon baris U
dengan eliminasi Gauss tanpa penukaran baris, maka A dapat difaktorkan sebagai
A LU , dengan U Em Em 1 E2 E1 A, L E11 E21 Em1 ; E1 , E2 , , Em matrik
elementer yang berkaitan dengan operasi baris.
Contoh:
1. Tentukan matrik dekomposisi LU yang memenuhi
1 3 6 1 0 0 a11 a12 a13
A : 4 8 1 m21 1 0 0
a22 a23 LU
2 3 5 m31 m32 1 0 0 a33
dengan mengikuti prosedur di atas.
Jawab:
a11 1, a12 3, a13 6
(p=1, r=2) m21 4 /1 4, (c 1) a21
(2)
8 4*3 4
(c 2) a23
(2)
1 4*6 25
(p=1, r=3) m31 2 /1 2, (c 2) a32
(2)
3 (2) *3 9
(c 3) a33
(2)
5 (2) *6 17
(p=2, r=3) m32 9 / (4) 2.25, (c 3) a33
(3)
17 (2.25) *(25) 39.25
1 0 0 1 3 6
L4 1
0 , U 0 4 25
2 2.25 1 0 0 39.25
Jawab:
Contoh ini dikerjakan dengan membuat program sebagai berikut:
program decLU
implicit double precision (a-h,o-z)
dimension a(10,10), al(10,10), u(10,10)
c Matrix A di dekomposisi LU
open(15,file='LU.dat')
L.H. Wiryanto
sero=0.d0
one=1.d0
two=one+one
three=two+one
half=one/two
pi=3.141592653589
c data matrik A
n=7
xo=sero
dx=half
c matrik a(i,j) berisi 1,x,x^2,x^3,...,x^6
c dengan x=xo+i*dx untuk baris ke i
c write(15,5) 'matrik semula'
do 11 i=1,n
x=xo+i*dx
a(i,1)=one
do 12 j=2,n
a(i,j)=a(i,j-1)*x
12 continue
write(15,5) (a(i,k),k=1,n)
11 continue
write(15,5)
c write(15,5) 'hasil dekomposisi L'
do 1 i=1,n-1
do 2 j=i+1,n
bji=a(j,i)/a(i,i)
a(j,i)=bji
c print *,bji
do 3 k=i+1,n
a(j,k)=a(j,k)-bji*a(i,k)
c print *, a(j,k)
3 continue
c pause
2 continue
1 continue
do 4 i=1,n
do 6 j=1,n
if(j .lt. i) then
al(i,j)=a(i,j)
u(i,j)=sero
else
if(j.eq. i) then
al(i,j)=one
u(i,j)=a(i,j)
L.H. Wiryanto
else
al(i,j)=sero
u(i,j)=a(i,j)
endif
endif
6 continue
write(15,5) (al(i,k),k=1,n)
4 continue
c write(15,5) 'matrik U'
do 7 i=1,n
write(15,5) (u(i,k),k=1,n)
7 continue
5 format(7(f10.5,1x))
close(unit=15)
stop
end
Keluaran Program:
Hasil perhitungan dekomposisi matrik A=LU
Matrik koefisien A
1.00000 .50000 .25000 .12500 .06250 .03125 .01563
1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000
1.00000 1.50000 2.25000 3.37500 5.06250 7.59375 11.39063
1.00000 2.00000 4.00000 8.00000 16.00000 32.00000 64.00000
1.00000 2.50000 6.25000 15.62500 39.06250 97.65625 244.14063
1.00000 3.00000 9.00000 27.00000 81.00000 243.00000 729.00000
1.00000 3.50000 12.25000 42.87500 150.06250 525.21875 1838.26563
Hasil
matrik L
1.00000 .00000 .00000 .00000 .00000 .00000 .00000
1.00000 1.00000 .00000 .00000 .00000 .00000 .00000
1.00000 2.00000 1.00000 .00000 .00000 .00000 .00000
1.00000 3.00000 3.00000 1.00000 .00000 .00000 .00000
1.00000 4.00000 6.00000 4.00000 1.00000 .00000 .00000
1.00000 5.00000 10.00000 10.00000 5.00000 1.00000 .00000
1.00000 6.00000 15.00000 20.00000 15.00000 6.00000 1.00000
Matrik U
1.00000 .50000 .25000 .12500 .06250 .03125 .01563
.00000 .50000 .75000 .87500 .93750 .96875 .98438
.00000 .00000 .50000 .50000 3.12500 5.62500 9.40625
.00000 .00000 .00000 .75000 3.75000 12.18750 32.81250
.00000 .00000 .00000 .00000 1.50000 11.25000 52.50000
.00000 .00000 .00000 .00000 .00000 3.75000 39.37500
.00000 .00000 .00000 .00000 .00000 .00000 11.25000
Tugas :
t
Fungsi f (t ) dihampiri dengan polinom derajat 6
t 2
2
L.H. Wiryanto
Perhatikan SPL
a11 x1 a12 x2 a1n xn b1
a21 x1 a22 x2 a2 n xn b2
an1 x1 an 2 x2 ann xn bn
Nilai x1 , x2 , , xn ditentukan dengan membuat tebakan
x1 b1 a12 x2 a13 x3 a1n xn / a11
x2 b2 a21 x1 a23 x3 a2 n xn / a22
xn bn an1 x1 an 2 x2 ann 1 xn 1 / ann
Akan tetapi rumusan tersebut membutuhkan nilai x lain untuk tiap perhitungan. Untuk
itu, kita memberikan tebakan awal dan digunakan dalam perhitungan pada ruas kanan,
sehingga kita mempunyai rumus iterasi
x1( k 1) b1 a12 x2( k ) a13 x3( k ) a1n xn( k ) / a11
Contoh:
Selesaikan SPL
3 1 1 1 x1 5
1
8 4 1 x2 13
1 3 9 2 x3 13
1 4 1 64 x4 6
menggunakan iterasi Jacobi, dengan tebakan awal x =(0,0,0,0)
Jawab:
Hasil perhitungan iterasi:
x1 x2 x3 x4
1.666667 1.625000 1.444444 .093750
.612269 .682726 .696759 -.056424
1.225646 1.207140 1.161378 .030626
.866952 .887277 .899076 -.018993
dan seterusnya….
1.000000 1.000000 1.000000 .000000
Untuk mempercepat pencapaian iterasi, Gauss dan Seidel membuat rumusan iterasi
dengan memanfaat hasil perhitungan pada persamaan sebelumnya, yaitu
x1( k 1) b1 a12 x2( k ) a13 x3( k ) a1n xn( k ) / a11
x2( k 1) b2 a21 x1( k 1) a23 x3( k ) a2 n xn( k ) / a22
x3( k 1) b2 a31 x1( k 1) a32 x3( k 1) a34 x4( k ) a2 n xn( k ) / a33
xn( k 1) bn an1 x1( k 1) an 2 x2( k 1) ann 1 xn( k11) / ann
Pada saat menghitung x1( k 1) kita gunakan x2( k ) , x3( k ) , x4( k ) , , xn( k ) , pada x2( k 1) kita gunakan
x1( k 1) , x3( k ) , x4( k ) ,, xn( k ) , hasil perhitungan sebelumnya digunakan pada tahap ini, begitu
juga untuk menghitung x3( k 1) menggunakan x1( k 1) , x2( k 1) , x4( k ) ,, xn( k ) , semakin ke bawah
semakin banyak hasil iterasi ke-k+1 yang digunakan.
Agar iterasi konvergen metoda Jacobi dan juga Gauss-Seidel mengharuskan matrik
n
koefisiennya diagonal dominant, yaitu aii aij . Kondisi ini merupakan syarat cukup,
j 1
j i
yaitu bila dipenuhi maka iterasi konvergen, tetapi bila tidak dipenuhi masih
dimungkinkan konvergen, dengan lambat. Untuk itu, coba selesaikan SPL
4 1 1 1 x1 6
1 3 1 2 x 5
2
1 1 4 1 x3 6
1 4 1 7 x4 6
L.H. Wiryanto
Matrik koefisiennya tidak diagonal dominant tetapi metoda Jacobi memberikan iterasi
yang konvergen.
Tugas (Praktikum):
Buat program untuk menyelesaikan SPL menggunakan iterasi Gauss Seidel, kemudian
terapkan pada
1 3 9 2 x1 13
3 1 1
1 x2 5
1 4 1 64 x3 6
1 8 4 1 x4 13
Gunakan tebakan awal x0 (0, 0, 0, 0) .