PENGENALAN SCILAB
Pendahuluan
Scilab merupakan paket software untuk komputasi numeris yang dikembangkan oleh
INRIA (Institut National de Recherche en Informatique et en Automatique) Prancis
pada tahun 1990. Sejak Mei 1993, pengembangan Scilab diserahkan kepada
Konsorsium Scilab. Kemudian, mulai tahun 1994 Scilab didistribusikan secara bebas
dan open source melalui internet.
Saat ini, Scilab sudah mulai digunakan secara luas pada dunia industri dan pendidikan.
Penerapan dari program Scilab banyak sekali terutama di bidang Teknik Elektro,
misalnya dalam hal kendali sistem, pemrosesan sinyal, perhitungan integral maupun
diferensial, statistika, dan masih banyak lagi.
Scilab berjalan pada hampir semua sistem Unix (termasuk GNU/Linux) dan Windows
(9X/2000/XP). Sampai saat ini (Agustus 2006), Scilab sudah mencapai versi 4.0.
Instalasi Scilab
http://www.scilab.org
http://scilabsoft.inria.fr
Untuk praktikum kali ini, digunakan program Scilab 4.0 for GNU/Linux platforms.
Silahkan download versi binary-nya dari alamat di atas. Setelah itu, ekstrak dan install.
Menjalankan Scilab
Untuk menjalankan Scilab cukup double-click icon Scilab 4.0 pada Desktop atau
ketikkan peritah berikut di konsole (terminal program) :
$ /path/to/scilab
Tanda --> diikuti kursor adalah menyatakan prompt, yang siap menerima perintah-
perintah Scilab. Sebagai permulaan, cobalah memanggil fasilitas bantuan (help).
Bentuk umum perintahnya adalah :
Perintah tersebut akan membuka sebuah jendela baru berisi daftar beserta keterangan
dari perintah-perintah yang ada di Scilab.
--> exec('SCI/demos/alldems.dem');
Bila semua aktivitas yang berhubungan dengan Scilab sudah selesai dan ingin keluar
dari program, ketikkan perintah :
--> exit
atau
--> quit
---oOo---
UNIT I
OPERASI DASAR MATRIKS
Tujuan Praktikum
1. Mempelajari berbagai macam operasi dasar matriks dalam Scilab.
2. Mampu mengaplikasikan Scilab untuk penyelesaian perhitungan dengan
menggunakan operasi-operasi matriks.
Landasan Teori
Dalam Scilab semua operasi berbasis pada perhitungan matriks. Setiap elemen
perhitungan selalu diasumsikan sebagai matriks. Dalam penyajiannya, matriks ini
terdapat tiga macam, yaitu skalar, vektor dan matriks.
Matriks
Matriks dapat disusun dalam bentuk matriks persegi panjang atau matriks bujur
sangkar. Matriks yang hanya memiliki satu baris dan satu kolom dinamakan skalar.
Sedangkan matriks yang hanya terdiri dari satu baris saja disebut vektor baris, atau satu
kolom saja disebut vektor kolom.
2 4 5
Misalnya matriks A = 3 2 1
9 6 4
Ketentuan penulisannya dalam Scilab yaitu antar elemen kolom dibatasi oleh spasi atau
koma (,) dan antar baris dibatasi oleh tanda titik koma (;) atau ganti baris. Sehingga
untuk matriks A di atas terdapat empat macam kombinasi penulisan pada Scilab, yaitu
:
-->A = [2 4 5; 3 2 1; 9 6 4] atau
-->A = [2,4,5; 3,2,1; 9,6,4] atau
-->A = [ 2 4 5
--> 3 2 1
--> 9 6 4 ] atau
-->A = [ 2,4,5
--> 3,2,1
--> 9,6,4 ]
Catatan :
Dalam pendefinisian matriks, kadangkala disertakan tanda titik koma (;), kadang juga
tidak. Pemberian titik koma dimaksudkan untuk tidak menampilkan isi matriks yang
didefinisikan tersebut.
Misalnya
-->T = [3 6 2] akan ditampilkan isi matriks T
T =
3. 6. 2.
Operator-operator tersebut dapat digunakan pada skalar maupun vektor. Untuk matriks
mengikuti aturan-aturan yang ditentukan.
b. Operasi perkalian matriks hanya dapat dilakukan bila jumlah kolom matriks kiri
sama dengan jumlah baris matriks kanan.
d. Operasi pembagian matriks (pada dasarnya tidak ada) dalam Scilab ada dua macam,
yaitu pembagian kiri (\) dan pembagian kanan (/).
e. Operasi pangkat berlaku antara matriks dan skalar, dan matriks harus bujur sangkar.
Operasi ini sama dengan perkalian berulang, misalkan :
A^3 = A*A*A.
Operasi Array
Terdapat juga bentuk operasi lain yaitu operasi array atau sering disebut sebagai operasi
per elemen matriks (elementwise operation), dan hanya diterapkan pada perkalian,
pembagian dan pangkat. Yaitu, dengan memberikan tanda titik sebelum operator yang
bersangkutan.
a. Perkalian Array
Perkalian antar elemen matriks A dan dituliskan dengan A.*B
b. Pembagian Array
Pembagian antar elemen matriks ada dua macam, yaitu pembagian kiri (\) dan
pembagian kanan (/). Untuk pembagian kiri, dituliskan A.\B, sedangkan untuk
pembagian kanan dituliskan A./B. Pada pembagian ini, terdapat hubungan A./B =
B.\A
c. Perpangkatan Array
Untuk pangkat dituliskan dengan A.^n dengan n adalah skalar pangkatnya.
Langkah-langkah Percobaan
Penulisan matriks A.
-->A = [2 -4 5; 0 12 1; -20 6 4] atau
-->A = [2,-4,5; 0,12,1; -20,6,4] atau
-->A = [2 -4 5
--> 0 12 1
1 2 3 − 1 0 8
A= ; B= . Dihitung A+B dan A-B.
4 5 6 3 3 4
-->A = [1 2 3; 4 5 6];
-->B = [-1 0 8; 3 3 4];
-->A+B
-->A-B
-->P = [7 -2 10 9];
-->Q = [5 6; 0 1; -1 3; 3 -7];
-->P*Q
d. Operasi Pembagian Matriks : pembagian kiri (\) dan pembagian kanan (/)
Pembagian kiri x = A\B adalah penyelesaian dari A*x=B, dan
Pembagian kanan x = B/A adalah penyelesaian dari x*A=B.
2 3 4 2
Diberikan matriks A = 2 6 7 ; B = 4 ; C = BT.
0 1 4 1
Hitung x dan y jika A*x = B dan y*A = C.
-->A = [2 3 4; 2 6 7; 0 1 4]
-->B = [2; 4; 1]
-->x = A\B
-->C = B’
-->y = C/A
e. Operasi Pangkat
2 3 4
Diberikan matriks A = 2 6 7 , tentukan A3.
0 1 4
-->A = [2 3 4; 2 6 7; 0 1 4]
-->A^3
C. Operasi Array
Operasi ini berlaku pada semua jenis matriks, dan perhitungannya dilakukan elemen
per elemen. Sehingga ukuran pasangan matriks yang dihitung harus sama.
− 1 2 10 2
Diberikan A = ; B=
9 − 3 4 − 5
Definisikan matriksnya :
-->A = [-1 2; 9 -3]
-->B = [10 2; 4 -5]
a. Perkalian Array
Perkalian antar elemen matriks A dan B :
-->A.*B
b. Pembagian Array
Untuk pembagian kiri :
-->A.\B
c. Perpangkatan Array
Untuk pangkat A.^2 dan B.^3
-->A.^2
-->B.^3
---oOo---
UNIT II
FUNGSI-FUNGSI SCILAB
Tujuan Praktikum
1. Mempelajari perintah-perintah dan fungsi-fungsi pengolahan matriks.
2. Memahami setiap kegunaan fungsi-fungsi tersebut dan mampu menerapkannya
dalam penyelesaian suatu kasus komputasi sederhana.
Landasan Teori
sign(x) : menghasilkan tanda x, 1 jika positif, -1 jika negatif, dan 0 jika nol
sign(B) = [1 0 -1]
log(x) : logaritma natural dari x, yaitu ln x. Jika dikenakan pada bilangan negatif
akan menghasilkan bilangan kompleks.
1 3 0 1,0986123
L= ; log(L) =
0,56 − 1,2 - 0,5798185 0,1823216 + 3,1415927i
C. Fungsi-fungsi Kompleks
Untuk perhitungan yang melibatkan bilangan kompleks, terdapat beberapa fungsi
untuk itu antara lain:
abs(Z) : modulus dari Z, yaitu |Z| = a 2 + b 2
Z = [3 + 4i 0,234 - 1,535i] ; abs(Z) = [5 1,5527334]
D. Fungsi-fungsi Trigonometri
Dalam perhitungan-perhitungan trigonometri disediakan fungsi-fungsi seperti:
sin(x) cos(x) tan(x) asin(x) acos(x) atan(x)
Pada fungsi sin, cos dan tan, x dalam satuan radian. Bilangan π = 3,14159265...
didefinisikan dalam variabel pi.
Dan untuk nilai tan(%pi/2) = 1,633E+16 adalah angka terbesar sehingga dapat
dianggap tak terhingga (~). Sedangkan, cos(%pi/2) = 6,123E-17 adalah nilai yang
hampir mendekati nol sehingga dapat dianggap 0.
Untuk asin dan acos, apabila parameter x memiliki harga pada |x| > 1,0; akan
menghasilkan angka imajiner. Dan juga untuk parameter x berupa matriks,
perhitungan akan dilakukan elemen per elemen matriks x sehingga akan
menghasilkan matriks dengan ukuran yang sama dengan x.
Catatan : Penulisan konstanta dalam Scilab (seperti pi, inf dan i) selalu diawali
dengan tanda %.
E. Matriks Khusus
Yaitu fungsi-fungsi untuk membangkitkan matriks, perhitungan-perhitungan
umum dan perhitungan khusus, antara lain:
Matriks-matriks khusus ini juga bisa dibuat dengan ukuran matriks tertentu yang
telah didefinisikan. Misalnya diberikan matriks A sebagai berikut:
− 3 4 1
A=
4 − 1 9
0 0 0
zeros(A) =
0 0 0
F. Operasi Matriks
max(x [,argument]) dan min(x [,argument]) : nilai terbesar dan terkecil dari
matriks.
5 − 1 9
A = 10 0 4
− 2 − 3 1
max(A) = 10 ; min(A) = -3
max( A, ' r ' ) = 10 0 9 ; min( A, ' r ' ) = − 2 − 3 1
9 − 1
max( A, ' c' ) = 10 ; min( A, ' c' ) = 0
1 − 3
sum(x [,argument]) dan prod(x [,argument]) : jumlah dan produk elemen matriks.
sum(A) = 23 ; prod(A) = 0
sum( A, ' r ' ) = 13 − 4 14 ; prod ( A, ' r ' ) = − 100 0 36
13 − 45
sum( A, ' c' ) = 14 ; prod ( A, ' c' ) = 0
− 4 6
Langkah-langkah Percobaan
d. Pembulatan ke atas
--> ceil(3.5675)
Angka skalar yang lain juga dilakukan dengan cara yang sama.
1. Hitung menggunakan fungsi abs dan sign pada skalar 3,89; 0,0000; -386,2 dan
matriks P diatas.
a. Nilai mutlak skalar
--> abs(3.89)
b. Tanda bilangan
--> sign(3.89)
2. Lakukan perhitungan dengan fungsi exp untuk skalar 0; 1; -1; 2; -1; 10; 4,56
dan matriks P di atas.
a. Untuk skalar, langsung hitung
--> exp(4.56)
3. Hitung dengan fungsi log pada skalar 1; 3; 10; 0,56 dan matriks P tersebut.
a. Untuk skalar, hitung secara langsung
--> log(3)
C. Fungsi-fungsi Kompleks
Menghitung nilai modulus bilangan kompleks 3 + 4i; 0,234 – 1,535i dan matriks
kompleks Z di bawah ini menggunakan fungsi abs dan bandingkan dengan
rumusnya yaitu |Z| = a 2 + b 2 . Pisahkan bagian nyata dan khayalnya dengan
fungsi real dan imag serta konjugatnya dengan fungsi conj.
5i 7 + 8i
Z = 1 − 3i 0
0,78 −1,23i − 21
a. Menghitung modulus kompleks serta pemisahan bagian nyata dan khayal pada
skalar, dilakukan secara langsung
--> abs(3 + %i*4)
--> abs(0.234 – %i*1.535)
D. Fungsi-fungsi Trigonometri
Hitung nilai sin(π/6), cos(π/2), tan(π/4) dan bandingkan dengan teorinya. Hitung
juga asin(1), asin(2), acos(0), acos(-3), atan(sqrt(3)), dan atan(~). Tunjukkan kalau
hasil perhitungan untuk asin dan acos bila |x| > 1,0 hasilnya akan imajiner.
--> sin(%pi/6)
--> cos(%pi/2)
--> tan(%pi/4)
--> asin(1)
--> asin(2)
--> acos(-3)
--> atan(sqrt(3))
--> atan(%inf)
E. Matriks Khusus
Beberapa fungsi dalam Scilab digunakan untuk komputasi yang diterapkan pada
matriks, antara lain untuk membangkitkan matriks dan menghitungnya.
b. Matriks nol
--> zeros(4,4)
--> zeros(6,3)
c. Matriks satuan
--> ones(4,4)
--> ones(6,3)
3 10 − 2
8 3 12
K = −1 0 1
− 9 3 25
− 18 5 0
F. Operasi Matriks
Hitung nilai terbesar dan terkecil serta jumlahan dan produk dari matriks B.
12 − 9 8 5
0 19 − 34 17
B=
− 2 6 20 11
12 − 44 2 1
3 5 6
A = − 1 2 − 9
4 1 1
Carilah nilai determinan serta diagonal dari matriks A. Inverskan matriks A dan
simpan di B dengan fungsi inv. Tunjukkan bahwa perkalian A dan inversnya B akan
menghasilkan matriks identitas.
1. Definisikan matriks A
2. Hitung determinan dan diagonalnya
--> det(A)
--> diag(A)
--> B = inv(A)
--> A*B
TUGAS :
1. Apa yang terjadi ketika anda menjalankan perintah eye(4)? Mengapa demikian?
2. Jelaskan kegunaan sekaligus perbedaan dari parameter ‘r’ dan ‘c’ pada fungsi
max(), min(), sum() serta prod()?
---oOo---
UNIT III
MENGGAMBAR GRAFIK
Tujuan Praktikum
1. Mengenal cara penggambaran grafik di dalam Scilab.
2. Mampu membuat grafik dari berbagai macam fungsi matematis
Landasan Teori
2. polar
Penggambaran perintah polar ini sama dengan perintah plot. Namun dalam
penggambarannya, sistem koordinat yang digunakan adalah koordinat polar.
Sehingga pasangan data antara x dan y misalnya, diterjemahkan sebagai jari-jari
untuk x dan sudut pada y. Contoh perintahnya adalah polarplot(x,y);
4. Atribut-atribut grafik
Terdapat bermacam-macam juga untuk atribut grafik ini. Antara lain berupa kisi,
teks, judul, label sumbu, label kurva.
a. xgrid, berfungsi untuk menampilkan grid/kisi pada sistem koordinat tempat
menggambar kurva.
b. xstring(x,y,’teks’), untuk memberikan tulisan label pada kurva tepat
pada posisi (x,y) berdasarkan koordinat kurva yang digambar.
c. xtitle(‘judul’,xlabel,ylabel), bagian judul berguna untuk
menuliskan judul pada kurva yang digambar dengan tulisan ‘judul’. Bagian
xlabel memberi label pada sumbu x sedangkan ylabel digunakan pada
sumbu y.
Pada penggambaran kurva yang telah dijabarkan di atas, akan ditampilkan pada jendela
tersendiri yaitu jendela gambar (Scilab Graphic). Dari jendela gambar ini dapat
dilakukan pencetakan maupun menyalin gambar untuk diekspor ke editor dokumen
anda, misalnya Open Office dan KWrite.
1. Pencetakan Gambar
Pada jendela gambar pilih menu File → Print. Akan muncul dialog print
halaman grafik yang akan dicetak. Disini bisa kita tentukan bentuk cetakan
grafik pada kertas yang akan digambar/dicetak. Terlebih dahulu, pilih color atau
black&white untuk warna grafik, dan bisa juga ditentukan Orientation pada
potrait untuk arah pencetakan ke bawah, atau landscape pada arah melebar.
Kemudian tekan OK.
2. Mengekspor Gambar
Pada jendela gambar, Pilih menu File → Export. Akan muncul jendela export,
pilih ekstensi yang sesuai kemudian ketik nama file grafik yang akan diexport,
kemudian tekan OK. Lewat Word Processor (seperti OpenOffice dll), grafik
ditambahkan dengan cara memilih menu Insert → Picture dan pilih grafik yang
sudah diekspor / disimpan tadi.
Langkah-langkah Percobaan
--> x=linspace(0,10);
Perintah ini berarti membuat vektor yang berisi angka mulai 0 sampai dengan
10 sebanyak 100 elemen.
2. Hitung nilai di sumbu vertical yaitu sumbu y
--> y=sin(x)
3. Plot kurva dari pasangan data yang dihasilkan dari perhitungan di atas, yaitu x
dan y.
--> plot(x,y)
Maka Scilab akan membuka frame baru untuk gambar yang dihasilkan.
Selanjutnya pada jendela gambar ini dapat diberikan perintah-perintah gambar yang
lain, misalnya memberi judul grafik yang dibuat, label sumbu, atau label kurva.
4. Memberi judul dan label sumbu x dan y pada grafik yang dibuat,
--> xtitle (‘Grafik fungsi trigonometri’,’x’,’y’)
5. Memberi label pada kurva. Posisi label teks ini terserah, lebih bagus jika berada
berdekatan dengan kurva
--> xstring (3, sin(3), ‘sin (x)’)
Grafik setelah diberi atribut judul, label dan teks yaitu sebagai berikut.
Dalam satu frame gambar bisa dibuat gabungan dari beberapa kurva dalam satu
sistem koordinat. Misalnya di sini digambar kurva y = sin(x) dan y = cos(x). Cuma
di sini kedua variabel hasil harus dibuat berbeda, seperti y1 dan y2 sehingga menjadi
y1 = sin(x) dan y2= cos(x).
Langkah-langkahnya :
1. Penentuan interval bisa dibuat sama untuk kedua kurva, misalnya 0 ≤ x ≤ 10.
2. Hitung kedua untuk y1 dan y2.
--> y1=sin(x)
--> y2=cos(x)
Pemberian atribut judul, label dan yang lainnya, caranya tetap sama seperti
langkah 4 sampai 5.
Hasilnya yaitu:
Pola grafik juga bisa dibuat dalam bentuk yang lain, misalnya garisnya putus-
putus atau menggunakan penanda titik, serta diberi warna tertentu. Misalnya
grafik di atas akan diberi warna hijau dengan pola garis titik-titik, sedangkan
satunya diberi warna magenta dan garisnya putus-putus.
Perintah penggambarannya :
--> plot (x, y1, ‘:g’, x, y2, ’--m’ )
6. Kemudian buat grafik y = sin (2*x); dan beri judul “Grafik fungsi y = sin
(2*x)”.
--> y = sin (2*x);
--> polarplot (x, y);
--> xtitle (‘Grafik fungsi y = sin (2*x)’,’x’,’y’);
Gambar yang dihasilkan:
❖ Misalnya akan digambarkan grafik y = log (x) dalam ketiga macam variasi di
atas.
Langkah-langkahnya:
1. Tentukan interval sumbu mendatar yaitu sumbu x, misalkan range 0 ≤ x ≤
100.
--> x = linspace(1,100);
2. Hitung fungsi logaritmiknya, y = log (x).
--> y = log (x);
3. Plot grafiknya pada sistem semilogaritmik sumbu x.
--> plot2d1(“eln”,x,y)
---oOo---
UNIT IV
GRAFIK REGRESI
Tujuan Praktikum
1. Mampu menerapkan penggambaran grafik di Scilab untuk membuat grafik
regresi.
2. Memahami cara perhitungan regresi dari sejumlah data untuk mendapatkan
grafik regresi dari data yang diberikan.
Landasan Teori
Dari analisis data mempergunakan metode kuadrat terkecil (least square) dari sepasang
data misal x dan y, didapat suatu model persamaan regresi. Dari persamaan ini
didapatkan juga grafik regresinya.
Dari kedua regresi tersebut akan dihitung koefisien regresinya dari data-data yang
diberikan.
A. Regresi Linear
Model persamaan regresi linear dari pasangan data (x,y) yaitu y = a0 + a1x. Bila
diberikan sepasang data x dan y.
x x0 x1 x2 …………………… xN
y y0 y1 y2 ……………………. yN
1 x1 y1
1 x y
... 1
2
1 1 1 a 1 1 1 ... 1 2
x 1 x3 0 = y3
1 x2 x3 ... x N a1 x1 x2 x3 ... x N
... ... ...
1 x y N
N
B. Regresi Polinomial
Model persamaan regresi polinomial dari pasangan data (x,y) yaitu y = a0 + a1x +
a2x2. Bila diberikan sepasang data x dan y,
x x0 x1 x2 ……………….… xN
y y0 y1 y2 ………………….. yN
1 x1 x12 y1
1 1 1 ... 1 1 x 2 x 22 a 0 1 1 1 ... 1 y 2
x ... x N 1 x3 ... x N y 3
1 x2 x3 x32 a1 = x1 x2 x3
x12 x 22 x32 ... x N2 ... ... ... a 2 x1
2
x 22 x32 ... x N2 ...
1 x x N2 y N
N
Langkah-langkah Percobaan
A. Regresi Linear
Sebagai contoh untuk perhitungan diberikan data misalnya :
--> X=[ones(x);x]
--> A=X*X'
--> B=X*y'
a
4. Menghitung koefisien persamaan regresi a0 dan a1, di mana vektor a = 0
a1
didapatkan sebagai penyelesaian dari A*a = B. Untuk mencari nilai a bisa
digunakan pembagian kiri.
--> a=A\B
Perintahnya :
--> xa=35:0.1:90
--> ya=a'*[ones(xa);xa]
6. Kemudian plot grafik dari pasangan data (x,y) sebagai titik-titik data dan (xa,ya)
sebagai kurva.
--> plot(x,y,'o',xa,ya,'-r')
Tanda ‘o’ menentukan pasangan data (x,y) diplot sebagai titik-titik data,
sedangkan tanda ‘-‘ sebagai kurva garis atau lengkung sesuai dengan pasangan
data (xa,ya) yang ditandai garis merah.
X =
1. 1. 1. 1. 1. 1.
36.9 46.7 63.7 77.8 84. 87.5
A =
6. 396.6
396.6 28365.28
B =
1458.
101176.3
a =
95.35242
2.2337002
B. Regresi Polinomial
Dengan data yang sudah ada sebelumnya, akan dihitung persamaan regresi
polinomialnya. Langkah-langkah perhitungannya hampir sama persis dengan
regresi linear, namun ada yang harus disesuaikan yaitu matriks X dan vektor ya
hasil perhitungan regresinya dari data xa.
--> X=[ones(x);x;x.^2]
Untuk mencari vector kuadrat dari nilai data x adalah x.^2, sebelum tanda
pangkat diawali dengan titik (.).
3. Langkah ketiga sama seperti pada perhitungan regresi linear. Untuk langkah
keemapat, mencari a dapat digunakan perintah:
--> a=inv(A)*B
--> ya=a'*[ones(xa);xa;xa.^2]
--> plot(x,y,'og',xa,ya,'-b')
X =
1. 1. 1. 1. 1. 1.
36.9 46.7 63.7 77.8 84. 87.5
1361.61 2180.89 4057.69 6052.84 7056. 7656.25
A =
6. 396.6 28365.28
396.6 28365.28 2144102.7
28365.28 2144102.7 1.681E+08
B =
1458.
101176.3
7496383.7
a =
121.69088
1.3042131
0.0074247
Bandingkan dengan kurva regresi linear. Tampak tidak jauh berbeda, dapat dilihat dari
koefisien x2 memiliki nilai yang cukup kecil sehingga dapat diabaikan. Namun
lengkungan yang dihasilkan masih dapat diamati.
Carilah Model Persamaan Regresi Linear dan Polinomial dari pasangan data berikut
x 1.2 2.8 4.3 5.4 6.8 7.9
y 2.1 11.5 28.1 41.9 72.3 91.4
Dengan disertai parameter-parameter pembentuknya (A, B dan a) yang menggunakan:
a. Perhitungan Scilab.
b. Perhitungan matematis manual.
Untuk mencari model gambar yang paling bagus gunakan range (selang) plot yang
paling sesuai.
-----oooOOOooo-----
UNIT V
DASAR PEMROGRAMAN SCILAB
Tujuan Praktikum
3. Mampu membuat program sederhana dengan Scilab untuk melakukan
perhitungan tertentu dengan nilai-nilai masukan yang berbeda-beda.
4. Bisa mempergunakan fasilitas SciPad untuk membuat program Scilab.
5. 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 peranannya dalam penguasaan Scilab itu sendiri,
yaitu tentang pemrograman. Untuk penguasaan tentang pemrograman Scilab kita perlu
memahami perintah-perintah yang akan digunakan dalam program, dan menyusun
perintah-perintah tersebut sedemikian rupa sesuai dengan algoritma perhitungannya.
Untuk itu, perintah-perintah tersebut dapat disusun sebagai program. Dan tinggal
menentukan parameter atau variabel masukannya saja, kemudian memanggil
program bersangkutan, akan didapatkan hasilnya.
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.
--> pwd
ans =
/home/novice/scilab_work
Jadi, ketika mengetikkan perintah exec regresi.sci maka Scilab akan mengeksekusi
file /home/novice/scilab_work/regresi.sci. Jika anda menyimpan file tersebut di
tempat yang berbeda, maka nama direktori lengkap harus ditulis. Misal, disimpan
di /home/novice/praktikum_tkd maka perintahnya adalah :
Untuk mempermudah, anda dapat mengganti direktori aktif sehingga tidak perlu
lagi menulis ulang nama direktori tempat menyimpan file. Gunakan perintah
chdir(‘path’). Contoh :
--> chdir(‘~/praktikum_tkd’);
--> exec regresi.sci
B. Mengedit Program
--> scipad
Maka akan ditampilkan jendela editor program dengan fasilitas editor seperti editor
teks pada umumnya, seperti Notepad pada Windows. Perbedaannya, di dalam
SciPad disertakan fasilitas Debugging, yaitu untuk menelusuri kesalahan pada
perintah-perintah program yang mungkin terjadi.
Proses pengeditan program adalah semudah mengedit teks atau dokumen biasa.
Setelah program disimpan dengan memilih menu File → Save, dan tentukan nama
filenya.
Dalam SciPad 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 file program yang sudah ada misalnya contoh.sci, maka
perintahnya :
Maka secara otomatis SciPad akan membaca kembali file ~/contoh.sci dan
membukanya di jendela SciPad baru untuk diedit, baik itu diubah, dihapus,
ditambahkan perintah-perintah tertentu dan sebagainya.
Apabila hendak menyimpan file program ke dalam file yang baru dengan nama
yang berbeda, pilih menu File → Save as kemudian tentukan nama file yang baru.
C. Mendefinisikan fungsi
Pernyataan adalah merupakan segala bentuk perintah dalam Scilab, baik pernyataan
bersyarat, perulangan, perhitungan-perhitungan, dan lainnya.
Misalkan kita akan buat program untuk mencari akar persamaan kuadrat sehingga
dibutuhkan 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
Langkah-langkah Percobaan
Sebelum memulai percobaan, buatlah sebuah folder pada direktori /home/user. Buka
console terminal, lalu ketikkan perintah :
$ mkdir ~/scilab_work/NIM_anda
Jalankan program Scilab. Pada jendela Scilex/Scilab yang telah terbuka, gantilah
direktori aktif ke folder yang baru saja dibuat. Mulailah pembuatan program dengan
menjalankan Scipad.
--> chdir(‘~/scilab_work/NIM_anda’);
--> scipad
simpanlah dengan nama zlas.sci di dalam direktori yang telah anda buat
sebelumnya.
--> n = 5;
--> exec zlas.sci;
--> s
Amati hasilnya yaitu matriks yang tersimpan dalam variabel s. Bagaimana jika n
diganti dengan harga lain, misalkan n = 7, n = 4, atau n = 9. Terangkan hasilnya. Apa
yang dapat anda pelajari dari program di atas.
$ mkdir ~/scilab_work/NIM_anda/percobaan_5b
a. Program pertama
b. Program kedua
[f,ff]=zfungsi(x)
while abs(f) > 0.0001
k=k+1
y=f/ff
x=x-y
[f,ff]=zfungsi(x)
end
--> getd(‘percobaan_5b’);
--> x=0;
--> znewton(x)
Amati hasilnya yaitu berupa akar dari persamaan yang dinyatakan dalam
zfungsi.sci. Bagaimana jika x diganti dengan nilai lain, misalnya x = 5 atau x = -3,
apakah nilai x hasil perhitungan akan berubah atau tetap sama? Terangkan hasilnya.
Buatlah program untuk menghitung matriks sebagai berikut dan simpan filenya
dengan nama smw.sci pada folder ~/scilab_work/NIM_anda.
function [a]=smw(a)
// mencari invers matriks dengan sherman-morrison-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
--> inv(A)
--> getf smw.sci
--> smw(A)
TUGAS :
1. Jelaskan kegunaan sekaligus perbedaan dari fungsi exec(), getf() dan getd()?
2. Buat flowchart dari masing-masing program di atas!
-----oooOOOooo-----
UNIT VI
ALGORITMA PEMROGRAMAN
Tujuan Praktikum
1. Memahami tentang algoritma pemrograman dan mampu menerapkannya dalam
pemrograman Scilab.
2. Mampu menerjemahkan algoritma proses komputasi tertentu menjadi program
dalam Scilab.
Landasan Teori
A. Alur Sekuensial
Merupakan bentuk alur paling dasar dalam pemrograman. Eksekusi perintah dijalankan
satu persatu urut dari atas ke bawah.
contoh :
a=[2 3 4;7 8 9];
b=[1;3;2];
x=a*b
Eksekusi program dijalankan urut satu-persatu dari atas ke bawah. Sehingga mula-mula
program membentuk matrik a yang berordo 2x3 dan kemudian membentuk matrix b
yang berordo 3x1. Kemudian program menghitung matrix x dari hasil perkalian matrik
19
a dikali matrik b. Hasilnya adalah matrix x =
49
B. Percabangan
Percabangan merupakan alur program yang berdasarkan syarat atau kondisi. Jalannya
program akan ditentukan oleh kondisi yang ditemui.
if <syarat> then
... <pernyataan benar> ...
[elseif <syarat> then
... <pernyataan benar selanjutnya> ... ]
[else
... <pernyataan salah> ... ]
end
contoh :
if a==5 then
x=x*a;
y=y-a;
b=[x y;x^2 y^2];
elseif a>5 then
b=[x x^2;y^2 x*y];
else
b=[x y];
end
Syarat yang dibentuk dari operator relasional di atas dapat pula digabung dengan
operator and (&) atau or (|).
2. Pernyataan Kondisional
Setiap pernyataan memiliki kondisi khusus dan akan dikerjakan apabila kondisi
tersebut ditemui.
Bentuk umum pernyataan ini:
select <kondisi>,
case <kondisi1> then <pernyataan1>
case <kondisi2> then <pernyataan2>
else <pernyataan default>
end
contoh penggunaannya :
select x,
case 1 then y=x+5;
case -1 then y=sqrt(x);
else y=a;
end
C. Perulangan / Iterasi
x=1;
for k=1:4,
x=x*k;
end
Blok perulangan for di atas hanya memiliki satu pernyataan yang mengalikan x dengan
k lalu menyimpan hasilnya di x. Baris k=1:4 artinya perulangan akan dimulai dengan
nilai k mula-mula satu untuk eksekusi blok pertama kali. Selanjutnya nilai k bertambah
1 untuk setiap perulangan. Perulangan terakhir terjadi ketika k bernilai 4. Sehingga blok
di atas akan diulang sebanyak empat kali. Blok perulangan for diakhiri dengan end.
x=1;
while x<14,
x=2*x;
end
Senada dengan perulangan for sebelumnya, blok while di sini juga hanya terdiri atas
satu pernyataan yaitu x = 2*x. Syarat yang digunakan untuk perulangan adalah x < 14.
Selama syarat tersebut terpenuhi perulangan akan terus dilaksanakan. Dalam
perulangan while, syarat juga disusun dengan operator relasional.
Langkah-langkah Percobaan
Dengan menggunakan editor dari Scilab ataupun text editor lainnya, ketiklah program-
program di bawah ini. Simpan dengan ekstensi *.sci (misal: programku.sci) kemudian
jalankan pada prompt Scilex/Scilab.
Untuk memanggil program dari script *.sci yang telah kita buat, gunakan perintah
getf('/direktori/program/program.sci') atau getd(‘/direktori/program/’).
a. Program pertama
function [l,u]=mylu1(a)
n=size(a,1)
a(2:n,1)=a(2:n,1)/a(1,1)
for k=2:n-1,
v=a(k,1:k-1)
for j=k:n,
w=a(1:k-1,j)
a(k,j)=a(k,j)-v*w
end
w=a(1:k-1,k)
for j=k+1:n,
v=a(j,1:k-1)
a(j,k)=(a(j,k)-v*w)/a(k,k)
end
end
a(n,n)=a(n,n)-a(n,1:n-1)*a(1:n-1,n)
l=tril(a,-1)+eye(n,n)
u=triu(a)
endfunction
b. Program kedua
function [l,u,p]=mylu2(a)
n=size(a,1)
r=1:n
[u,i]=max(abs(a(:,1)))
if i~=1,
x=a(1,:)
a(1,:)=a(i,:)
a(i,:)=x
s=r(1)
r(1)=r(i)
r(i)=s
end
a(2:n,1)=a(2:n,1)/a(1,1)
for k=2:n-1,
[u,i]=max(abs(a(k:n,k)))
j=i+k-1
if j~=k,
x=a(k,:); a(k,:)=a(j,:); a(j,:)=x;
s=r(k); r(k)=r(j); r(j)=s;
end
v=a(k,1:k-1)
for j=k:n,
w=a(1:k-1,j)
a(k,j)=a(k,j)-v*w
end
w=a(1:k-1,k)
for j=k+1:n,
v=a(j,1:k-1)
a(j,k)=(a(j,k)-v*w)/a(k,k)
end
end
a(n,n)=a(n,n)-a(n,1:n-1)*a(1:n-1,n)
l=tril(a,-1)+eye(n,n)
u=triu(a)
p=zeros(n,n)
for i=1:n,
p(i,r(i))=1
end
endfunction
Untuk percobaan yang kedua ini kita akan membuat sebuah program dengan
terlebih dahulu menyusun algoritmanya terlebih dahulu.
Algoritma Gauss
Algoritma untuk menyelesaikan persamaan perkalian matrik Ax=B.
Input : Matrix A dan B
Output : Solusi x atau pesan error bila ternyata A merupakan matriks singular.
Menyusun algoritma:
Mendefinisikan sebuah matriks A sebagai matriks gandeng dua matriks masukan
dan n adalah jumlah baris matriks A
8. Selesai
Keluaran x=[xij]
Membuat program
Program berikut disusun berdasarkan alur di atas.
function [x]=gauss(a,b)
A=[a b]
n=size(A,1)
for k=1:n-1,
j=k
while j<n & A(j,k)==0,
j=j+1
end,
if A(j,k)==0 then
error('tidak ada penyelesaian tunggal')
else
T=A(j,:); A(j,:)=A(k,:); A(k,:)=T
end,
for j=k+1:n,
m=A(j,k)/A(k,k)
for p=k+1:n+1,
A(j,p)=A(j,p)-m*A(k,p)
end,
end,
end
if A(n,n)==0 then
error('tidak ada penyelesaian tunggal')
else x(n)=A(n,n+1)/A(n,n)
end
for i=n-1:-1:1,
s=0
for j=i+1:n,
s=s+A(i,j)*x(j)
end,
x(i)=1/A(i,i)*(A(i,n+1)-s)
end
endfunction
Ketik program di atas lalu simpan. Jalankan fungsi gauss dengan terlebih dahulu
membuat matriks A dan B dari persamaan Ax = B sembarang. Hitung nilai x secara
manual lalu bandingkan dengan hasil perhitungan program.
Tugas : buat flowchart yang tepat dan jelas dari ketiga program di atas.
---oOo---
Tujuan Praktikum
1. Mampu menerapkan pemrograman Scilab pada perhitungan untuk menyelesaikan
persamaan linear simultan.
2. Memahami cara perhitungan persamaan linear dengan kedua metode yaitu metode
doolittle dan crout, dan dapat mengujinya dengan contoh persamaan linear
simultan.
Landasan Teori
A. Metode Doolittle
A = LU
Secara umum untuk matriks A yang berordo n akan difaktorkan menjadi matriks
segitiga bawah L = [mjk] dengan semua diagonal utamanya bernilai satu, dan matriks
segitiga atas U = [ujk]. Rumus-rumus untuk menghitung nilai-nilai mjk dan ujk yaitu :
a j1
m j1 = j = 2,…,n
u11
1 k −1
m jk =
u kk
a jk −
s =1
m js u sk
j = k+1,…,n; k ≥ 2
B. 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 metode crout yang bernilai satu semua adalah diagonal matriks
segitiga atas U.
Sehingga, rumus-rumus perhitungannya secara umum pada metode crout ini adalah :
m j1 = a j1 j = 1,…,n
k −1
m jk = a jk − m js u sk j = k,…,n; k ≥ 2
s =1
a1k
u1k = k = 2,…,n
m11
1 j −1
u jk = jk m js u sk
a − k = j+1,…,n; j ≥ 2
u jj s =1
Langkah-langkah Percobaan
Untuk percobaan kali ini, terjemahkan algoritma metode doolittle dan crout di atas
menjadi program Scilab. Langkah-langkah perhitungan keduanya sama, yaitu sebagai
berikut.
1. Persiapkan matriks A dan vektor B dari persamaan linear 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 linear
simultan yang disajikan di bawah ini.
a. 3x – y + z = 12 b. 2x + 6y – z = 0 c. x + y – 3z = 9
10x + 3y – 2z = –23 x – 8y + 3z = 0 2x + 2y – 6z = 18
x+ y– z= 6 x + 6y – 10z = 0 x – 9y + 2z = 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.
---oOo---