Anda di halaman 1dari 12

I.

Pendahuluan
Pada percobaan ini akan dilakukan pemecahan suatu persamaan linier
simultan dengan menggunakan metode doolittle dan crout. Metode doolittle dan
crout samasama menggunakan teknik faktorisasi LU, dimana dalam metode
doolittle diagonal mariks segitiga bawah L bernilai satu semuanya, sedangkan
metode dalam metode crout diagonal matriks segitiga atas yang bernilai satu.
Berikut akan dibahas penerapan metode doolittle dan metode crout satu persatu.
1. Metode Doolittle
Metode doolittle adalah metode yang memecah matriks A dari suatu
persamaan linier Ax=B menjadi perkalian matriks segitiga bawah L dan
matriks segitiga atas U dimana diagonal dari matriks L bernilai satu semua.
Hal ini dinamakan dengan faktorisasi LU. Dan perlu diketahui bahwa
faktorisasi LU dapat ditulis dalam bentuk A=L*U.
Tujuan dari metode ini adalah untuk mempermudah perhitungan unutk
mencari x. Algoritma dari faktorisasi LU dalam metode doolittle adalah:

0 : Langkah awal k:=1,


Untuk j = 1,2,,n, kerjakan
Uij :=a1j
Lij := aj1 / U11
1 : Untuk langkah k=2,3,..,n-1, kerjakan :
Untuk j = k,k+1,k+2,,n,kerjakan :

Uij := akj -

lkj := (ajk -

) / Ukk.

2 : Langkah terakhir, k=n, kerjakan :

Unn := ametode
Penerapan
dolittle ini adalah untuk mencari solusi persamaan linier
nn simultan. Persamaan linier simultan dimodelkan dalam bentuk persamaan
matriks sebagai Ax = B. Setelah itu, matriks koefisien A kemudian difaktorisasi
menjadi LU, yang mengubah model persamaan tersebut menjadi LUx = B.
Setelah difaktorisasi, proses dilanjutkan dengan mencari vector y sebagai
hasil dari persamaan Ly = B. Kemudian barulah dicari vector x, yang
merupakan hasil dari persamaan Ux = y.
2. Metode Crout
Hampir sama dengan metode dolittle, metode crout adalah metode yang
memecah matriks A dari suatu persamaan linier Ax=B menjadi perkalian
matriks segitiga bawah L dan matriks segitiga atas U. Hanya bedanya disini
diagonal dari matriks U bernilai satu semua. Bentuk persamaan faktorisasinya
pun sama, yaitu A=L*U. Algoritma dari faktorisasi LU dalam metode crout
dapat dilihat pada kotak dibawah ini:

0 : Langkah awal k:=1,


Untuk j = 1,2,,n, kerjakan
Lj1 :=aj1
U2j := a2j / a11
1 : Untuk langkah b=2,3,..,n-1, kerjakan :
a. Untuk k = 2,3,b kerjakan :

Lb,k := ab,k b. Untuk k=b+1, b+2,..,n kerjakan

Penerapan
Ub,k :=metode
(ab,k - / crout ini) adalah
/ Ubb. untuk mencari solusi persamaan linier
simultan. Persamaan linier simultan dimodelkan dalam bentuk persamaan
matriks sebagai Ax = B. Setelah itu, matriks koefisien A kemudian difaktorisasi
menjadi LU, yang mengubah model persamaan tersebut menjadi LUx = B.
Setelah difaktorisasi, proses dilanjutkan dengan mencari vector y sebagai
hasil dari persamaan Ly = B. Kemudian barulah dicari vector x, yang
merupakan hasil dari persamaan Ux = y.
II.

Tujuan
Mampu menerapkan pemrograman Scilab pada perhitungan untuk
menyelesaikan persamaan linier simultan
Memahami cara perhitungan persamaan linier dengan kedua metode yaitu
metode Doolittle dan crout, dan dapat mengujinya dengan contoh persamaan
linier simultan.

III.

Langkah Percobaan
Pada praktikum terakhir ini, karena percobaan tidak dilakukan di kampus,
maka diperlukan langkah percobaan agar lebih jelas. Langkah percobaan tersebut
adalah sebagai berikut.
Untuk percobaan kali ini, terjemahkan algoritma metode Doolittle dan crout
di atas menjadi program Scilab. Langkahlangkah perhitungan keduanya sama,
yaitu:
1. Persiapkan matriks A dan vektor B dari persamaan linier yang akan dihitung.
2. Mulai menghitung matriks L dan U untuk metode bersangkutan sesuai rumus
yang diberikan pada landasan teori
3. Hitung vektor y sebagai penyelesaian dari Ly = B. Gunakan cara mudah yaitu
dengan pembagian kiri.
4. Hitung penyelesaian akhir x sebagai penyelesaian dari Ux = y.
Buatlah program di atas sebagai fungsi doolittle(A,B) dan crout(A,B) dan
menghasilkan keluaran berupa vektor x.
Ujilah kedua program tersebut untuk menghitung penyelesaian dari
persamaan linier simultan yang disajikan di bawah ini:

a. 3 x y + z=12

b. 2 x +6 y z=0

c.

x+ y3 z=9

10 x+3 y2 z=23

x8 y +3 z=0

2 x +2 y6 z=18

x+ yz=6

x+ 6 y10 z=0

x9 y +2 z=3

Bandingkan hasilnya dengan menggunakan pembagian kiri (\), dan


tunjukkan bahwa untuk persamaan (b) adalah trivial atau penyelesaian nol, dan
persamaan (c) tidak mempunyai penyelesaian layak.
IV.

Analisa Percobaan
Pada analisa percobaan kali ini, akan dibahas per soal, yaitu dari a sampai c.
Yang kemudian disetiap soalnya akan digunakan dua metode yang telah dibahas
pada pendahuluan, yaitu metode dolittle dan crout. Namun mula-mula kedua
algoritma dari metode tersebut harus diubah menjadi program dalam Scilab
terlebih dahulu.
a) Metode dolittle
Algoritma metode dolittle yang telah disebutkan pada pendahuluan
sebelumnya diubah menjadi program dengan bahasa Scilab sebagai berikut:
function [x]=doolittle(a,b)
n=size(a,1)
l=eye(n,n)
u=zeros(n,n)
for i=1:n,
u(1,i)=a(1,i);
end
for i=2:n,
l(i,1)=a(i,1)/u(1,1);
end
for j=2:n-1,
for k=j:n,
y=0;
for s=1:j-1,
y=y+l(j,s)*u(s,k);
end
u(j,k)=a(j,k)-y;
for q=j:n-1,
z=0;
for p=q+1:n,
z=z+l(p,s)*u(s,q);
l(p,q)=1/u(q,q)*(a(p,q)-z);
end
end
end
end
w=0;
for s=1:n-1,
w=w+l(n,s)*u(s,n);
end
u(n,n)=a(n,n)-w;

y=l\b;
x=u\y;
endfunction
Metode doliitle yang pada percobaan kali ini digunakan adalah metode
dolittle tanpa penukaran baris. Seperti yang telah disebutkan pada bagian
pendahuluan, bahwa program di atas menjadikan atau membutuhkan matriks
A dan B sebagai parameter. Sehingga untuk menjalankan program di atas,
harus dimasukan terlebih dahulu matriks A dan B nya.
Matriks A dan B diatas dibutuhkan dalam mencari x, karena persamaan
hubungan antara A, B dan x adalah Ax=B. Stelah kedua matriks tersebut
dimasukan barulah program dolittle bisa dijalankan, yang kemudian akan
mengeluarkan vector matriks x sebagai keluaran. Matriks x disini berisi x,y,
dan z.
b) Metode Crout
Algoritma metode crout yang telah disebutkan pada pendahuluan
sebelumnya diubah menjadi program dengan bahasa Scilab sebagai berikut:
function [x]=crout(a,b)
n=size(a,1)
l=zeros(n,n)
u=eye(n,n)
for i=1:n,
l(i,1)=a(i,1);
end
for i=2:n,
u(1,i)=a(1,i)/l(1,1);
end
for k=2:n-1,
for j=k:n,
y=0;
for s=1:k-1,
y=y+l(j,s)*u(s,k);
end
l(j,k)=a(j,k)-y;
for p=k:n-1,
z=0;
for q=p+1:n,
z=z+l(p,s)*u(s,q);
u(p,q)=1/l(p,p)*(a(p,q)-z);
end
end
end
end
w=0;
for s=1:n-1,
w=w+l(n,s)*u(s,n);

end
l(n,n)=a(n,n)-w;
y=l\b;
x=u\y;
endfunction
Sama halnya pada program doolittle, program ini membutuhkan matriks A
dan B sebagai parameter atau masukan. Karena persamaan yang digunakan
antara A, B dan x sama, yaitu Ax=B. Program Crout ini juga akan
mengeluarkan vector matriks x sebagai keluarannya. Yang juga berisi x, y dan
z.
Setelah kedua algoritma, dari kedua metode yang akan digunakan, telah
ditransformasikan menjadi bentuk program kemudian disimpan dalam format
*.sci, maka perhitungan untuk mencari x, y, dan z dari setiap persamaan dapat
dilakukan. Seperti yang telah disebutkan bahwa percobaan akan dilakukan secara
urut per persamaan. Yang kemudian setiap percobaan akan diuji dengan dua
metode yang telah dijelaskan sebelumnya.
1.

Persamaan pertama

3 x y + z=12
10 x+3 y2 z=23

x+ yz=6
Pertama-tama matriks tersebut ditransformasikan kedalam bentuk Ax=B.
Dimana A adalah koefisien dan B adalah hasilnya.

][ ] [ ]

3 1 1 x
12
10 3 2 y = 23
1
1 1 z
6

Matriks A dan B diatas dimasukan di Scilab dengan perintah :


-->A=[3 -1 1;10 3 -2;1 1 -1];
-->B=[12; -23; 6];

Kemudian setelah selesai pendefinisian, maka barulah dilakukan


pemanggilan fungsi yang diinginkan. Bisa dengan fungsi getd (untuk semua
fungsi yang ada pada direktori) maupun dengan getf (untuk memanggil
fungsi/file tertentu yang ada pada direktori). Namun sebelumnya harus
dipastikan bahwa direktori yang digunakan adalah benar, jika belum maka
direktori harus diganti terlebih dahulu. Pada praktikum kali ini digunakan getd
sebagi perintah untuk me-load fungsi yang digunakan. Maka perintah yang
digunakan:
-->chdir('C:\Users\ircham\Documents');
-->getd

Setelah fungsi di-load. Barulah bisa dijalankan program yang diinginkan.

i.

Metode dolittle
Kemudian lakukan perintah pengeksekusian fungsi doolittle dengan
parameter matriks A dan B untuk mendapatkan matriks x. Berikut adalah
perintahnya.
-->x=doolittle(A,B)
x =
4.5
- 71.
- 72.5

ii.

Metode Crout
Kemudian lakukan perintah pengeksekusian fungsi crout dengan parameter
matriks A dan B untuk mendapatkan matriks x. Berikut adalah perintahnya.
-->x=crout(A,B)
x =
4.5
- 71.
- 72.5

Sedangkan hasil perhitungan dengan pembagian kiri adalah:


-->A\B
ans =
4.5
- 71.
- 72.5

Sehingga solusi dari persamaan linier pertama adalah:

[ ]

4.5
x= 71
72.5

2.

Persamaan kedua

2 x +6 y z=0

x8 y +3 z=0
x+ 6 y10 z=0
Sama dengan persamaan pertama, sebelumnya persamaan di atas
haruslah ditranformasikan terlebih dahulu menjadi persamaan matriks Ax=B.

][ ] [ ]

2 6 1 x
0
=
1 8
3
y
0
1 6 10 z
0

Kemudian matriks A dan B diatas dimasukan di Scilab dengan perintah:


-->A=[2 6 -1;1 -8 3;1 6 -10];
-->B=[0; 0; 0];

Karena direktori yang dipakai sudah diubah, maka tidak perlu dilakukan
lagi. Hanya saja untuk memastikan pemanggilan fungsi bisa dilakukan
kembali.
-->getd

i.

Setelah fungsi di-load. Barulah bisa dijalankan program yang diinginkan.


Metode dolittle
Kemudian lakukan perintah pengeksekusian fungsi doolittle dengan
parameter matriks A dan B untuk mendapatkan matriks x. Berikut adalah
perintahnya:
-->x=doolittle(A,B)
x =
0
0
0

ii.

Metode Crout
Kemudian lakukan perintah pengeksekusian fungsi crout dengan parameter
matriks A dan B untuk mendapatkan matriks x. Berikut adalah perintahnya:
-->x=crout(A,B)
x =
0
0
0

Sedangkan hasil dari pembagian kiri adalah:


-->A\B
ans =
0.
0.
0.

Sehingga solusi dari persamaan linier pertama adalah:

[]

0
x= 0
0

Dapat dilihat dari hasil di atas bahwa nilai x, y dan z adalah nol (0). Maka
dapat dipastikan bahwa persamaan linier kedua ini termasuk persamaan
trivial yang memiliki solusi penyelesaian nol.
c) Persamaan ketiga

x+ y3 z=9

2 x +2 y6 z=18
x9 y +2 z=3
Sama dengan persamaan sebelumnya, persamaan ketiga ini pun harus
ditranformasikan terlebih dahulu menjadi persamaan matriks Ax=B, sebelum

dieksekusi.

][ ] [ ]

1 1 3 x
9
2 2 6 y = 18
1 9 2 z
3

Kemudian matriks A dan B diatas dimasukan di Scilab dengan perintah:


-->A=[1 1 -3;2 2 -6;1 -9 2];
-->B=[9; 18; 3];

Karena direktori yang dipakai sudah diubah, maka tidak perlu dilakukan
lagi. Hanya saja untuk memastikan pemanggilan fungsi bisa dilakukan
kembali.
-->getd

Setelah fungsi di-load. Barulah bisa dijalankan program yang diinginkan.


i.
Metode dolittle
Kemudian lakukan perintah pengeksekusian fungsi doolittle dengan
parameter matriks A dan B untuk mendapatkan matriks x. Berikut adalah
perintahnya:
-->x=doolittle(A,B)
!--error 27
division by zero...
at line
23 of function doolittle called by :
x=doolittle(A,B)

ii.

Metode Crout
Kemudian lakukan perintah pengeksekusian fungsi crout dengan parameter
matriks A dan B untuk mendapatkan matriks x. Berikut adalah perintahnya:
-->x=crout(A,B)
!--error 27
division by zero...
at line 23 of function doolittle called by :
x=doolittle(A,B)

Sedangkan hasil perhitungan pembagian kirinya adalah:


-->A\B
warning
matrix is close to singular or badly scaled. rcond =
computing least squares solution. (see lsq)
ans =
0.
- 1.08
- 3.36

0.0000D+00

Hasil pembagian kiri di atas menyatakan bahwa matriks operasi


merupakan matriks yang hamper singular, sehingga komputer menampilkan
hasil akar terendah yang mungkin dan masih dalam bilangan real.
Dari hasil perintah pemanggilan fungsi dolittle (A,B) dan crout(A,B) di atas
dapat dilihat bahwa terdapat suatu pesan error, yaitu division by zero, yang
artinya dalam proses pengeksekusian fungsi tersebut terdapat suatu operasi
pembagian dengan angka nol. Akibatnya, persamaan di atas tidak memiliki

solusi pemecahan. Sehingga terbukti bahwa persamaan ketiga tidak memiliki


penyelesaian layak.
V.

Kesimpulan
Pada percobaan terakhir ini didapatkan kesimpulan:
1.
Faktorisasi LU adalah pemecahan matriks A menjadi matriks segitiga
bawah L dan matriks segitiga atas U. Yang dimana jika matriks L dikalikan U
akan kembali menjadi matriks A, atau dengan kata lain A=L*U.
2.
Metode doolittle adalah metode untuk memfaktorisasi LU suatu matriks,
misal A dari suatu persamaan linier Ax=B dimana diagonal dari matriks L
bernilai satu semua.
3.
Metode Crout adalah metode misal A dari suatu persamaan linier Ax=B
dimana diagonal dari matriks U bernilai satu semua.
4.
Solusi dari persamaan linier simultan dapat ditentukan dengan
menggunakan metode subtitusi, maupun eliminasi. Namun untuk
penyelesaian persamaan diatas 3 persamaan, maka dapat digunakan metode
doolittle maupun metode crout sebagai solusi untuk mempermudah
perhitungan.
5.
Untuk menyelesaikan persamaan linier Ax = B, digunakan proses:
Matriks A difaktorkan secara LU terlebih dahulu sehingga A = LU,
kemudian subtitusikan ke persamaan pertama sehingga menjadi LUx = B,
Lalu persaman tersebut diubah menjadi Ly = B, sehingga dapat diketahui
matriks y
Dan akhirnya solusi persamaan linier yaitu vector matriks x dapat
diketahui dengan menyelesaikan persamaan Ux=y.
6.
Persamaan linier disebut persamaan trivial jika semua solusi persamaan
tersebut adalah nol.

VI.

Hasil Percobaan
Program dalam Scilab
1.
Metode Doolittle
function [x]=doolittle(a,b)
n=size(a,1)
l=eye(n,n)
u=zeros(n,n)
for i=1:n,
u(1,i)=a(1,i);
end
for i=2:n,
l(i,1)=a(i,1)/u(1,1);
end
for j=2:n-1,
for k=j:n,
y=0;
for s=1:j-1,
y=y+l(j,s)*u(s,k);
end
u(j,k)=a(j,k)-y;
for q=j:n-1,
z=0;
for p=q+1:n,
z=z+l(p,s)*u(s,q);
l(p,q)=1/u(q,q)*(a(p,q)-z);
end
end
end

end
w=0;
for s=1:n-1,
w=w+l(n,s)*u(s,n);
end
u(n,n)=a(n,n)-w;
y=l\b;
x=u\y;
endfunction

2.

Metode Crout
function [x]=crout(a,b)
n=size(a,1)
l=zeros(n,n)
u=eye(n,n)
for i=1:n,
l(i,1)=a(i,1);
end
for i=2:n,
u(1,i)=a(1,i)/l(1,1);
end
for k=2:n-1,
for j=k:n,
y=0;
for s=1:k-1,
y=y+l(j,s)*u(s,k);
end
l(j,k)=a(j,k)-y;
for p=k:n-1,
z=0;
for q=p+1:n,
z=z+l(p,s)*u(s,q);
u(p,q)=1/l(p,p)*(a(p,q)-z);
end
end
end
end
w=0;
for s=1:n-1,
w=w+l(n,s)*u(s,n);
end
l(n,n)=a(n,n)-w;
y=l\b;
x=u\y;
endfunction

Hasil Ekesekusi Scilex


-->A=[3 -1 1;10 3 -2;1 1 -1]
A =
3.
- 1.
1.
10.
3. - 2.
1.
1. - 1.
-->A=[3 -1 1;10 3 -2;1 1 -1];
-->B=[12;-23;6];
-->getd
-->x=doolittle(A,B)

=
4.5
- 71.
- 72.5

-->x=crout(A,B)
x =
4.5
- 71.
- 72.5
-->x=A\B
x =
4.5
- 71.
- 72.5
-->A=[2 6 -1;1 -8 3;1 6 -10];
-->B=[0;0;0];
-->getd
Warning :redefining function: crout
Warning :redefining function: doolittle
-->x=doolittle(A,B)
x =
0.
0.
0.
-->x=crout(A,B)
x =
0.
0.
0.
-->x=A\B
x =
0.
0.
0.
-->A=[1 1 -3;2 2 -6;1 -9 2];
-->B=[9;18;3];
-->getd
Warning :redefining function: crout
Warning :redefining function: doolittle
-->x=doolittle(A,B)
!--error 27
division by zero...
at line
23 of function doolittle called by :
x=doolittle(A,B)
-->x=crout(A,B)
!--error 27
division by zero...
at line
23 of function crout called by :
x=crout(A,B)

-->x=A\B
warning
matrix is close to singular or badly scaled. rcond =
computing least squares solution. (see lsq)
x

=
0.
- 1.08
- 3.36

-->diary(0)

0.0000D+00