Anda di halaman 1dari 10

Halaman|1

UNIT V
FUNGSI-FUNGSI SCILAB


Tujuan Praktikum
1. Mampu membuat program sederhana dengan Scilab untuk melakukan perhitungan
tertentu dengan nilai-nilai masukan yang berbeda-beda.
2. Bisa menggunakan fasilitas Scipad untuk membuat program Scilab.
3. Memahami kegunaan fungsi dan peranannya dalam pemrograman, terutama dalam
penentuan parameter dan hasil keluaran fungsi sebagai hasil perhitungan.

Landasan Teori
Adalah bagian terpenting dan banyak peranannnya dalam penguasaan Scilab itu sendiri,
yaitu tentang pemrograman. Untuk penguasaan tentang pemrograman Scilab kita perlu
memahami perintah-perintah tersebut sedemikian rupa sesuai dengan algoritma
perhitungannya.
A. Membuat Program Sederhana
Kadang kala dalam melakukan perintah dalam Scilab, sering kali kita menemukan perintah
yang digunakan berulang-ulang. Untuk itulah, agar lebih efektif maka perintah tersebut
dibuat dalam bentuk program.
Misalnya untuk menghitung koefisien regresi linier, perintah-perintahnya yaitu:
-->X=[ones(x) ; x]
-->A=X*X
-->B=X*y
-->A=A\B
Maka dibuatlah program yang berisi perintah-perintah di atas, lalu disimpan dalam file
berekstensi *.sci, misal regresi.sci.
Setelah itu di Scilab bisa dijalankan, misalnya seperti berikut :
-->x=[1 3 4 6 8 12]
-->y=[12 15 20 23 25 30]
-->exec regresi.sci
Maka akan didapatkan matriks koefisien regresi a yang menyusun persamaan regresi
linier dari data yang diberikan.
Untuk melihat direktori aktif Scilab digunakan perintah :
-->pwd
ans =
/home/data-praktikum/scilab_work
Halaman|2

Jadi ketika mengetikan perintah exec regresi.sci maka Scilab akan mengeksekusi file
/home/data-praktikum/scilab_work/32609/regresi.sci. Jika anda menyimoan file tersebut
ditetap yang berbeda, maka nama direktori yang lengkap harus ditulis. Misal disimpan di
/home/data-praktikum/scilab_work/32609/regresi.sci, maka perintahnya :

-->exec /home/data-praktikum/scilab_work/32609/regresi.sci

Untuk mengubah direktori aktif sehingga tidak perlu lagi menulis ulang nama direktori
tempat menyimpan file, digunakan program chdir(path), contoh :
-->chdir('/home/data-praktikum/scilab_work/32609)
-->exec regresi.sci
B. Mengedit Program
Scilab telah menyediakan fasilitas editor sendiri untuk membuat program-program
perhitungan Scilab. Cara pemanggilan program tersebut adalah :

--> scipad

Maka akan ditampilkan jendela editor program dengan fasilitas editor seperti editor teks
pada umumnya, seperti notepad pada Windows. Bedanya, di fasilitas Scilab ini
disediakan fasilitas Debugging untuk menyusuri letak kesalahan jika terjadi kekeliruan
dalam penulis program
Dalam Scilab ini, dapat dilakukan pengeditan lebih dari satu file program, karena dia
memiliki banyak jendela editor. Nama file program Scilab adalah berekstensi *.sce atau
*.sci, misalnya contoh.sce atau contoh.sci
Untuk mengedit program yang telah dibuat, digunakan perintah :

--> scipad contoh.sci

Maka secara otomatis Scipad akan membaca kembali file ~/contoh.sci. file ini kemudian
bisa diubah atau diedit sesuai keinginan.
C. Mendefinisikan Fungsi
Dengan menggunakan Scilab, kita bisa mendefinisikan fungsi sendiri yang memberikan
perhitungan tertentu sesuai dengan kebutuhan. Pada dasarnya, fungsi ini adalah program
yang apabila dijalankan membutuhkan parameter dari luar. Dan bisa menghasilkan
output dari hasil perhitungan serta dapat langsung disimpan dalam variable tertentu.
Bentuk umum definisi fungsi dalam Scilab yaitu :
Halaman|3


function [variable] = nama_fungsi (parameter)
<pernyataan>
<pernyataan>
<pernyataan>
endfunction

Pernyataan adalah segala bentuk perintah dalam Scilab, baik pernyataan bersyarat,
perulangan, perhitungan-perhitungan dan lainnya.
Contoh, jika kita ingin membuat program untuk mencari akar persamaan kuadrat.
Sehingga membutuhjkan parameter berupa koefisien persamaan kuadrat, dan
keluarannya berupa akar dari persamaan kuadrat tersebut. Maka definisinya adalah :

function [x1,x2] = akar_kuadrat(a,b,c)
x1=(-b+sqrt(b^2-4*a*c))/(2*a)
x2=(-b-sqrt(b^2-4*a*c))/(2*a)
endfunction

Analisis Data
Setelah membuka program Scilab, pada jendela Scilex ketik:

-->chdir ('~/data-praktikum/35393');
-->scipad

Perintah chdir akan mengubah direktori default untuk scilab ke folder yang ditentukan.
Sedangkan peritnah scipad akan menampilkan window scipad yang digunakan untuk
mengedit teks.

1. Membuat Program Sederhana
Setelah window scipad dibuka ketikkan program di bawah ini:

// Nama file : zlas.sci
// Program untuk membangkitkan matriks khusus dengan dimensi n
// Nilai n harus didinputkan lebih dahulu

s=[2 1;1 1];
for k=3:n,
v=s(1,:); w=s(:,1);
t=[k v;w s];
clear s; s=t;
end

Program tersebut membutuhkan nilai variabel n, agar fungsi tersebut bisa bekerja:

-->n = 5;
-->exec zlas.sci;

Halaman|4

Program di atas akan menghasilkan sebuah matriks berordo n x n. Nilai awal matriks
adalah [


]. Kemudian program akan melakukan looping sebanyak n-3 kali. Tiap
looping akan menghasilkan matriks [


] di mana k adalah n yang sekarang,
[( ) ( ) ], atau sebuah vekor baris dari matriks s awal,
[

( )
( )


atau sebuah vektor kolom dari matriks awal s. Sehingga akan dihasilkan matriks s baru
(misal n=3) [



]. Sehingga akan menghasilkan matriks s untuk n=5:
-->s
s =
5. 4. 3. 2. 1.
4. 4. 3. 2. 1.
3. 3. 3. 2. 1.
2. 2. 2. 2. 1.
1. 1. 1. 1. 1.

Dan untuk n=7, n=4, dan n=9 akan diperoleh matriks s sebagai berikut:
-->n = 7;
-->exec zlas.sci;
-->s
s =
7. 6. 5. 4. 3. 2. 1.
6. 6. 5. 4. 3. 2. 1.
5. 5. 5. 4. 3. 2. 1.
4. 4. 4. 4. 3. 2. 1.
3. 3. 3. 3. 3. 2. 1.
2. 2. 2. 2. 2. 2. 1.
1. 1. 1. 1. 1. 1. 1.
-->n = 4;
-->exec zlas.sci;
-->s
s =
4. 3. 2. 1.
3. 3. 2. 1.
2. 2. 2. 1.
1. 1. 1. 1.

-->n = 9;
-->exec zlas.sci;
-->s
s =
9. 8. 7. 6. 5. 4. 3. 2. 1.
8. 8. 7. 6. 5. 4. 3. 2. 1.
7. 7. 7. 6. 5. 4. 3. 2. 1.
6. 6. 6. 6. 5. 4. 3. 2. 1.
5. 5. 5. 5. 5. 4. 3. 2. 1.
4. 4. 4. 4. 4. 4. 3. 2. 1.
3. 3. 3. 3. 3. 3. 3. 2. 1.
2. 2. 2. 2. 2. 2. 2. 2. 1.
1. 1. 1. 1. 1. 1. 1. 1. 1.


Halaman|5

2. Program Mencari Akar
Program untuk percobaan kedua ini akan menghasilkan sebuah akar dari sebuah fungsi.
Akar dari suatu fungsi dicari dengan menggunakan metode newton, otomatis kita
membutuhkan f(x) dan f(x) kedua fungsi tersebut didefinisikan secara eksplisit. Program
kali ini menggunakan dua buah program:
Program pertama
// Nama file : zfungsi.sci
// program untuk menghitung f(x) dan F'(x), dengan x diketahui
// digunakan sebagai bagian dari algoritma Newton untuk
// menetapkan f(x);
// f(x) dan f'(x) harus didefinisikan secara eksplisit dalam
// file ini
function [f,ff] = zfungsi(x)
f=x^5-2*x^4+3*x^3-4*x^2+5*x-6
ff=5*x^4-8*x^3+9*x^2-8*x+5
endfunction

Program kedua
// Nama file : znewton.sci
// Algortima Newton untuk menyelesaikan f(x)=0;
// nilai taksiran awal x harus diinputkan lebih dahulu
function [x] = znewton(x)
k=0
[f,ff]=zfungsi(x)
while abs(f) > 0.0001
k=k+1
y=f/ff
x=x-y
[f,ff]=zfungsi(x)
end

program di atas membutuhkan nilai x sebagai nilai taksiran awal. Pada scilex ketik
perintah sebagai berikut:

-->getd('percobaan_5b');
-->x=0;
-->znewton(x)
ans =
1.4918006

Dapat dilihat hasil keluaran dari program tersebut adalah akar dari persamaan f(x).
Apabila f(x) digambar dengan grafik maka akan terlihat:
Halaman|6


Program pertama akan memasukkan x taksiran awal ke f sehingga diperoleh f(x) dan ff
sehingga diperoleh f(x) yang merupakan gradient garis singgung terhadap f(x).
Kemudian, program kedua akan mencari harga x dengan rumus gradient,

()
()

()
()


()

()



Sehingga akan didapatkan akar dari f(x)=0, yang semakin mendekat nol. Kemudian
program akan melakukan looping sampai terhitung nilai dari f(x)=0,0001 karena jika kita
mencari nilai sebenarnya dari f(x)=0 dengan program ini akan menghasilkan iterasi yang
tidak ada hentinya.
Apabila dimasukkan nilai taksiran awal x=5 dan x=-3, maka akan diperoleh hasil sebagai
berikut:

-->x=5;
-->znewton(x)
ans =
1.4917986
-->x=-3;
-->znewton(x)
ans =
1.4917985

Setelah diamati, dapat dilihat bahwa nilai taksiran x berapapun akan menghasilkan nilai
akar f(x) yang tidak jauh berbeda. Hanya berubah pada tingkatan

.

3. Program Invers Matriks
Percobaan kali ini akan membuat program untuk mencari invers dari sebuah matriks
dengan metode Sherman-Morison-Woodbury. Pada scipad ketikkan program sebagai
berikut:




Halaman|7

function [a]=smw(a)
// mencari invers matriks dengan sherman-morison-woodbury
// matriks a harus diinputkan lebih dahulu
[m,n]=size(a)
c=a-eye(n,n)
a=eye(n,n)
for k=1:n,
z=1+a(k,:)*c(:,k)
a=a-a*c(:,k)*a(k,:) / z
end
endfunction

Program tersebut memerlukan masukan nilai matriks bujur sangkar sembarang A. Dalam
scilex diketikkan:

-->A=[11 7 4;8 5 13;6 3 2]
A =
11. 7. 4.
8. 5. 13.
6. 3. 2.
-->inv(A)
ans =
- 0.3186813 - 0.0219780 0.7802198
0.6813187 - 0.0219780 - 1.2197802
- 0.0659341 0.0989011 - 0.0109890
-->getf smw.sci
-->smw(A)
ans =
- 0.3186813 - 0.0219780 0.7802198
0.6813187 - 0.0219780 - 1.2197802
- 0.0659341 0.0989011 - 0.0109890

Pertama program akan mencari ordo dari matriks a dengan fungsi size(a), nilai baris
disimpan di variabel m dan nilai kolom disimpan di variabel n. Kemudian program akan
mencari nilai c=A-eye(n,n) yaitu matriks A dikurangi matriks identitas berordo n x n.

[



] [



] [



]

Lalu, matriks a akan digantikan dengan matriks identitas yang sama dimensinya dengan A.

[



]

Kemudian, proses berlanjut ke proses iterasi, z=1+a(k,:)*c(:,k) yang berarti
z=1+(baris ke-k matriks a * kolom ke-k matriks c)

[ ] [

]

Dan a=a-a*c(:,k)*a(k,:) / z yang berarti a=a-(a*kolom ke-k matriks c * baris
Halaman|8

ke-k matriks a / z).

[



] [



] [

] [ ] [



]

Looping akan berulang sampai k=n, yaitu k=jumlah kolom matriks A. Sehingga hasil akhir
akan menunjukkan matriks invers dari A,

[



].

Kesimpulan
1. Scilab dapat digunakan untuk membuat program sederhana menggunakan Scipad.
2. Scipad bisa digunakan untuk membuat sebuah fungsi yang membutuhkan inputan dan
akan menghasilkan suatu nilai tertentu, bisa juga nilai tersebut disimpan ke dalam sebuah
variabel.
3. Untuk mengeksekusi sebuah program yang sudah dibuat, menggunakan perintah:
-->exec nama program;

Jawaban Pertanyaan
1. Kegunaan dan perbedaan dari fungsi:
a. exec() : digunakan untuk mengeksekusi program yang ada pada direktori
b. getf() : digunakan untuk memanggil fungsi yang ada pada program dalam
direktori
c. getd() : digunakan untuk memanggil program yang ada pada direktori
2. Flowchart:
a. Program Sederhana



Start
read n
s=[2 1;1 2];
k=3;
v=s(1,:); //baris pertama matriks s
w=s(:,1); //kolom pertama
matriks s
t= [k v;w s];
clear s;
s=t;
k=k+1;
k=n
write s
End
Halaman|9

b. Program Mencari Akar



Fungsi Pertama (zfungsi.sci)



Fungsi Kedua (znewton.sci)



Start
read x
znewton (x)
write x
End
Start
k=0
zfungsi
k=k+1;
y=f/ff;
x=x-y;
zfungsi
abs (f) > 0.0001
End
Start
f=x^5-2*x^4+3*x^3-4*x^2+5*x-6
ff=5*x^4-8*x^3+9*x^2-8*x+5
End
Halaman|10

c. Program Invers Matriks


Start
read A
[m,n]=size(a);
c=a-eye(n,n);
a=eye(n,n);
k=1
z=1+a(k,:)*c(:,k);
a=a-a*c(:,k)*a(k,:) / z;
k=k+1;
k=n
write A
-1

End

Anda mungkin juga menyukai