Anda di halaman 1dari 9

Halaman|1

UNIT VII TUGAS AKHIR


PEMROGRAMAN PERSAMAAN LINEAR


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

Landasan Teori
Pada penyelesaian perhitungan persamaan linier simultan, terdapat bermacam-macam cara.
Metode yang paling sederhana dan paling mudah yaitu cara eliminasi dan subsitusi. Namun
dengan cara itu mejadi lebih sulit jika diterapkan untuk persamaan linear simultan dengan lebih
dari tiga variable. Terdapat metode lain yang lebih mudah diterapkan dalam perhitungan, yaitu
faktorisasi LU. Untuk metode ini kita akan coba dua macam saja, yaitu metode doolittle dan
metode crout.
1. Metode Doolittle
Penyelesaian persamaan linear menggunakan faktorisasi LU dengan metode ini adalah
memfaktorkan matriks koefisien A menjadi dua matriks segitiga bawah L dan segitiga atas
U, dengan ketentuan yaitu diagonal matriks segitiga bawah L memiliki diagonal bernilai
satu semuanya.
A=LU
Misalnya untuk matriks A berordo 3x3, maka:
[

] [

] [

]
Dengan substitusi didapatkan nilai elemen-elemen matriks L dan U, yaitu:


Secara umum untuk matriks A yang berordo n akan difaktorkan menjadi matriks segitiga
bawah L = [m
jk
] dengan semua diagonal utamanya bernilai satu, dan matriks segitiga
bawah L = [u
jk
].

Persamaan linearsecara simultan dimodelkan bentuk matriksnya sebagai Ax = B. setelah
matriks koefisien A difaktorkan menjadi LU, maka model tersebut berubah menjadi
LUx=B. Urut-urutannya setelah faktorisasi yaitu:

Halaman|2

1. Mencari vektor y sebagai penyelesaian Ly=B
2. Mencari penyelesaian akhir x dari Ux=y.
2. Metode Crout
Untuk metode ini tetap hampir sama seperti metode Doolittle, namun perbedaannya
yaitu kalau Doolittle diagonal matriks segitiga bawah L yang bernilai satu semuanya,
sedangkan untuk metide crout yang bernilai satu semua adalah diagonal matriks segitiga
atas U.
Jika diberikan matriks A berordo 3x3, maka:
[

] [

] [


]
Kemudian perhitungan tersebut dikenakan dengan rumus seperti Doolittle namun dengan
sedikit perubahan.
Untuk selanjutnya sama seperti metode Doolittle.

Analisis Data
Pada percobaan kali ini akan diterjemahkan instruksi program di bawah ini menjadi sebuah
source code program di Scilab, instruksinya:
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. b. c.

6
23 2 3 10
12 3



z y x
z y x
z y x

0 10 6
0 3 8
0 6 2



z y x
z y x
z y x

3 2 9
18 6 2 2
9 3



z y x
z y x
z y x

Bandingkan hasilnya dengan menggunakan pembagian kiri (\), dan tunjukkan bahwa untuk
persamaan (b) adalah trivial atau penyelesaian nol, dan persamaan (c) tidak mempunyai
penyelesaian layak.
Dengan langkah-langkah di atas, maka source code program untuk masing-masing metode
adalah:


Halaman|3


1. Metode Doolittle
//fungsi doolittle
function [x]=doolitlle(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
//fungsi 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);
Halaman|4

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
Kemudian file tersebut disimpan dalam ekstensi sci. Setelah disimpan pada direktori yang sama
di mana Scilab sedang berjalan, file di-load ke Scilab dengan perintah:
-->getd
Kemudian fungsi tinggal dipanggil tetapi sebelumnya harus dilakukan pendefinisian variabel
yang dibutuhkan. Contoh cara pemanggilan fungsi:
-->doolittle(a,b)
Perhitungan dan pembahasan tiap-tiap nomor:
1. Soal nomor satu
Pertama-tama definisi dari variabel a dan b dengan sintaksis:
-->a = [ 3 -1 1;10 3 -2; 1 1 -1];
-->b = [12; -23; 6];
Kemudian nilai x dihitung dengan fungsi Doolittle atau crout yang sudah dibuat, dengan
cara memanggil fungsi tersebut. Sehingga ditemukan penyelesaiannya.

Dengan bentuk matriks persamaan tersebut bisa ditulis:

[



] [

] [

]

Halaman|5



Setelah dilakukan faktorisasi LU, matriks berubah menjadi:

[



] [



] [

] [

]

Kemudian dari persamaan matriks di atas, bentuk Ux=y :

[



] [

] [

]

Sehingga didapatkan nilai dari x adalah:
[

]
Jika nilai x dari fungsi LU dibandingkan dengan pembagian kiri:

-->x = a\b
x =
4.5
- 71.
- 72.5

Terbukti memiliki hasil yang sama.

2. Soal nomor dua
Pertama-tama definisi dari variabel a dan b dengan sintaksis:
-->a = [2 6 -1; 1 -8 3;1 6 -10];
-->b = [0;0;0];

Kemudian nilai x dihitung dengan fungsi Doolittle atau crout yang sudah dibuat, dengan
cara memanggil fungsi tersebut. Sehingga ditemukan penyelesaiannya.

Dengan bentuk matriks persamaan tersebut bisa ditulis:

[



] [

] [

]




Halaman|6

Setelah dilakukan faktorisasi LU, matriks berubah menjadi:

[



] [



] [

] [

]

Kemudian dari persamaan matriks di atas, bentuk Ux=y :

[



] [

] [

]

Sehingga didapatkan nilai dari x adalah:
[

]
Karena penyelesaian dari persamaan tersebut adalah 0, persamaan tersebut
dinamakan persamaan trivial.
Jika hasil tersebut dibandingkan dengan pembagian kiri:

-->x = a\b
x =

0.
0.
0.

Diperoleh nilai x yang sama, yaitu nol. Maka terbukti nilai dari pembagian kiri
sama dengan nilai dari fungsi.

3. Soal nomor tiga
Pertama-tama definisi dari variabel a dan b dengan sintaksis:
-->a = [1 1 -3; 2 2 -6 ; 1 -9 2];
-->b = [9 ; 18 ; 3];

Kemudian nilai x dihitung dengan fungsi Doolittle atau crout yang sudah dibuat, dengan
cara memanggil fungsi tersebut. Sehingga ditemukan penyelesaiannya.

Dengan bentuk matriks persamaan tersebut bisa ditulis:

[



] [

] [

]

Halaman|7

Namun pada saat pemfaktoran, terjadi pembagian dengan nol, sehingga
persamaan ketiga ini tidak mempunyai penyelesaian layak.
Tetapi jika dilakukan pembagian kiri:
-->x = a\b
Warning :
matrix is close to singular or badly scaled. rcond =
0.0000D+00
computing least squares solution. (see lsq).

x =
0.
- 1.08
- 3.36
Dapat dihitung nilai keluaran tetapi terdapat pesan peringatan, karena nilai matriks
terlalu kecil. Jadi nilai keluaran dari fungsi tidak sama dengan nilai keluaran dari
pembagian kiri.

Kesimpulan
1. Untuk mencari penyelesaian dari persamaan linear bisa digunakan matriks selain dengan
cara substitusi atau eliminasi.
2. Prosedur untuk menyelesaikan persamaan matriks Ax=B:
Matriks A difaktorkan, sehingga A = LU,
Kemudian substitusikan ke persamaan pertama, sehingga LUx = B,
Ubah persamaan menjadi Ly = B, sehingga dapat diketahui matriks y,
Nilai penyelesaian (vektor x) bisa dicari dengan menyelesaikan persamaan Ux=y.
3. Persamaan linier disebut persamaan trivial jika semua solusi persamaan tersebut adalah nol.

Halaman|8

Hasil

-->exec doolittle.sci
-->exec crout.sci

Nomor 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]
b =
12.
- 23.
6.

-->doolittle(a,b)
ans =

4.5
- 71.
- 72.5

-->crout(a,b)
ans =

4.5
- 71.
- 72.5

-->x = a\b
x =

4.5
- 71.
- 72.5
Nomor 2

-->a = [2 6 -1; 1 -8 3;1 6 -10]
a =
2. 6. - 1.
1. - 8. 3.
1. 6. - 10.

-->b = [0;0;0]
b =
0.
0.
0.

-->doolittle(a,b)
ans =
0.
0.
0.

-->crout(a,b)
ans =
0.
0.
0.

-->x = a\b
x =

0.
0.
0.












Halaman|9

Nomor 3:

-->a = [1 1 -3; 2 2 -6 ; 1 -9 2]
a =

1. 1. - 3.
2. 2. - 6.
1. - 9. 2.

-->b = [9 ; 18 ; 3]
b =

9.
18.
3.

-->doolittle(a,b)
!--error 27
Division by zero...
at line 25 of function doolittle called by :
doolittle(a,b)

-->crout(a,b)
!--error 27
Division by zero...
at line 25 of function crout called by :
crout(a,b)

-->x = a\b
Warning :
matrix is close to singular or badly scaled. rcond = 0.0000D+00
computing least squares solution. (see lsq).

x =
0.
- 1.08
- 3.36