Anda di halaman 1dari 65

PANDUAN PRAKTIKUM

DASAR KOMPUTER DAN PEMROGRAMAN

Oleh :

Rahmat D.R. Dako

PROGRAM STUDI S1 TEKNIK INDUSTRI


JURUSAN TEKNIK INDUSTRI
UNIVERSITAS NEGERI GORONTALO
Juni, 2018
Praktikum 1
PENGENALAN SCILAB
1.1 Tujuan Praktikum
Diharapkan setelah praktikum ini mahasiswa sebagai dapat Mengenal SCILAB dan
interface yang disediakannya

1.2 Dasar Teori


1.2.1 Interface
Bentuk interface default dari Scilab dibagi menjadi 3 window utama: File Browser,
Scilab Console dan Variable Browser. Interface Scilab menggunakan sistem docking, yaitu
komponen-komponen interface dapat dipindah-pindah sesuai kebutuhan pengguna.

Gambar 1.1 Interface SCILAB

1.2.2 File Browser


File Browser berfungsi untuk membuka file dengan cepat, terutama file-file SciNotes.
1.2.3 Scilab Console
Scilab Console merupakan wadah atau halaman untuk menuliskan perintah pada
Scilab. Hasil eksekusi dari perintah akan langsung ditampilkan atau dilihat saat tombol enter
ditekan. Namun jika diberikan simbol semicolon (;) pada akhir perintah, maka hasil dari
perintah ini belum bisa ditampilkan secara langsung pada saat penekanan tombol enter pada
keyboard.
Langkah awal untuk menggunakan Scilab secara interaktif adalah dengan mengetikkan
perintah-perintah pada Console, kemudian menganalisis hasilnya dan melanjutkan proses
sampai hasil akhir dihitung sebagai contoh, fungsi disp digunakan dalam mode interaktif
untuk mencetak string/tulisan “Hello World”.

Gambar 1.2 Completion dalam Console.


-->s=" Hello World !"
s =
Hello World !
-->disp (s)
Hello World !

Pemunculan karaketer "-->" adalah secara default sudah dibuat oleh console ketika
Scilab pertama kali dibuka. Pengguna hanya bisa menulis pernyataan s="Hello
World!". Penekanan tombol <Enter> maka Scilab akan menampilkan s = Hello
World!. Selanjutnya, jika pengguna mengetikkan disp(s) maka Scilab akan
menampilkan Hello World!.
Perintah pada Console Scilab dapat diketikan secara langsung melalui keyboard.
Penggunaan tombol panah kiri  dan kanan  untuk keperluan menggeser cursor pada
baris dan penggunaan tombol <Backspase> dan <Suppr> berfungsi untuk memperbaiki
kesalahan-kesalahan dalam pengetikan perintah. Untuk mengakses perintah yang
sebelumnya sudah pernah diketikkan dapat menggukanan tombol panah ke atas. Hal ini
memungkinkan untuk melihat perintah-perintah sebelumnya dengan menggunakan tomboh
panah atas dan panah bawah pada keyboard.
Tombol <Tab> berguna mengaktifkan fitur completion, seperti pada contoh yang
ditunjukkan oleh gambar 1.2. Pengguna cukup mengetikan perintah :
-->disp

Selanjutnya jika tombol <Tab> ditekan, maka Scilab akan menampilkan sebuah listbox,
dimana berisi fungsi-fungsi yang berhubungan dengan fungsi yang diketikkan dengan tulisan
“disp”. Pengguna dapat menggunakan tomboh panah atas dan panah bawah untuk
menyeleksi fungsi yang diinginkan. Auto-completion ini sangat berguna untuk penanganan
dengan fungsi-fungsi, variabel-variabel, file-file dan grafik serta memudahkan penulisan
kode-kode lebih mudah dan cepat.

1.2.4 Variable Browser


Pada Variable Browser, variabel yang telah digunakan dapat dilihat baik dimensi,
dan tipenya. Variable Browser memudahkan pengguna untuk mengingat variabel yang telah
digunakan, terutama jika variabel yang digunakan jumlahnya banyak. Jika pada salah stu
variabel diklik dua kali, maka akan terbuka jendela Variable Editor.

1.2.5 Variable Editor


Variable Editor memungkinkan pengguna untuk melihat isi variabel dalam bentuk
spreadsheet. Dengan variable editor, nilai variabel-variabel dapat diubah. Selain itu juga
variabel dapat diplot dengan cara memilih variabel, dan meng-klik tombol plot dan memilih
tipe plot.
Gambar 1.3 Variable Editor

Gambar 1.4 Pilihan Plot


1.2.6 Command History
Command History menampilkan perintah-perintah yang telah kita jalankan.

1.2.7 SciNotes
SciNotes memiliki fungsi yang sama dengan Scilab Console. Namun, perbedaannya
pada Scilab console perintah yang dituliskan langsung dapat dieksekusi setiap barisnya
dengan menekan tombol enter, sedangkan perintah-perintah yang ditulis pada SciNotes
hanya dapat dilihat hasil peritahnya dengan menekan tombol execute. SciNotes berguna
saat perintah yang akan ditulis terlalu panjang.
Gambar 1.5 SciNotes
SciNotes dapat dibuka melalui Application>SciNotes. SciNotes mempunyai banyak tab
sehingga dapat dibuat beberapa file sekaligus dalam satu layar.
Tipe eksekusi pada Execute ada beberapa, yakni :
 execute file with no echo
Perintah ini akan mengeksekusi file namun tidak memperlihatkan hasilnya. Untuk
mengetahui hasil eksekusi biasanya digunakan fungsi disp(x) dengan x adalah variabel
yang ingin diperlihatkan hasilnya pada Scilab Console.
 execute file with echo
Perintah ini akan mengeksekusi file dengan memperlihatkan proses yang terjadi.
Proses yang dieksekusi akan diperlihatkan pada Scilab Console.
 execute selection with echo
Perintah ini akan mengeksekusi hanya bagian yang diblok lalu menampilkanya pada
Scilab Console.
 save and execute
Save and execute tidak akan langsung mengeksekusi perintah, namun memuat ke
dalam Scilab Console, maka tidak ada hasil yang diperlihatkan. Variabel dalam SciNotes
akan tercantum dalam Variable Browser, dan fungsi dalam SciNotes bisa langsung
dipanggil.
 save and execute all
Sama seperti save and execute, namun semua file akan disimpan dan dieksekusi.
echo adalah diperlihatkanya hasil dari suatu perintah, sebagai contoh:
-->a=0
a =
0.
1.3 Kegiatan Praktek
1. Ketiklah perintah berikut pada Console Scilab
atoms

2. Selanjutnya, tekan tombol <Tab>. Apa yang terjadi ?


3. Selanjutnya, ketiklah huruf “I”, dan tekan lagi tombol <Tab>, apa yang terjadi ?
4. Dalam pembuatan program dengan menggunakan Scilab, kadang digunakan fungsi
exec yang dikombinasikan dengan fungsi ls, yang akan menampilkan daftar file
dan folder pada folder yang sedang digunakan. Variabel-variabel SCI berisi nama
dari folder dari Scillab yang terpasang. Juga sering digukanan pwd, yang
menampilkan folder yang sedang digunakan. Pengguna sering menggunakan fungsi-
fungsi tersebut untuk mengeksekusi kode-kode yang disediakan oleh Scilab. Ketiklah
pernyataan-pernyataan berikut pada console dan perhatikan apa yang terjadi.
pwd
SCI
ls(SCI+"/ modules ");
ls(SCI+"/ modules / graphics / demos ")
exec (SCI+"/ modules / graphics / demos /2 d_3d_plots / contourf .dem.sce")
exec (SCI+"/ modules / graphics / demos /2 d_3d_plots / contourf .dem.sce");

5. Hasil kegiatan praktek dicatat pada laporan sebagai dokumentasi hasil kegiatan
praktek yang anda lakukan.

1.4 Tugas Mandiri


Berikan penjelasan hasil yang anda dapatkan pada kegiatan praktek di atas.
pwPraktikum 2
KOMPONEN DASAR BAHASA PEMROGRAMAN

2.1 Tujuan Praktikum


Diharapkan setelah praktikum ini mahasiswa sebagai praktikan dapat :
1. Mengetahui dan memahami konsep dasar pembentukan variabel, penamaan
variabel dan penulisan komentar pada Scilab.
2. Mengetahui dan mampu menggunakan dasar-dasar fungsi matematika dan operasi-
operasi perhitungannya, serta bilangan kompleks.
3. Mengetahui dan memahami penggunaan tipe-tipe variabel.
2.2 Dasar Teori
Scilab adalah bahasa interpreter yaitu bahasa yang memungkinkan untuk memanipulasi
variabel secara dinamis.
2.2.1 Pembentukan Variabel Real
Scilab sebagai bahasa interpreter, dalam penggunaannya variabel tidak perlu
dideklarasikan terlebih dahulu sebelum menggunakannya. Variabel dibentuk saat pertama
kali diset. Sebagai contoh, variabel real x dibentuk dan diset sama dengan 1 dan digunakan
perkalian dengan dirinya sendiri. Dalam scilab, operator “=” berarti bahwa variabel yang ada
di sebelah kiri tanda ini adalah hasil pembentukan variabel yang ada di sebelah kanannya.
-->x=1
x = 1.
-->x = x * 2
x =
2.
Nilai dari variabel ditampilkan pada saat perintah dieksekusi. Hasil ini tidak langsung
ditampilkan jika digunakan karakter semicolon (;), seperti yang ditunjukkan pada contoh
berikut :
-->y=1;
-->y=y*2;

Operator-operator aljabar umum ditampilkan dalam tabel 2.1. Dalam tabel terlihat bahwa
operator pangkat disimbolkan dengan karakter “^”, yang berarti x2. Pada Scilab pernyataan
“x^2” ekilaven dengan “x**2”.
Tabel 2.1 Operator-operator matematika dasar dalam Scilab
+ Penjumlahan
- Pengurangan
* Perkalian
/ Pembagian kanan, contoh x/y = xy-1
\ Pembagian kiri, contoh x\y = x-1y
^ Pemangkatan
** Pemangkatan, sama dengan ^
‘ Transpose atau conjugate

2.2.2 Penamaan Variabel


Panjang nama variabel dapat disesuaikan dengan keinginan pengguna, tetapi hanya
24 karatert pertama yang akan diambil oleh Scilab. Sebagai konsistensinya, penulisan nama
variabel sebaiknya jangan lebih dari 24 karakter. Semua kode ASCII dari “a” sampai dengan
“z”, dari “A” sampai “Z” dan angka dari “0” sampai “9”, dibolehkan serta karakter
tambahan "%", "_", "#", "!", "$", "?". Namun yang perlu diperhatikan bahwa penamaan
variabel yang diawali oleh karakter “%” memiliki arti khusus dalam Scilab (Nanti akan
dijelaskan pada bagian yang lain). Scilab adalah case sensitive, yang berarti bila variabel yang
dituliskan dengan huruf besar dan huruf kecil akan berarti dua variabel yang berbeda.
Seperti yang ditunjukkan pada contoh berikut :
-->A = 2
A =
2.
-->a = 1
a =
1.
-->A
A =
2.
-->a
a =
1.
2.2.3 Komentar dan baris lanjutan (continuation lines)
Setiap baris perintah yang diawali dengan dua tanda slashes (garis miring) adalah
merupakan komentar dan tidak akan dieksekusi oleh Scilab. Seperti komentar dalam bahasa
C yaitu “/* … */. Jika ada pernyataan yang terlalu panjang dituliskan pada satu baris, baris
lanjutannya dapat dituliskan pada baris selanjutnya. Kondisi ini disebut continuation lines.
Pada Scilab, baris-baris yang diakhiri dengan dua titik (..) berarti lanjutannya ada pada baris
selanjutnya. Sebagai contoh :
-->// This is my comment .
-->x =1..
-->+2..
-->+3..
-->+4
x =
10.

2.2.4 Fungsi-Fungsi Dasar Matematika


Tabel 2.2 dan tabel 2.3 menyajikan daftar fungsi-fungsi dasar matematika. Beberapa
fungsi ini memiliki satu input argument dan mengembalikan satu output argument. Fungsi-
fungsi ini divektorkan sebagai input dan output argument dari matriks. Hal ini
memungkinkan menghitung data dengan kinerja yang lebih tinggi, tanpa perulangan.
Sebagai contoh digunakan fungsi cos dan sin untuk memeriksa persamaan matematika
cos(x)2 + sin(x)2 = 1 :
-->x = cos(2)
x =
- 0.4161468
-->y = sin (2)
y =
0.9092974
-->x^2+y^2
ans =
1.

Tabel 2.2 Fungsi Matematika Dasar : Trigonometri

Tabel 2.3 Fungsi Matematika Dasar : Fungsi Lain

2.2.5 Variabel-variabel matematika Pre-defined


Dalam Scilab, beberapa variabel matematika adalah variabel-variabel pre-defined
atau bisa diartikan sebagai variabel-variabel yang telah dideklasarikan oleh Scilab. Variabel-
variabel ini namanya diawali oleh karakter persen “%”. Variabel-variabel ini memiliki arti
secara matematika yang diringkaskan pada tabel 2.4. Contoh berikut digunakan variabel %pi
untuk memeriksa persamaan persamaan matematika cos(x)2 + sin(x)2 = 1 :
-->c=cos(%pi)
c =
- 1.
-->s=sin(%pi)
s =
1.225D -16
-->c^2+s^2
ans =
1.
Tabel 2.4 Variabel-variabel matematika pre-defined
%i Bilangan imajiner i
%e Nilai konstanta Euler e
%pi Nilai konstanta matematika 

Pada contoh terlihat bahwa nilai sin(), tidak benar-benar sama dengan 0. Hal ini berarti
bahwa Scilab menyimpan nilai real dengan nilai floating point yaitu dengan presisi yang
terbatas.
2.2.6 Boolean
Variabel-variabel boolean dapat disimpan sebagai nilai true dan false. Dalam Scilab
true ditulis dengan %t atau %T dan false ditulis %f atau %F. tabel 2.5 menyajikan beberapa
operator pembanding yang tersedia dalam Scilab. Operator-operator ini mengeluarkan nilai-
nilai boolean dan mengambil input semua tipe data dasar (seperti, angka-angka real dan
kompleks, integer dan string). Contoh berikut ditampilkan beberapa perhitungan aljabar
dengan boolean-boolean Scilab :
-->a = %T
a =
T
-->b = ( 0 == 1 )
b =
F
-->a&b
ans =
F
Tabel 2.5 Operator-operator pembanding
a%b Logika and
a|b Logika or
~a Logika not
a==b true jika dua pernyataan adalah sama
a~=b atau a <>b true jika dua pernyataan adalah beda
A<b true jika a lebih kecil dari b
a>b true jika a lebih besar dari b
A<=b true jika a lebih kecil atau sama dengan b
a>=b true jika a lebih besar atau sama dengan b

2.2.7 Bilangan Kompleks


Scilab menyediakan bilangan kompleks yang disimpan sebagai pasangan angka
floating point. Variabel pre-defined %i menyatakan bilangan imajiner yang berarti i2 = 1.
Semua fungsi dasar yang telah dijelaskan seperti contoh sin sebelumnya dinyatakan
sebagai bilangan kompleks. Hal ini berarti bahwa jika argumen inputnya adalah sebuah
bilangan kompleks, maka keluarannya juga bilangan kompleks. Tabel 2.6 menampilkan
fungsi-fungsi untuk mengolah bilangan kompleks. Pada contoh berikut, variabel x diset sama
dengan 1, dan dilakukan beberapa operasi dasar padanya, seperti menguji apakah
bilangannnya adalah bagian real atau imajiner. Perhatikan, bagaimana tanda petik satu “ ’”,
digunakan untuk menghitung conjugate dari sebuah bilangan kompleks.
-->x = 1+%i
x =
1. + i
--> isreal (x)
ans =
F
-->x'
ans =
1. - i
-->y = 1-%i
y =
1. - i
-->real (y)
ans =
1.
-->imag (y)
ans =
- 1.

Terakhir diperiksa bahwa persamaan (1 + i)(1 – i)2 = 1 – i2 = 2, diverifikasi


oleh Scilab
-->x*y
ans =
2.

Tabel 2.6 Fungsi dasar bilangan kompleks


real Bagian real
imag Bagian imajiner
imult Perkalian dengan i, unit imajiner
isreal Keluaran true jika variabel tidak memiliki masukan bilangan kompleks
2.2.8 Integer
Variabel integer dapat dibuat dengan beberapa variasi tipe pada Scilab. Fungsi-fungsi
yang memungkinkan untuk membuat variabel-variabel ini disajikan pada tabel 2.7.

Tabel 2.7 Tipe-tipe data Integer dari Scilab


int8 int16 int32
uint8 uint16 uint32

a. Tinjauan umum integer


Terdapat hubungan langsung antara bit-bit angka yang digunakan untuk
menyimpan dan jangkauan nilai yang dapat diolah menggunakan integer. Jangkauan
dari sebuah variabel integer tergantung pada bit-bit angkanya.
 Sebuah integer bertanda dengan n-bit, jangkauan nilanya adalah [ -2n-1 , 2n-1 – 1].
 Sebuah integer tidak bertanda dengan n-bit, jangkauan nilanya = [ 0 , 2n – 1].
Sebagai contoh, sebuah integer bertanda dengan 8-bit, dibuat dengan fungsi int8,
dapat menyimpan nilai pada jangkauan [ -27 , 27 – 1], atau secara mudah ditulis [ -
128, 127]. Pemetaan dari tipe-tipe berhubungan dengan jangkauan dari nilai-nilai
yang disajikan dalam tabel 2.8.
Tabel 2.6 Fungsi-fungsi integer Scilab
y=int8(x) Sebuah 8-bit integer bertanda dalam [-27 , 27 – 1] = [-128, 127]

y=uint8(x) Sebuah 8-bit integer tidak bertanda dalam [0 , 28 – 1] = [0, 255]

y=int16(x) Sebuah 16-bit integer bertanda dalam [-215 , 215 – 1] = [-32768, 32767]

y=uint16(x) Sebuah 16-bit integer tidak bertanda dalam [0 , 216 – 1] = [0, 65535]

y=int32(x) Sebuah 32-bit integer bertanda dalam [-231 , 231 – 1] = [-2147483648, 2147483647]

y=uint32(x) Sebuah 32-bit integer tidak bertanda dalam [0 , 232 – 1] = [0, 4294967295]

--> format (25)


-->n=32
n =
32.
-->2^n – 1
--> ans =
4294967295.
-->i = uint32(0)
i =
0
-->j=i-1
j =
4294967295
-->k = j+1
k =
0

b. Konversi antar integer


Terdapat fungsi untuk mengubah/mengkonversi dari dan menjadi tipe data
integer. Fungsi-fungsi ini ditampilkan pada tabel 2.7.
Tabel 2.7 Fungsi-fungsi Konversi integer
iconvert Konversi ke representasi integer
inttype Tipe-tipe dari integer

Fungsi inttype berfungsi memeriksa tipe dari sebuah variabel integer. Tergantung
pada tipe, keluran fungsi adalah sebuah nilai, yang secara ringkas dapat ditampilkan
pada tabel 2.8.
Tabel 2.8 Tipe-tipe keluaran integer yang dari fungsi inttype
Inttype(x) Tipe
1 8-bit integer bertanda
2 16-bit integer bertanda
4 32-bit integer bertanda
11 8-bit integer tidak bertanda
12 16-bit integer tidak bertanda
14 32-bit integer tidak bertanda
Ketika dua integer dijumlah, tipe-tipe dari operan dianalisis: hasil tipe integer lebih
besar, sehingga hasilnya dapat disimpan. Dalam kode berikut, sebuah integer 8-bit i
(dimisalkan inttype = 1) dan sebuah integer 16-bit j (dimisalkan inttype = 2). Hasilnya
disimpan pada variabel 16-bit integer bertanda k.
-->i= int8(1)
i =
1
-->inttype(i)
ans =
1.
-->j= int16(2)
j =
2
--> inttype(j)
ans =
2.
-->k=i+j
k =
3
-->inttype(k)
ans =
2.
2.2.9 Variabel ans
Ketika sebuah proses komputasi atau perhitungan dilakukan dan hasilnya tidak
disimpan ke dalam sebuah variabel output, hasil ini disimpan ke dalam variabel default yaitu
variabel ans. Sekali variabel ini didefinsikan, variabel ini dapat digunakan sebagai variabel
tertentu. Sebagai contoh, perhitungan exp(3) selanjutnya disimpan ke dalam variabel ans.
Kemudian isi variabel ini dijadikan sebagai variabel reguler.
-->exp (3)
ans =
20.08553692318766792368
-->t = log(ans)
t =
3.
Secara umum, variabel ans sebaiknya digunakan hanya dalam kondisi interaktif agar
lebih mempermudah perhitungan tanpa harus mendefinisikan sebuah variabel yang baru.
2.2.10 String
String dapat disimpan dalam variabel dengan cara dituliskan diantara tanda petik dua
“ ” ”. Operasi penggabungan dilakukan dengan menggunakan operator “+”. Sebagai
contoh :
-->x = "foo"
x =
foo
-->y="bar"
y =
bar
-->x+y
ans =
foobar

2.3 Kegiatan Praktek


1. Ketiklah setiab baris berikut console Scilab, jalankan, kemudian catatlah apa hasil
perhitungan pada lembar kerja anda.
2 * 3 + 4
2 + 3 * 4
2 / 3 + 4
2 + 3 / 4

2. Ketiklah setiab baris berikut console Scilab, jalankan, kemudian catatlah apa hasil
perhitungan pada lembar kerja anda.
2 * (3 + 4)
(2 + 3) * 4
(2 + 3) / 4
3 / (2 + 4)
3. Ketiklah setiab baris berikut console Scilab, jalankan, kemudian catatlah apa hasil
perhitungan pada lembar kerja anda.
2 * (3 + 4)
(2 + 3) * 4
(2 + 3) / 4
3 / (2 + 4)

4. Ketiklah setiab baris berikut console Scilab, jalankan, kemudian catatlah apa hasil
perhitungan pada lembar kerja anda.
Sqrt (4)
Sqrt (9)
Sqrt (-1)
Sqrt (-2)
Exp (1)
log(exp(2))
exp(log(2))
10^2
log10 (10^2)
10^ log10 (2)
sign (2)
sign ( -2)
sign (0)

5. Ketiklah setiap baris berikut console Scilab, jalankan, kemudian catatlah apa hasil
perhitungan pada lembar kerja anda.
cos (0)
sin (0)
cos(%pi)
sin(%pi)
cos(%pi /4) - sin(%pi /4)

6. Hasil kegiatan praktek dicatat pada laporan sebagai dokumentasi hasil kegiatan
praktek yang anda lakukan.

2.4 Tugas Mandiri


1. Berikan penjelasan hasil dari setiap nomor yang anda kerjakan pada bagian kegiatan
praktek.
2. Jelaskan secara singkat hirarky dari operator matematika berdasarkan hasil yang
anda dapatkan pada kegiatan praktek.
3. Buatlah program sederhana pada Scinotes untuk menghitung keliling dan luas
lingkaran, dengan inputan jari-jari yang dimasukkan melalui keyboard oleh
pengguna.
4. Buatlah program untuk menghitung penjumlahan, pengurangan, perkalian,
pembagian dan pangkat bilangan kompleks. Buatlah program pada Scinotes dengan
setiap operasinya dibuat dalam bentuk menu.
Praktikum 3
DASAR MATRIKS
3.1 Tujuan
Diharapkan setelah praktikum ini mahasiswa sebagai praktikan dapat mengetahui dan
memahami :
a. konsep dasar pembentukan matriks dengan menggunakan fungsi-fungsi yang ada pada
scilab.
b. pengaksesan elemen-elemen matriks
c. penggunaan operator-operator khusus dalam pengaksesan matriks
3.2 Dasar Teori
Dalam Scilab, matriks memegang peran yang penting. Pada bagian ini akan
diperkenalkan matriks dan bagaimana membuat dan mengoperasikan matriks.
3.2.1 Pendahuluan
Dalam Scilab, tipe data dasar adalah matriks yang didefinsikan :
 Jumlah baris,
 Jumlah kolom, dan
 Tipe data
Tipe data dapat berupa tipe data real, integer, boolean, string dan polinomial. Ketika dua
matriks memiliki jumlah kolom dan baris yang sama, maka dapat dikatakan bahwa matriks
tersebut bentuknya adalah sama. Pada Scilab, vektor adalah sebuah bagian dari matriks,
dimana terdiri dari satu baris atau satu kolom. Variabel-variabel skalar sederhana tidak
tersedia dalam scilab : sebuah variabel skalar adalah matriks dengan satu baris dan satu
kolom. Jadi skalar pada Scilab adalah merupakan matriks dengan dengan ordo 1x1. Sehingga
dapat dikatakan bahwa desain utama dari Scilab adalah untuk matriks dengan variabel-
variabel real. Oleh karena itu, dimungkinkan melakukan perhitungan operasi aljabar linier
dengan bahasa tingkat tinggi. Secara desain Scilab dibuat untuk dapat melakukan
perhitungan operasi matriks secepat mungkin. Blok Building untuk fitur matriks ini dalam
Scilab disimpan dalam struktur data secara internal yang dapat diolah pada tingkatan
interpreter. Sebagian besar operasi-operasi aljabar linier seperti penjumlahan, pengurangan,
transpose atau perkalian dilakukan dengan kompilasi, optimasi dan kode-kode sumber.
Operasi-operasi ini dilakukan dengan menggunakan operator umum “+”, “-“ dan tanda
petik satu ” ’ ”. Sehingga pada tingkatan Scilab kode-kode untuk pengoperasiannya menjadi
lebih mudah dan cepat.
Dengan operator-operator tingkat tinggi ini, kebanyakan algoritma matriks tidak
memerlukan proses looping (perulangan) lagi. Kenyataannya sebuah kode Scilab untuk
operasi yang sama dengan perulangan lebih lambat 10 sampai 100 kali. Fitur ini pada Scilab
dikenal dengan vectorization (vertorisasi). Untuk mempercepat penerapan sebuah algoritma
yang diberikan, pengembang Scilab sebaiknya selalu menggunakan operasi-operasi tingkat
tinggi, sehingga setiap pernyataan proses matriks (atau vektor) terdiri dari skalar. Untuk
pengerjaan aljabar linier yang lebih kompleks, seperti penyelesaian dari sistem persamaan
linier Ax = b, dekomposisi bervariasi (contoh eliminasi Gauss PA = LU), perhitungan nilai
eigen atau vektor eigen, juga dapat dilakukan dengan kompilasi, optimasi dan kode-kode
sumber. Operasi-operasi ini dilakukan dengan operator-operator umum seperti fungsi slash
”/” atau backslash “\” sepeti spec untuk menghitugn nilai eigen atau vektor eigen.
3.2.2 Membuat matriks dari nilai real
Sintaks secara mudah dan efisient untuk membuat atau mendefinsikan sebuah
matriks dengan nilai yang diberikan adalah sebagai berikut :
 Kurung siku, “[“ dan “]” adalah penanda awal dan akhir dari matriks.
 Koma, “,” berfungsi untuk memisahkan nilai-nilai antara kolom yang berbeda.
 Semicolon “;”, berfungsi untuk memisahkan nilai-nilai antara satu baris dengan
baris yang lainnya.
Sintaks berikut ini dapat digunakan untuk mendefinisikan sebuah matriks, dimana spasi
kosong sifatnya optional (untuk memudahkan membaca sebuah baris) dan “…” digunakan
untuk memberikan jarak antara nilai-nilai :
A = [a11 , a12 , ... , a1n; a21 , a22 , ... , a2n; ...; an1 , an2 , ... , ann ].

Berikut ini contoh untuk membentuk matriks dengan ordo 2 x 3 dengan nilai-nilai real :
-->A = [1 , 2 , 3 ; 4 , 5 , 6]
A =
1. 2. 3.
4. 5. 6.

Selain cara di atas, ada cara laini untuk membentuk matriks, dimana tidak menggunakan
karakter koma dan semicolon. Ketika membentuk sebuah matriks spasi kosong memisahkan
kolom dan baris baru untuk memisahkan setiap baris, seperti sintaks berikut :
A = [a11 a12 ... a1n
a21 a22 ... a2n
...
an1 an2 ... ann]

contoh :
-->A = [1 2 3
-->4 5 6]
A =
1. 2. 3.
4. 5. 6.

Sintaks yang pertama untuk membentuk matriks berguna pada kondisi dimana matriks ingin
ditulis ke dalam file, karena akan memudahkan pengguna membaca (dan memeriksa) nilai-
nilai dalam file dan memudahkan pembacaan matriks dalam Scilab.
Beberapa perintah Scilab memungkinkan membentuk matriks jika ukurannya diberikan yaitu
jika diberikan nilai baris dan kolomnya. Fungsi-fungsi ini ditampilkan pada tabel 3.1

Tabel 3.1 Fungsi untuk meng-generate matriks


eye Matriks identitas
linspace Vektor spasi secara linier
ones Matriks dengan semua elemen 1
zeros Matriks dengan semua elemen 0
testmatrix Menghasilkan beberapa matriks tertentu
grand Membuat nilai acak
rand Membuat nilai acak

Fungsi-fungsi yang sering digunakan adalah eye, zeros dan ones. Perintah-perintah ini
memerlukan dua argumen inputan, berupa nilai untuk baris dan kolom untuk meng-
generate matriks.
-->A = ones (2 ,3)
A =
1. 1. 1.
1. 1. 1.

3.2.3 Matriks Kosong


Sebuah matriks kosong dapat dibentuk dengan menggunakan kurung siku kosong dengan
orde 0 x 0, seperti contoh berikut :
-->A=[]
A =
[]
Dengan menggunakan sintaks ini pula dapat digunakan untuk menghapus isi matriks, yang
berarti pula mengosongkan memory.
-->A = ones (100 ,100);
-->A = []
A =
[]
3.2.4 Query Matriks
Fungsi-fungsi yang ditampilkan pada tabel 3.2 berfungsi untuk melakukan query atau
update sebuah matriks. Fungsi size menghasilkan dua argumen keluaran nr dan nc, dimana
berarti jumlah baris dan jumlah kolom.
Tabel 3.2 Fungsi query atau modifikasi matriks
Size Ukuran dari obyek (ordo matriks)
matrix Membentuk kembali sebuah vektor atau matriks, menjadi matriks dengan
ukuran yang berbeda
Resize_matrix Membentuk sebuah matriks baru dengan ukuran yang berbeda

-->A = ones (2 ,3)


A =
1. 1. 1.
1. 1. 1.
-->[nr ,nc ]= size (A)
nc =
3.
nr =
2.

Sintak dari Fungsi size juga bisa sebagai berikut :

nr = size ( A , sel )

yang digunakan untuk mendapatkan jumlah baris atau jumlah kolom, dimana sel
dapat berupa nilai dengan ketentuan :
 sel = 1 atau sel = “r”, keluarannya adalah jumlah baris.

 sel = 2 atau sel = “c”, keluarannya adalah kolom.

 Sel = ”*”, keluarannya jumlah semua elemen yaitu hasil perkalian baris dan

kolomnya.
Contoh berikut adalah penggunaan fungsi size untuk menghitung total jumlah dari
elemen-elemen matriks :
-->A = ones (2 ,3)
A =
1. 1. 1.
1. 1. 1.
-->size (A,"*")
ans =
6.

3.2.5 Mengakses Elemen-Elemen Matriks


Ada beberapa cara untuk mengakses elemen-elemen dari sebbuah matriks A:
 Semua matriks, dengan sintaks A
 Setiap element dengan sintaks A(i,j)
 Jangkauan nilai indeks dengan operator colon “:”
Untuk mengkakses secara global semua elemen matriks dapat digunakan variabel sederhana
misalnya diberi nama A. Semua operasi dasar aljabar bisa dilakukan untuk matriks seperti
penjumlahan “+”, pengurangan “-“, dengan syarat kedua matriks memiliki ordo yang sama.
Berikut kode untuk menghitung penjumlahan dua matriks :
-->A = ones (2 ,3)
A =
1. 1. 1.
1. 1. 1.
-->B = 2 * ones (2 ,3)
B =
2. 2. 2.
2. 2. 2.
-->A+B
ans =
3. 3. 3.
3. 3. 3.
Sebuah elemen dari matriks dapat diakses secara langsung dengan sintaks A(i,j), dengan
syarat bahwa nilai indeks i dan j adalah valid. Sebagai penegasan, secara default indeks
pertama dari matriks adalah 1. Hal ini berbeda dengan bahasa pemrograman yang lain
seperti C bahwa indeks pertama adalah 0. Sebagai contoh, asumsikan bahwa A adalah
matriks dengan ordo nr x nc, dimana nr adalah jumlah baris dan nc adalah jumlah kolom.
Oleh karenanya nilai A(i,j) memiliki jangkauan nilai 1 ≤ i ≤ nr dan 1 ≤ j ≤ nc. Jika nilai
indeks tidak valid maka akan ditampilkan error. Contoh :
-->A = ones (2 ,3)
A =
1. 1. 1.
1. 1. 1.
-->A(1 ,1)
ans =
1.
-->A(12 ,1)
!-- error 21
Invalid index.
-->A(0 ,1)
!-- error 21
Invalid index.

Pengaksesan secara langsung elemen-elemen matriks dengan sintaks A(i,j) sebaiknya


hanya digunakan ketika tidak ada perintah-perintah lain yang sifatnya higher-level pada
Scilab. Memang, Scilab menyediakan banyak fitur yang memungkinkan untuk menghasilkan
perhitungan yang sederhana dan lebih cepat berdasarkan vektorisasi. Salah satu fitur ini
adalah operator colon “:”, yang merupakan hal yang sangat penting dalam situasi-situasi
praktis.

3.2.6 Operator Colon “:” (titik dua)


Sintaks paling sederhana dari operator colon dituliskan sebagai berikut :
v = i:j
dimana i adalah indeks awal dan j adalah indeks akhir dengan i ≤ j. Sintaks ini akan
membangkitkan vektor v = (i,i+1,…,j). Berikut contoh untuk membangkitkan vektor
dengan indeks dari 2 sampai 4 dalam satu pernyataan.
-->v = 2:4
v =
2. 3. 4.

Sintaks lengkap untuk mengkonfiguasikan pertambahan (increment) digunakan untuk


membangkitkan nilai indeks yaitu step. Sintaks lengkap untuk operator colon adalah :
v = i : s : j

dimana i adalah indeks awal, j adalah indeks akhir dan s adalah step (penambahan 1 setiap
langkah). Perintah ini menghasilkan vektor v = (i, i + 1, i + 2s, . . . , i + ns), dimana n adalah
integer terbesar yang sesuai dengan i + ns ≤ j. Jika s dibagi j – i, maka indeks terakhir dari
vektor diperoleh nilai j. Pada kasus lain i + ns < j. Pada kebanyakan kondisi, s adalah positif,
dan bisa juga bernilai negatif. Contoh berikut pembangkitan sebuah vektor dengan
peningkatan nilai indeks dari 3 sampai 10 dengan step sama dengan 2.
-->v = 3:2:10
v =
3. 5. 7. 9.

Perhatikan bahwa nilai terakhir dalam vektor v adalah i + ns = 9, dimana lebih kecil dari j =
10. Contoh berikutnya adalah contoh step negatif. Operator colon akan menghasilkan
pengurangan nilai indeks dari 10 ke 4. Selanjutnya, operator colon menghasilkan sebuah
matriks kosong karena tidak ada nilai yang lebih kecil dari 3 dan lebih besar dari 10 sekaligus.
-->v = 10: -2:3
v =
10. 8. 6. 4.
-->v = 3: -2:10
v =
[]
Elemen dari matriks dapat diakses dengan menggunakan vektor nilai indeks, dengan sintaks
sebagai berikut :
A(i:j,k:l)

Dimana i, j, k, l adalah nilai indeks awal dan nilai indeks akhir. Sintaks lengkapnya
adalah A(i:s:j,k:t:l), dimana s dan t adalah step. Sebagai contoh, misalkan matriks A
adalah 4 x 5. Jika ingin diakses elemen ai,j untuk i = 1,2 dan j = 3,4. Dengan
menggunakan bahasa Scilab, hal ini dapat dilakukan hanya dengan satu pernyataan, yaitu
dengan sintaks A(1:2,3:4), seperti yang ditunjukkan dengan contoh berikut :
-->A = testmatrix (" hilb " ,5)
A =
25. - 300. 1050. - 1400. 630.
- 300. 4800. - 18900. 26880. - 12600.
1050. - 18900. 79380. - 117600. 56700.
- 1400. 26880. - 117600. 179200. - 88200.
630. - 12600. 56700. - 88200. 44100.

-->A (1:2 ,3:4)


ans =
1050. - 1400.
- 18900. 26880.

Dalam beberapa keadaan, dapat pula terjadi nilai indeks adalah merupakan hasil dari
perhitungan. Sebagai contoh, algoritma berdasar perulangan dimana nilai indeks dapat
diperbaharui secara teratur. Pada kasus ini sintaksnya sebagai berikut :
A(vi ,vj),
Dimana vi, vj adalah vektor dari nilai indeks, yang dapat digunakan untuk merancang elemen
dari matriks A, dimana subskripnya adalah elemen dari vi dan vj. Sintaksnya diilustrasikan
pada contoh berikut :
-->A = testmatrix (" hilb " ,5)
A =
25. - 300. 1050. - 1400. 630.
- 300. 4800. - 18900. 26880. - 12600.
1050. - 18900. 79380. - 117600. 56700.
- 1400. 26880. - 117600. 179200. - 88200.
630. - 12600. 56700. - 88200. 44100.
-->vi = 1:2
vi =
1. 2.

-->vj = 3:4
vj =
2. 4.

-->A(vi ,vj)
ans =
1050. - 1400.
- 18900. 26880.

-->vi = vi +1
vi =
2. 3.
-->vj = vj +1
vj =
4. 5.
-->A(vi ,vj)
ans =
26880. - 12600.
- 117600. 56700.

Terdapat banyak variasi dari sintaks ini, dan pada tabel 3.3 menyatakan beberapa
kemungkinan kombinasi. Sebagai contoh berikut dapat digunakan operator colon untuk
menukar dua baris dari matriks A.
-->A = testmatrix (" hilb " ,3)
A =
9. - 36. 30.
- 36. 192. - 180.
30. - 180. 180.

-->A([1 2] ,:) = A([2 1] ,:)


A =
- 36. 192. - 180.
9. - 36. 30.
30. - 180. 180.

Penukaran kolom juga dapat dilakukan pada matriks A dengan pernyataan sebagai berikut :

A(:,[3 1 2]).

Tabel 3.3 mengakses elemen matriks dengan operator colon


A Semua elemen matriks
A(:,:) Semua elemen matriks
A(i:j,k) Elemen-elemen pada baris i ke j, pada kolom k
A(i,j:k) Elemen-elemen pada baris i, pada kolom dari j ke k
A(i,:) Semua elemen pada Baris i
A(:,j) Semua elemen pada Kolom j

3.2.7 Eye Matrix


Fungsi eye memungkinkan untuk membentuk matriks identitas dengan ukuran sesuai
dengan konteks yang diinginkan. Penamaan eye untuk simbol I digunakan untuk
menghindari adanya kebingungan penggunaan simbol dengan bilangan imaginer. Berikut
contoh penambahan angka 3 pada elemen diagonal dari matriks A.
-->A = ones (3 ,3)
A =
1. 1. 1.
1. 1. 1.
1. 1. 1.

-->B = A + 3* eye ()
B =
4. 1. 1.
1. 4. 1.
1. 1. 4.

Berikut pendefinisian matriks identitas B dengan menggunakan fungsi eye tergantung pada
ukuran yang diberikan oleh matriks A.
-->A = ones (2 ,2)
A =
1. 1.
1. 1.
-->B = eye(A)
B =
1. 0.
0. 1.

Matriks identitas dapat dibentuk dengan memberikan fungsi eye(m,n) dengan baris m dan
kolom n.
3.2.8 Matriks dinamis
Ukuran matriks dapat diperbesar atau diperkecil secara dinamis. Hal ini
memungkinkan untuk menyesuaikan ukuran dari matriks sesuai dengan isi datanya.
Misalkan dibentuk matriks dengan ukuran 2x3 sebagai berikut :
-->A = [1 2 3; 4 5 6]
A =
1. 2. 3.
4. 5. 6.

Selanjutnya, disisipkan nilai 7 dengan nomor indeks (3,1). Proses ini akan
menghasilkan baris ketiga pada matriks sebelumnya. Pada indeks A(3,1) dengan nilai 7, dan
pada indeks lain pada baris ketiga akan diisi dengan nilai 0.
-->A(3 ,1) = 7
A =
1. 2. 3.
4. 5. 6.
7. 0. 0.

Selain ukuran matriks dapat diperbesar, matriks juga dapat diperkecil ukurannya. Hal
ini dapat dilakukan dengan menggunakan operator matriks kosong “[]”. Contoh berikut
matriks A kolom ketiganya dihapus :
-->A(: ,3) = []
A =
1. 2.
4. 5.
7. 0.

Selain itu pula. dapat diubah bentuk dari matriks dengan fungsi matriks. Fungsi
matriks memungkinkan untuk membentuk kembali matriks asal ke dalam matriks target
dengan ukuran yang berbeda. Transformasi dilakukan dengan menumpuk kolom demi kolom
dari matriks asal. Contoh berikut proses pembentukan kembali matriks A, yang awalnya
memiliki ukuran 3x2 dengan 6 elemen menjadi vektor baris dengan 6 elemen.
-->B = matrix (A ,1 ,6)
B =
1. 4. 7. 2. 5. 0.

3.2.9 Operator Dollar “$”


Seringkali digunakan indeks untuk membuat referensi awal dari sebuah matriks.
Kebalikannya, operator dollar “$” memungkinkan untuk membuat referensi elemen-elemen
akhir dari sebuah matriks. Operator $ menyatakan indeks akhir dari baris atau kolom
tergantung konteks yang diinginkan. Sintaks ini berhubungan dengan aljabar, sehingga
indeks $ – i berarti indeks l – i, dimana l adalah jumlah baris atau kolom. Variasi penggunaan
operator dollar dinyatakan pada tabel 3.4.
Tabel 3.4 mengakses elemen matriks dengan operator dollar “$”, yang berarti $ adalah
indeks akhir.
A(i,$) Elemen pada baris i, pada kolom nc
A($,j) Elemen pada baris nr, pada kolom j
A($-i,$-j) Elemen pada baris nr – i, pada kolom nc – j

Contoh berikut matriks 3 x 3 dan diinginkan untuk mengkases elemen A(2,1) = A(nr – 1,nc –
2) = A($ - 1,$ - 2), dengan nr = 3 dan nc = 3.
-->A= testmatrix (" hilb " ,3)
A =
9. - 36. 30.
- 36. 192. - 180.
30. - 180. 180.

-->A($-1,$-2)
ans =
- 36.

Operator dollar “$” memungkinkan untuk menambah elemen-elemen secara dinamis


pada akhir dari matriks. Contoh berikut adalah proses penambahan sebuah baris pada akhir
dari matriks Hilbert.
-->A($+1 ,:) = [1 2 3]
A =
9. - 36. 30.
- 36. 192. - 180.
30. - 180. 180.
1. 2. 3.

3.3 Kegiatan Praktek


1. Buatlah matriks dengan ordo 3 x 1, 4 x 5, 5 x 8 dengan masukkan berupa nilai-nilai
real dan simpanlah berturut-turut pada variabel A, B dan C
2. Gunakan fungsi query size untuk ketiga martriks pada nomor 1, kemudian simpan
hasil untuk baris pada variabel nr dan kolom pada variabel nc. Catat hasil yang anda
dapatkan.
3. Kalikan ketiga matriks yang sudah anda buat tadi dengan sebuah skalar, catatlah hasil
yang dapatkan pada lembar kerja.
4. Ketiklah pada console scilab baris berikut, kemudian jalankan. Selanjutnya catat hasil
yang anda dapatkan.
A(1,1)
A(2,3)
B(0,1)
B(2,2)
C(5,6)
C(6,9)

5. Ketiklah pada console scilab pernyataan-pernyataan berikut. Kemudian jalankan dan


catatalah hasilnya.
x = 1:6
y = 2:3:10
z = 30:-3:1

6. Hasil kegiatan praktek dicatat pada laporan sebagai dokumentasi hasil kegiatan
praktek yang anda lakukan.

3.4 Tugas Mandiri


1. Berikan penjelasan hasil dari setiap nomor yang anda kerjakan pada bagian kegiatan
praktek.
2. Buatlah vektor (x1 + 1, x2 + 1, x3 + 1, x4 + 1) dengan x = 1 : 4
3. Buatlah vektor (x1y1, x2y2, x3y3, x4y4) dengan x = 1:4 dan y = 5:8
Praktikum 4
OPERASI MATRIKS
4.1 Tujuan
Diharapkan setelah praktikum ini mahasiswa sebagai praktikan dapat mengetahui dan
memahami dan mampu melakukan operasi-operasi matriks dengan menggunakan scilab.
4.2 Dasar Teori
4.2.1 Operasi-Operasi Dasar
Semua operator dasar aljabar seperti, “+”, ”-”, “*” dan ‘”/”, dapat dilakukan dengan
matriks real. Aturan untuk operator “+” dan “-“ dapat diterapkan secara langsung seperti
operasi aljabar pada umumnya. Berikut contoh penjumlahan matriks 2 x 2 :
-->A = [1 2
-->3 4]
A =
1. 2.
3. 4.
-->B=[5 6
-->7 8]
B =
5. 6.
7. 8.
-->A+B
ans =
6. 8.
10. 12.

Ketika diakukan penjumlahan dua matriks, jika satu operan adalah matriks 1 x 1
(misalnya, sebuah skalar), nilai dari skalar ini akan ditambahkan pada setiap elemen dari
matriks kedua. Fitur itu dicontohkan sebagai beriktu :
-->A = [1 2
-->3 4]
A =
1. 2.
3. 4.
-->A + 1
ans =
2. 3.
4. 5.

Operator-operator dasar yang tersedia untuk matriks seperti ditampilkan pada tabel
4.1. Bahasa Scilab menyediakan dua operator pembagian, yakni, pembagian kanan “/” dan
pembagian kiri “\”. Pembagian kanan yaitu X = A/B = AB -1 yang merupakan solusi dari XB = A.
Dan, pembagian kiri yakni X = A\B = A -1B, dimana merupakan solusi dari AX = B. Pembagian
kiri A\B untuk menghitung solusi yang berhubungan dengan persoalan kuadrat terkecil jika A
adalah bukan matriks bujur sangkar.
Tabel 4.1 Operator matriks dan operator antar elemen (elementwise)
+ Penjumlahan .+ Penjumlahan elemen
- Pengurangan .- Pengurangan elemen
* Perkalian .* Perkalian elemen
/ Pembagian kanan ./ Pembagian kanan elemen
\ Pembagian kiri .\ Pembagian kiri elemen
^ atau ** Pangkat, contoh xy .^ Pangkat elemen
‘ Transpose dan conjugate .‘ Transpose (bukan conjugate)

4.2.2 Operasi Antar Elemen-Elemen


Jika dot “.” ditulis sebelum sebuah operator, hal ini berarti operator ini adalah
operator antar elemen. Sebagai contoh, dengan operator perkalian biasa “*” berarti akan

mengalikan matriks C = A*B yakni c ij = ∑ aik b kj. Selanjutnya, dengan operator perkalian
k=1 ,n

“.*” berarti akan mengalikan setiap elemen dari matriks C = A.*B yaitu c ij =a ij bij
4.2.3 Conjugate Traspose dan Non-Conjugate Transpose
Kebingungan akan muncul ketika penggunaan tanda petik satu operator elementwise
dan tanda petik satu biasa jika dilakukan dengan tanpa pengetahuan yang benar dari
penggunaan kedua operator ini. Bila ada sebuah matriks dengan nilai real, penggunaan
operator petik satu hanya akan mentranspose matriks tersebut. Selanjutnya, jika matriks
berisi nilai kompleks, operator petik satu akan mentranspose dan meng-conjugate matriks
tersebut. Oleh karena itu, operasi A = Z’ akan menghasilkan matriks A jk =X kj −iY kj, dimana I
adalah bilangan imajiner yang berarti i 2 = -1, serta X dan Y adalah komponen bilangan real
komponen bilangan imajiner dari matriks Z. Operator petik satu elementwise selalu
mentranspose tanpa melakukan conjugate matriks, meskipun matriksnya berisi bilangan real
ataupun bilangan kompleks. Oleh karena itu operasi A = Z.’ akan menghasilkan sebuah
matriks dengan nilai A jk =X kj +iY kj .
Berikut contoh sebuah matriks tidak simetris yang berisi nilai kompleks untuk
memberikan perbedaan yang jelas dari kedua operator.
-->A = [1 2;3 4] + %i * [5 6;7 8]
A =
1. + 5.i 2. + 6.i
3. + 7.i 4. + 8.i
-->A'
ans =
1. - 5.i 3. - 7.i
2. - 6.i 4. - 8.i
-->A.'
ans =
1. + 5.i 3. + 7.i
2. + 6.i 4. + 8.i
Selanjutnya, pada matriks tidak simetris berikut diberikan contoh nilai real dan
penggunaan dari operator “’” dan “.’”.
-->B = [1 2;3 4]
B =
1. 2.
3. 4.
-->B'
ans =
1. 3.
2. 4.
-->B.'
ans =
1. 3.
2. 4.

4.2.4 Perkalian Dua Vektor


Jika u ∈ R n merupakan vektor kolom dan vT ∈ Rn adalah vektor kolom. Matriks A
adalah A = uvT dengan masukkan Aij =ui v j. Berikut contoh perkalian vektor kolom u dan
vektor baris v dan hasilnya akan disimpan pada variabel A.
-->u = [1
-->2
-->3]
u =
1.
2.
3.
-->v = [4 5 6]
v =
4. 5. 6.
-->u*v
ans =
4. 5. 6.
8. 10. 12.
12. 15. 18.

Ditunjukkan bahwa u ∈ R n adalah merupakan sebuah vektor kolom, sehingga vektor


baris dapat dibuat dengan uT. Pada penerapan di Scilab sebuah vektor baris dapat disimpan
secara langsung pada variabel u.
4.2.5 Membandingkan Dua Matriks Real
Perbandingan dua matriks hanya mungkin ketika matriks memiliki bentuk atau
ukuran yang sama. Operator pembanding dinyatakan pada tabel 2.5. yang memang
diperuntukkan ketika argumen input A dan B adalah matriks. Ketika dua matriks
dibandingkan maka hasilnya adalah sebuah matriks boolean. Matriks ini dapat
dikombinasikan dengan operator seperti and, or, seperti yang ditunjukkan dalam tabel 4.2.
Operator umum “&”, “|” juga bisa diterapkan pada matriks, tetapi operator and dan or
memungkinkan untuk melakukan operasi perkolom dan perbaris.
Tabel 4.2. Operator pembanding khusus untuk matriks.
and(A,”r”) Operasi per baris “and”
and(A,”c”) Operasi per kolom “and”
or(A,”r”) Operasi per baris “or”
or(A,”c”) Operasi per kolom “or”

4.2.6 Fungsi-Fungsi Dasar Lain


Bagian ini akan sedikit dijelaskan penggunaan fungsi-fungsi dasar terutama fungsi-
fungsi trigonometri, fungsi logaritma, dan fungsi-fungsi dasar matrix-based. Fungsi
trigonometri seperti sin dan cos dengan argumen input klasik dalam radian. Tetapi,
beberapa fungsi seperti cosd contohnya, argumen inputnya dalam derajat. Hal ini berarti
bahwa, dalam matematika tand(x) = tan(x/180). Fungsi-fungsi ini dapat secara mudah
diidentifikasi karena namanya diakhiri dengan huruf “d”. Contoh cosd, sind. Keuntungan
utama untuk fungsi-fungsi dasar based-degree (fungsi sudut) yaitu penerapan fungsi ini akan
memberikan hasil yang tepat ketika argumennya memiliki nilai matematika khusus seperti
perkalian 90.
Fungsi log digunakan untuk menghitung logaritma natural dari argumen input, yakni
merupakan invers atau kebalikan dari fungsi exp = e x., dimana e adalah konstanta euler.
Untuk menghitung fungsi logaritma dapat digunakan fungsi log10 dan log2 berturut-turut
untuk basis 10 dan basis 2.
Sebagian besar fungsi-fungsi ini adalah elementwise yakni jika diberikan sebuah
inputan matriks, penerapan fungsi akan dilakukan untuk setiap masukan dari matriks
tersebut. Namun terdapat beberapa fungsi dikhususkan untuk aljabar linier. Sebagai contoh,

1 k
matriks eksponensial dari sebuah fungsi yang didefinisikan dengan e =∑
X
X , dimana X
k=0 k!
adalah matriks bujur sangkar n x n. Untuk menghitung eksponensial dari sebuah matriks
dapat digunakan fungsi expm. Jelas, exponensial fungsi elementwise tidak akan
menghasilkan hasil yang sama. Secara umum fungsi-fungsi yang memiliki tujuan khusus
untuk penanganan matriks diakhiri dengan huruf m. Contohnya antara lain expm, sinm.
4.2.7 Fitur-fitur Aljabar Linier Tingkatan Lebih Tinggi
Scilab memiliki librari yang lengkap untuk aljabar linier, dimana dapat digunakan
untuk menangani matriks padat dan matriks jarang. Buku aljabar linier yang lengkap akan
memuat deskripsi dari algoritma-algoritma yang disediakan oleh Scilab. Tabel 4.3 menyajikan
daftar fungsi yang paling sering digunakan dalam aljabar linier.
Tabel 4.3 beberapa fungsi umum pada aljabar linier.
chol Faktorisasi Cholesky
companion Pasangan matriks
cond Angka kondisi
det Deterniman
inv Invers matriks
linsolve Solusi persaman linier
lsq Persoalaan LST (Linear Least Square)
lu Faktorisasi LU dari eliminasi Gauss
qr Dekomposisi QR
rcond Invers angka kondisi
spec Nilai eigen
svd Dekompisisi nilai singular
testmatrix Sekumpulan matriks uji
trace trace

4.3 Kegiatan Praktek


1. Buatlah dua buah matriks dengan matriks pertama dengan ordo 1 x 1, dan matriks
kedua dengan ordo 3 x 4. Simpanlah kedua matriks secara berturut-turut pada
variabel A dan B. Jumlahkan kedua matriks tersebut. Catat hasil yang anda dapatkan.
2. Ketilah pada console Scilab pernyataan berikut, kemudian catatlah hasilnya.
-->A = [1 2
-->3 4]
-->B = [1 2 3
-->4 5 6]
-->A+B

3. Buatlah sebuah matriks dengan ordo 2x2 menggunakan fungsi ones, dan simpanlah
pada variabel C. Kalikan matriks tersebut dengan skalar 2 dan simpanlah pada
variabel D. Kemudian kalikan matriks C dan D dengan dua cara, cara 1 dengan
operator “*”, dan cara 2 dengan operator “.*”. catat hasil yang anda dapatkan.
4. Ketiklah sebuah matriks dengan seperti : E = [1 2;3 4], kemudian gunakan operator “ ’
” dan operator “ .’ ” pada matriks tersebut. Catatlah hasil yang anda dapatkan.
5. Buatlah matriks A = [1 2 7;6 9 8] pada console Scilab , kemudian gunakan operator “>”
untuk membandingkan matriks tersebut dengan sebuah skalar A >3. Selanjutnya,
buatlah matriks B = [1 2 7;6 9 8]. Bandingkan : A > B, or(A>B,"r"). Catat hasil yang
anda dapatkan.
6. Ketiklah pernyataan berikut pada console Scilab, kemudian catat hasilnya.
sin(%pi)
sind(180)
x = [exp (1) exp (2) 1 10 2^1 2^10]
A = [%pi /2 %pi; 2* %pi 3* %pi /2]
sin(A)
sinm (A)

7. Hasil kegiatan praktek dicatat pada laporan sebagai dokumentasi hasil kegiatan
praktek yang anda lakukan.

4.4 Tugas Mandiri


1. Berikan penjelasan hasil dari setiap nomor yang anda kerjakan pada bagian kegiatan
praktek.
2. Buatlah vektor (sin(x1), sin(x2), …, sin(x10) dengan x adalah 10 nilai yang
dipilih secara linier antara [0,].

3. Hitunglah y = f(x) dengan f ( x )=log 10 ( 10r +10 ) dengan r = 2.220x10


x
x -16
dan x

adalah vektor 100 nilai yang dipilih antara jangkauan [-16,0]


Praktikum 5
PERULANGAN DAN PERCABANGAN

6.1 Tujuan
Diharapkan setelah praktikum ini mahasiswa sebagai praktikan dapat mengetahui dan
memahami :
1. Pernyataan-pernyataan kondisi yaitu pernyataan IF, penyataan SELECT yang
memungkinkan untuk menyelesaikan persoalan seleksi yang lebih komplek.
2. Proses perulangan diantaranya pernyataan FOR dan WHILE.
3. Manajemen perulangan dengan menggunakan pernyataan BREAK dan CONTINUE

6.2 Dasar Teori


6.2.1 Pernyataan IF
Pernyataan IF digunakan apabila ada kondisi yang terpenuhi. Pernyataan IF
menggunakan variabel boolean untuk memilih apakah kondisi benar dieksekusi. Sebuah
kondisi ditutup jika kata kunci end ditemukan. Contoh sederhana pada skrip berikut, jika
kondisi %t, dimana jika benar maka akan terpenuhi :
if ( %t ) then
disp (" Hello !")
end
skrip di atas menghasilkan :
Hello !
Jika kondisi tidak terpenuhi, pernyataan else dapat digunakan untuk mengeksekusi
pernyataan lain. Contohnya pada skrip berikut :
if ( %f ) then
disp (" Hello !")
else
disp (" Goodbye !")
end

skrip ini menghasilkan


Goodbye !

Untuk dapat menggunakan boolean, operator pembanding dapat menggunakan yaitu


“==”, “>” dan fungsi lain yang menghasilkan sebuah boolean. Contoh berikut penggunaan
operator “==” untuk menampilkan pesan “Hello !”. Jika kondisi tidak terpenuhi, pernyataan
else dapat digunakan sebagai penyataan alternatif.
i = 2
if ( i == 2 ) then
disp (" Hello !")
else
disp (" Goodbye !")
end

6.2.2 Pernyataan SELECT


Pernyataan SELECT memungkinkan untuk mengkombinasikan beberapa percabangan
dengan secara jelas dan mudah. Tergantung pada nilai dari sebuah variabel, pernyataan ini
dihubungkan dengan kata kunci CASE. Berikut contoh skrip untuk menampilkan sebuah
string berdasarkan integer i.
i = 2
select i
case 1
disp ("One")
case 2
disp ("Two")
case 3
disp (" Three ")
else
disp (" Other ")
end

Skrip di atas akan mencetak ke layar “Two”, sesuai yang diinginkan. Percabangan ELSE
digunakan jika semua kondisi adalah false. Pernyataan ELSE adalah sifatnya optional, tetapi
dianggap suatu penerapan pemrograman yang baik. Memang, jika programer menganggap
bahwa apabila salah satu case tidak terpenuhi, maka akan muncul sebuah bug secara logis,
sehingga semua kondisi adalah false. Pada kasus di atas jika pernyataan ELSE tidak
menginterupsi eksekusi, pernyataan lain pada skrip akan dieksekusi. Hal ini akan
mengarahkan pada hasil yang tidak diharapkan. Dalam skenario yang buruk, skrip tetap
berhasil tapi menghasilkan hasil yang tidak konsisten. Pencarian kesalahan pada skrip seperti
ini akan sangat sulit dan akan menghabiskan waktu yang lama. Oleh karenannya, pernyataan
ELSE seharusnya digunakan pada pernyataan-pernyataa SELECT. Untuk mengatur even-even
yang tidak diharapkan, seringkali mengkombinasikan pernyataan SELECT dengan fungsi
error. Fungsi error ini akan memberikan pesan peringatan jika terjadi kesalahan. Saat sebuah
error dihasilkan, eksekusi akan diinterupsi dan interpreter akan menghentikan eksekusi dari
skrip.
Contoh berikut sebuah pesan akan muncul tergantung pada nilai dari variabel positif i. Jika
variabel adalah negatif maka akan dimunculkan error.
i = -5
select i
case 1
disp ("One")
case 2
disp ("Two")
case 3
disp (" Three ")
else
error ( " Unexpected value of the parameter i" )
end

Skrip ini akan mengasilkan keluaran :


-->i = -5;
--> select i
-->case 1
--> disp ("One")
-->case 2
--> disp ("Two")
-->case 3
--> disp (" Three ")
-->else
--> error ( " Unexpected value of the parameter i" )
Unexpected value of the parameter i

6.2.3 Pernyataan FOR


Pernyataan FOR digunakan untuk proses perulangan, yang memungkinkan sebuah
aksi yang dikerjakan beberapa kali. Pada kebanyakan kasus, sebuah perulangan
menggunakan nilai integer dimana akan dimulai pada suatu nilai indeks tertentu dan
berakhir pada suatu nilai indeks tertentu pula.
Contoh berikut akan menampilkan nilai dari i dari 1 sampai 5.
for i = 1 : 5
disp (i)
end
Skrip ini akan menghasilkan keluaran :
1.
2.
3.
4.
5.

Pada contoh sebelumnya, perulangan dilakukan dengan sebuah matriks yang berisi
nilai-nilai integer. Memang digunakan operator colon “:” untuk menghasilkan vektor dari
nilai-nilai indeks [1 2 3 4 5]. Berikut ditunjukkan pernyataan 1:5 akan menghasilkan semua
nilai-nilai integer ke dalam vektor baris.
-->i = 1:5
i =
1. 2. 3. 4. 5.

Yang menjadi perhatian pada perulangan sebelumnya, matriks 1:5 adalah matriks
double. Sehingga variabel i juga adalah double. Penggunaan bentuk secara lengkap dari
operator colon sebaiknya diterapkan untuk menampilkan integer ganjil dari 1 sampai 5.
Contohnya seperti berikut :
for i = 1 : 2 : 5
disp (i)
end

Skrip ini akan menghasilkan keluaran :


1.
3.
5.

Operator colon dapat digunakan untuk menghasilkan perulangan terbalik, contohnya


sebagai berikut :
for i = 5 : - 1 : 1
disp (i)
end

Keluaran dari skrip ini adalah :


5.
4.
3.
2.
1.

Pernyaaan FOR jauh lebih umum dari apa yang telah digunakan sebelumnya pada
bagian ini. Tentu saja, pernyataan FOR ini memungkinkan untuk menampilkan nilai dari
beberapa tipe data, termasuk matriks baris dan list. Ketika sebuah FOR digunakan pada
elemen matriks, matriks ini dapat berupa matriks double, string, integer atau polinomial.
Berikut contoh penggunaan perulangan FOR untuk nilai double dari matriks baris
yang berisi [1.5, e, ]
v = [1.5 exp (1) %pi ];
for x = v
disp (x)
end
Keluarannya adalah :
1.5
2.7182818
3.1415927

6.2.4 Pernyataan WHILE


Pernyataan WHILE digunakan untuk perulangan ketika sebuah ekspresi boolean
adalah true. Pada awal perlulangan, jika ekspresi adalah true, pernyataan pada perlulangan
akan dieksekusi. Ketika ekspresi menjadi salah, perulangan dihentikan.
Berikut contoh skrip, untuk menghitung penjumlahan dari sejumlah angka i dari 1
sampai 10 dengan pernyaaan WHILE.
s = 0
i = 1
while ( i <= 10 )
s = s + i
i = i + 1
end

Pada akhir algoritma, nilai dari variabel i dan s adalah :


s =
55.
i =
11.

Contoh di atas adalah hanya untuk menunjukkan penggunaan pernyataan WHILE.


Jika diinginkan menghitung penjumlahan angka 1 sampai 10, dapat digunakan fungsi sum,
seperti berikut :
-->sum (1:10)
ans =
55.

Penyataan WHILE memiliki kinerja yang sama dengan pernyataan FOR. Oleh
karenanya pernyataan vektorisasi seharusnya dipertimbangkan sebelum mendesain
algoritma dengan perulangan menggunakan WHILE.

6.2.5 Pernyataan BREAK dan CONTINUE


Pernyataan BREAK digunakan untuk menghentikan sebuah perulangan. Biasanya,
pernyataan ini dalam perlulangan dimana sekali kondisi terpenuhi, perulangan seharusnya
tidak boleh dilanjutkan.
Contoh berikut penggunaan pernyataan BREAK untuk menghitung jumlah dari integer 1
sampai 10. Ketika variabel I lebih besar dari 10, perulangan akan dihentikan.
s = 0
i = 1
while ( %t )
if ( i > 10 ) then
break
end
s = s + i
i = i + 1
end

Pada akhir algoritma, nilai dari variabel I dan s adalah :


s =
55.
i =
11.

Pernyataan CONTINUE memungkinkan untuk melanjutkan perulangan, sehingga


pernyataan ini berada pada body dari perulangan dan tidak dieksekusi ketika perulangan
sedang dieksekusi. Ketika pernyataan CONTINUE dieksekusi, Scilab melewatkan pernyataan
lain dan langsung mengeksekusi pernyataan WHILE atau FOR dan mengevaluasi perulangan
berikutnya.
Contoh berikut, akan dihitung jumlah s = 1 + 3 + 5 + 7 + 9 = 25. Fungsi modulo(i,2)
mengembalikan nilai 0 jika angka I adalah genap. Pada kondisi ini skrip langsung menuju
perulangan berikutnya.
s = 0
i = 0
while ( i< 10 )
i = i + 1
if ( modulo ( i , 2 ) == 0 ) then
continue
end
s = s + i
end

Jika skrip ini diekseksi, hasil akhir dari variabel i dan s adalah :
-->s
s =
25.
-->i
i =
10.

Algoritma di atas dapat dilakukan dengan komputasi vektorisasi hanya dengan sekali
menggunakan satu fungsi. Skrip berikut menggunakan fungsi sum yang dikombinasikan
dengan operator colon “:” dan menghasilkan hasil yang sama.
s = sum (1:2:10);

Skrip sebelumnya memiliki dua keuntungan dibandingkan menggunakan algoritma


while.
1. Komputasi digunakan dengan menggunakan bahasa tingkat tinggi, dimana lebih mudah
dipahami oleh bahasa manusia.
2. Dengan matriks yang berukuran besar, komputasi dengan fungsi sum lebih cepat dari
algoritma while.
Berdasarkan hal ini mengapa perlu analisis yang lebih mendalam sebelum
pengembangan algoritma dengan menggunakan perulangan while.

6.3 Kegiatan Praktek


1. Ketiklah skrip berikut ini pada Scilab notes, kemudian jalankan. Catatlah hasil yang
anda peroleh :
if ( %t ) then
disp (" Hello !")
else
disp (" Goodbye !")
end

2. Ketiklah skrip berikut pada Scilab notes, kemudian jalankan. Jika terdapat error,
perbaikilah kemudian catatlah hasil yang anda peroleh :
i=2
for j = 1:3,
if i = j then
a(i,j) = 2;
else if abs(i-j) == 1 then
a(i,j) = -1;
else a(i,j) = 0;
end,
end

3. Ketiklah skrip berikut pada Scilab notes, kemudian jalankan. Jika terdapat error,
perbaikilah kemudian catatlah hasil yang anda peroleh :
while %t do
n=round(10*rand(1,1))
select n
case 0 then
disp(0)
case 1 then
disp(1)
else
break
end
end

4. Gantilah %t dengan %f pada nomor 3, kemudian jalankan. Jika terdapat error


perbaikilah, kemudian catatlah hasil yang anda peroleh :
5. Ketiklah skrip berikut pada Scilab notes, kemudian jalankan. Jika terdapat error,
perbaikilah kemudian catatlah hasil yang anda peroleh :
n=5;
for i = 1:n
for j = 1:n
a(i,j) = 1/(i+j-1);
end;
end
for j = 2:n-1
a(j,j) = j;
end;
a
for j= 4:-1:1
disp(j);
end // decreasing loop

//loop on matrix columns


for e=eye(3,3), e, end
for v=a, write(6,v), end
for j=1:n, v=a(:,j), write(6,v), end

//loop on list entries


for l=list(1,2,'example'); l, end

6. Buatlah skrip pada Scilab notes untuk menampilkan angka dari 1 sampai 100 dengan
menggunakan pernyataan FOR.
7. Buatlah skrip pada Scilab notes untuk menampilkan angka dari 100 sampai 0 dengan
menggunakan pernyataan WHILE.
8. Hasil kegiatan praktek dicatat pada laporan sebagai dokumentasi hasil kegiatan
praktek yang anda lakukan.
6.4 Tugas Mandiri
1. Berikan penjelasan hasil dari setiap nomor yang anda kerjakan pada bagian kegiatan
praktek.
2. Buatlah program pada Scilab notes untuk menghitung akar kuadrat dari bilangan
positif.
3. Buatlah program pada Scilab notes untuk mengkonversi tanggal yang diinputkan oleh
user. (Gunakan pernyataan SELECT)
misalnya input :
Tanggal = 12
Bulan = 10
Tahun = 2018
Keluaran :
12 Oktober 2018
4. Buatlah program pada Scilab notes untuk menentukan jumlah N jumlah bilangan
ganjil yang diinputkan dari keyboard.
Misalkan Input :
N=5
Bilangan ke-1 : 2
Bilangan ke-2 : 1
Bilangan ke-3 : 4
Bilangan ke-4 : 7
Bilangan ke-5 : 5
Bilangan ke-6 : 8
Bilangan ke-7 : 3
Bilangan ke-8 : 3
Keluaran :
Jumlah bilangan ganjil => 1 + 7 + 5 + 3 + 3 = 19
Praktikum 6
FUNGSI

6.1 Tujuan
Diharapkan setelah praktikum ini mahasiswa sebagai praktikan dapat mengetahui dan
memahami :
1. Cara mendefinisikan fungsi baru dan metode memanggilnya ke dalam Scilab.
2. Bagaimana membuat dan memanggil librari yang merupakan kumpulan dari fungsi-
fungsi.
3. Bagaimana mengelola argumen input (masukkan) dan argumen output (keluaran)
4. Bagaimana men-debug sebuah fungsi menggunakan pernyataan PAUSE

6.2 Dasar Teori


Mengumpulkan beberapa variasi langkah menjadi sebuah fungsi yang bersifat
reusable adalah merupakan pekerjaan paling sering dilakukan oleh seorang pengembang
Scilab. Pemanggilan fungsi yang sederhana dapat ditampilkan sebagai berikut :
outvar = myfunction ( invar )
Dimana,
 myfunction adalah nama dari fungsi

 invar adalah nama dari argumen input (masukan)


 outvar adalah nama dari argumen output (keluaran)

nilai dari argumen input tidak dimodifikasi oleh fungsi saat nilai dari argumen output
secara aktual dimodifikasi oleh fungsi. Pada praktikum sebelumnya telah dibahas mengenai
beberapa fungsi. Fungsi sin pada pernyataan y = sin(x), mengambil argumen input x dan
mengeluarkan hasilnya pada argumen output y. Pada Scilab, argumen-argumen input yang
dipanggil ditempatkan pada sebelah kanan dan argumen-argumen output diletakkan pada
sebelah kiri. Fungsi dapat memiliki sembarang bilangan dari argumen input dan output,
maka penulisan secara lengkap dari sebuah fungsi yang memiliki bilangan yang tetap dari
argumen adalah sebagai berikut :
[o1 , ... , on] = myfunction ( i1 , ... , in )

Argumen input dan output dipisahkan dengan tanda koma ”,”. Perhatikan bahwa
argumen input berada di dalam kurung biasa, sedangkan argumen output diletakkan dalam
kurung siku. Contoh berikut adalah perhitungan dekomposisi LU dari matriks Hilbert. Pada
contoh ini ditunjukkan bagaimana membentuk sebuah matriks dengan fungsi testmatrix,
yang mengambil dua argumen input dan menghasilkan satu matriks. Selanjutnya, digunakan
fungsi lu, dimana mengambil satu argumen input dan mengembalikan dua atau tiga
argumen tergantung variabel output yang disediakan. Jika argumen ketiga P diberikan,
matriks permutasi dikeluarkan.
-->A = testmatrix (" hilb " ,2)
A =
4. - 6.
- 6. 12.

-->[L,U] = lu(A)
U =
- 6. 12.
0. 2.
L =
- 0.6666667 1.
1. 0.

-->[L,U,P] = lu(A)
P =
0. 1.
1. 0.
U =
- 6. 12.
0. 2.
L =
1. 0.
- 0.6666667 1.

Perhatikan bahwa sifat dari fungsi lu secara aktual berubah ketika tiga argumen
keluaran diberikan: dua baris dari matriks L ditukar. Lebih khusus, ketika dua argumen
output diberikan, dekomposisi A = LU diberikan (pernyataan A – L * U untuk memeriksa).
Ketika tiga argumen output diberikan, permutasi dikerjakan sehingga dekomposisi PA = LU
diberikan (pernyataan P * A – L * U untuk memeriksa). Faktanya, ketika dua argumen input
diberikan, permutasi diterapkan pada matriks L. Hal ini berarti bahwa fungsi lu mengenal
banyak argumen input dan output yang diberikan padanya dan mengubah algoritmanya
sekaligus. Tabel 6.1 menyajikan perintah-perintah yang disediakan oleh Scilab untuk
mengelola fungsi-fungsi
Tabel 6.1 Fungsi-fungsi Scilab untuk mengelola fungsi-fungsi
function Definisi fungsi pembuka
endfunction Definisi fungsi penutup
argn Jumlah dari argumen input/output dalam suatu pemanggilan fungsi
varargin Jumlah variabel dari argumen dalam satu daftar argumen input
varargout Jumlah variabel dari argumen dalam satu daftar argumen output
fun2string Membangkitkan definisi ASCII dari fungsi Scilab
get_function_path Mengambil alamat dari file sumber dari sebuah fungsi librari
getd Mengambil semua fungsi yang didefinisikan dalam sebuah direktori
head_comments Menampilkan komentar fungsi header Scilab
listfunctions Properti dari semua fungsi-fungsi dalam workspace
macrovar Variabel-variabel dari fungsi

6.2.1 Mendefinisikan Fungsi


Untuk mendefinisikan fungsi, digunakan perintah kata kunci Scilab function dan
endfunction. Seperti dicontohkan berikut, function myfunction, dimana argumen input x,
dikalikan dengan 2, dan mengeluarkan hasilnya pada argumen output y.
function y = myfunction ( x )
y = 2 * x
endfunction

Pernyataan function y = myfunction(x) adalah header dari fungsi, sementara


body dari fungsi dibuat dari pernyataan y = 2 * x. Body dari suatu fungsi mungkin berisi
satu atau dua pernyataan.
Terdapat minimal tiga kemungkinan untuk mendefinisikan fungsi dalam Scilab.
 Solusi pertama yaitu dengan menuliskan secara langsung ke dalam console pada mode
interaktif. Perhatikan bahwa, sekali pernyataan “function y = myfunction (x)” dituliskan
dan ditekan tombol enter, Scilab membuat sebuah baris pada console, dan menunggu
untuk isi dari body fungsi. Ketika pernyataan “endfunction” diketikkan pada console,
Scilab kembali ke mode normal.
 Solusi lain yang mungkin dengan menuliskan kode sumber dari fungsi dalam sebuah file.
Kasus ini paling umum, karena fungsi-fungsi lebih kompleks. Fungsi dapat di-copy dan di-
paste ke dalam console. Pendefinisian fungsi dengan cara ini lebih mudah apalagi jika
kode sumber dari fungsi berjumlah banyak.
 Cara ketiga dengan menggunakan fungsi exec. Misalnya digunakan system berbasis
windows dimana fungsi ditulis pada file dengan path “C:\myscripts\examples-
function.sce”. Dengan exec function fungsi ini di-load.
-->exec ("C:\myscripts\examples-functions.sce")
--> function y = myfunction ( x )
--> y = 2 * x
--> endfunction
Fungsi Exec mengeksekusi isi dari file dimana file tersebut seperti halnya ditulis secara
langsung pada console dan ditampilkan baris perbaris. file mungkin berisi banyak kode
sumber sehingga keluaran mungkin akan sangat lama dan tidak berguna. Pada keadaan
ini, dapat ditambahkan semicolon “;” pada setiap baris. Hal ini yang dilakukan oleh fitur
Execute file into Scilab dari editor.
-->exec ("C:\myscripts\examples-functions.sce" );

Sekali sebuah fungsi didefinsikan, fungsi itu dapat digunakan seperti halnya fungsi Scilab
yang lain.
-->exec ("C:\ myscripts \ examples - functions .sce");
-->y = myfunction ( 3 )
y =
6.

Perhatikan bahwa fungsi myfunction ini argumen outputnya ditetapkan dengan variabel y,
dengan pernyataan y = 2 * x. Hal ini tidak boleh diubah. Untuk memahami hal ini lihatlah
contoh berikut :
function y = myfunction ( x )
z = 2 * x
endfunction
Selanjutnya, fungsi ini diisi dengan argumen input x = 1.
--> myfunction ( 1 )
!-- error 4
Undefined variable : y
at line 4 of function myfunction called by :
myfunction ( 1 )

Interpreter akan memberitahukan bahwa variabel output y tidak terdefinisi.

6.2.2 Function Libraries


Sebuah librari fungsi adalah kumpulan fungsi-fungsi yang didefinisikan dalam Scilab
dan disimpan dalam sekumpulan file.
Ketika sekumpulan fungsi adalah sederhana dan tidak berisi beberapa petunjuk atau
beberapa kode sumber dalam bahasa kompile seperti C/C++ atau Fortran, sebuah library
sangat efisien untuk diproses. Pada Scilab sebuah modul dikembangkan dengan unit-unit
test, help pages (halaman-halaman petunjuk) dan skrip-skrip demonstrasi. Pengembangan
satu modul lebih mudah dan efisien, tetapi memerlukan pengetahuan yang lebih mendalam
mengenai Scilab. Meskipun, modul-modul ini didasarkan pada librari-librari fungsi. Librari
fungsi secara praktis memungkinkan pengelolaan lebih efisien terhadap fungsi-fungsi.
Secara garis besar proses pembuatan dan penggunaan librari adalah dengan
mengasumsikan bahwa diberikan sebuah set fungsi-fungsi dalam file .sci.
1. Pertama, dibuat versi biner dari skrip yang berisi fungsi. Fungsi genlib akan meng-
generate versi biner dari skrip.
2. Librari kemudian di-load ke dalam scilab, fungsi lib memungkinkan me-load sebuah
librari disimpan ke dalam direktori/folder tertentu.
Ada aturan-aturan umum yang harus diperhatikan sebelum mendesain sebuah librari :
- Nama file yang berisi fungsi harus diberi ekstensi .sci, hal ini berfungsi
mengidentifikasi skrip-skrip Scilab pada folder harddisk.
- Beberapa fungsi mungkin disimpan dalam setiap file .sci, tetapi hanya satu yang akan
berada di luar file. Memang fungsi pertama dari file dijadikan sebagai fungsi public,
ketika fungsi yang lain cenderung menjadi fungsi private.
- Nama file .sci harus memiliki nama yang sama fungsi pertama dalam file. Misalnya,
jika namafungsi adalah myfun, file yang berisi fungsi ini harus juga diberi nama
myfun.sci. hal ini wajib agar fungsi genlib dapat bekerja secara sesuai dengan
semestinya.
Fungsi-fungsi untuk mengelola librari dituliskan pada tabel 6.2.
Tabel 6.2 perintah Scilab untuk mengelola fungsi
genlib Membuat librari dari fungsi yang pada direktori/folder
lib Definisi librari

Contoh berikut bagaimana memahami penjelasan di atas. Diasumsikan system yang


digunakan adalah windows yang berisi dua file :
C:/samplelib/function1.sci:
function y = function1(x)
y = 1 * function1_support(x)
endfunction
function y = function1_support(x)
y = 3 * x
endfunction

C:/samplelib/function2.sci:
function y = function2(x)
y = 2 * x
endfunction

File-file biner akan di-generate dengan fungsi genlib, dimana argumen pertama adalah
string dengan nama librari dan nama argumen kedua adalah folder yang berisi file tersebut.
Perhatikan bahwa hanya fungsi function1 dan function2 yang sifatnya public, fungsi
function1_support digunakan dalam librari dan tidak bisa digunakan diluar.
--> genlib (" mylibrary ","C:/samplelib ")
--> mylibrary
mylibrary =
Functions files location : C:\samplelib\.
function1 function2

Fungsi genlib meng-generate file “C:/samplelib” :


 function1.bin : versi biner dari skrip function1.sci,

 function2.bin : versi biner dari skrip function2.sci,

 lib : versi biner dari librari,

 names : suatu file teks yang berisi daftar dari fungsi dalam librari.

File-file biner *.bin dan file lib adalah lintas platform sehingga dapat digunakan pada system
Windows, Linux atau Mac. Sekali fungsi genlib telah dieksekusi, fungsi-fungsi tersebut sudah
bisa digunakan. Contohnya :
--> function1 (3)
ans =
9.
--> function2 (3)
ans =
6.

Secara praktis, meskipun tidak selalu perlu di-generate librari setiap saat dibutuhkan.
Sekali librari siap digunakan, dapat di-load secara langsung. Caranya dengan menuliskan
folder yang berisi file librari pada argumen pertama, contoh seperti :
--> mylibrary = lib("C:\samplelib\")
ans =
Functions files location : C:\samplelib\.
function1 function2

jika terdapat banyak librari, mungkin agak sulit untuk me-load secara manual semua
librari pada awal. Prakteknya, pernyataan lib dapat ditulis sekali untuk semua, pada file
Startup Scilab sehingga librari tersedia pada startup. Folder startup yaitu folder yang
tersimpan secara terpisah pada saat instalasi disimpan dalam variabel SCIHOME, jika
menggunakan sistem Windows pathnya dapat dipanggil :
--> SCIHOME
SCIHOME =
C:\Users\username\AppData\Roaming\Scilab\scilab-5.2.0
pada folder yang berisi variabel SCIHOME, file startup adalah .scilab. File startup secara
otomatis akan dibaca pada saat startup. Untuk membuat librari pada startup, dituliskan
secara sederhana :
// Load my favorite library .
mylibrary = lib("C:/samplelib/")

Dengan startup file, fungsi didefinisikan pada library yang bisa diakses secara langsung pada
startup Scilab.
6.2.3 Pengaturan Argumen Output
Satu fungsi mungkin memiliki nol atau banyak argumen input/output. Pada banyak
kasus, jumlah argumen input dan output adalah didefinisikan diawal dan penggunaan fungsi
seperti ini adalah mudah. Misalkan bahwa fungsi simplef didefinisikan dengan 2 argumen
input dan 2 argumen output.
function [y1 , y2] = simplef(x1,x2)
y1 = 2 * x1
y2 = 3 * x2
endfunction

Kenyataannya, jumlah argumen output seperti fungsi tersebut bisa 0, 1 atau 2. Ketika tidak
ada argumen output, nilai dari argumen output disimpan pada variabel ans. Variabel yang
bisa diset hanya variabel y1 saja. Jadi semua argumen output bisa digunakan seperti yang
diperkirakan.
-->simplef(1,2)
ans =
2.

-->y1 = simplef(1,2)
y1 =
2.

-->[y1 ,y2] = simplef(1,2)


y2 =
6.
y1 =
2.
Dari contoh di atas, terlihat bahwa terdapat cara untuk mengelola jumlah variabel
dari argumen output dari fungsi yang terdefinisi. Pengaturan jumlah variabel dari argumen
input dan output lebih fleksibel dengan menggunakan variabel argn, varargin dan varargout.

6.2.4 Tingkatan/Level dalam Call Stack


Jelas bahwa pemanggilan fungsi dapat bersarang (nested), misalnya fungsi f dapat
memanggil fungsi g, dimana sedang memanggil fungsi h dan seterusnya. Ketika Scilab di-
start, variabel didefinisikan dalam skope yang global. Ketika satu fungsi yang dipanggil dari
skope global, kondisi berada pada satu level dalam call stack. Ketika terjadi pemanggilan
fungsi yang bersarang, level atau tingkatan dalam call stack sama dengan jumlah panggilan
bersarang sebelumnya.
Tabel 6.3 perintah Scilab untuk mengelola fungsi
whereami Menampilkan pohon instruksi pemanggilan yang ada
Where Mendapatkan pohon instruksi pemanggilan yang ada

Fungsi pada tabel 6.3 menampilkan fungsi untuk memeriksa mengenai status dari call
stack. Berikut didefinisikan 3 fungsi yang sedang memanggil satu sama lain dan digunakan
fungsi whereami untuk menampilkan tingkatan pohon instruksi pemanggilan.
function y = fmain(x)
y = 2 * flevel1(x)
endfunction

function y = flevel1(x)
y = 2 * flevel2(x)
endfunction

function y = flevel2(x)
y = 2 * x
whereami()
endfunction

Pada contoh, fungsi fmain dipanggil, setelah output dihasilkan. Seperti terlihat, 3
level dari call stack ditampilkan, sesuai dengan fungsi.
--> fmain (1)
whereami called at line 3 of macro flevel2
flevel2 called at line 2 of macro flevel1
flevel1 called at line 2 of macro fmain
ans =
8.

Pada contoh terlihat, variasi level atau tingkatan dari pemanggilan :


 Level 0 : level global
 Level-1 : body dari fungsi fmain
 Level-2 : body dari fungsi flevel1
 Level-3 : body dari fungsi flevel2.
Level-level pemanggilan ini ditampilkan dalam console prompt ketika fungsi debug dilakukan
dengan pernyataan pause atau breakpoint.
6.2.5 Pernyataan rerturn
Dalam body dari sebuah fungsi, pernyataan return memungkinkan fungsi
mengeluarkan hasil. Pernyataan ini dapat digunakan dalam kasus dimana sisa dari algoritma
tidak dibutuhkan.
function y = mysum(istart,iend )
if (istart < 0) then
y = 0
return
end
if ( iend < istart ) then
y = 0
return
end
y = sum ( istart : iend )
endfunction

Fungsi mysum di atas menghitung jumlah dari integer dari istart sampai iend. Pada
konsisi umum fungsi digunakan sebagai fungsi penjumlahan. Tetapi, jika variabel istart
adalah negatif atau istart <= iend, maka kondisi tidak terpenuhi, dan variabel output y
diset sama dengan 0 dan fungsi keluar.
Berikut contoh untuk memeriksa apakah pernyataan return bekerja dengan benar dengan
menggunakan fungsi mysum :
-->mysum(1,5)
ans =
15.
-->mysum(-1,5)
ans =
0.
-->mysum(2,1)
ans =
0.
Beberapa pengembang menyatakan bahwa penggunaan beberapa pernyataan return
dalam sebuah fungsi adalah penerapan yang buruk. Memang, akan menghasikan kesulitan
pada saat debugging untuk fungsi seperti ini, karena algoritma bisa saja keluar tiba-tiba dari
body fungsi. Pengguna akan bingung apa yang sebenarnya penyebab fungsi keluar.
Hal ini mengapa, pada prakteknya penyataan return seharusnya digunakan dengan
hati-hati, dan tentu tidak dalam setiap fungsi. Aturannya return seharusnya diletakkan pada
baris akhir dari fungsi. Meskipun, dalam situasi tertentu, penggunaan return dapat
menyederhanakan algoritma, dalam rangka menghindari penulisan kode sumber yang
banyak dan tidak perlu.
6.2.6 Debugging Fungsi dengan Pernyataan pause
Pada tabel 6.4 ditampilkan penyataan pause, resume dan abort. Suatu session Scilab
biasanya terdapat dalam definisi dari algoritma baru yang dibuat dalam fungsi baru. Hal ini
sering terjadi ketika satu error sintaks dalam algoritma yang menghasilkan hasil yang salah.
Jika ditinjau masalah perhitungan dari jumlah integer dari istart sampai iend. Fungsi mysum
di atas berisi sebuah bug: argumen kedua “foo” dilewatkan pada fungsi sum yang tidak
memiliki makna pada konteks ini.
function y = mysum(istart,iend)
y = sum(iend:istart,"foo")
endfunction

Berikut ditunjukkan apa yang terjadi ketika fungsi mysum dijalakan :


--> mysum(1,10)
!-- error 44
Wrong argument 2.
at line 2 of function mysum called by :
mysum(1,10)

Untuk mendapatkan masalahnya, pernyataan pause diletakkan di dalam body dari


fungsi.
function y = mysum(istart,iend)
pause
y = sum(iend:istart,"foo")
endfunction

Kemudian fungsi mysum dipanggil lagi dengan argumen input yang sama
-->mysum(1,10)
Type 'resume ' or 'abort ' to return to standard level prompt .
-1->

Hasil “-1->” mengindikasikan bahwa call stack pada level -1. Pemeriksaan nilai dari
variabel istart dan iend dengan mudah akan terketik namanya pada console.
-1-> istart
istart =
1.
-1-> iend
iend =
10.
Selanjutnya, dari fungsi pernyataan-pernyataannya di-copy paste seperti berikut :
-1->y = sum(iend:istart,"foo")
y = sum(iend:istart,"foo")
!-- error 44
Wrong argument 2

Dapat dilihat bahwa pemanggilan fungsi sum tidak menghasilkan seperti yang
diinginkan. Argumen input “foo” benar-benar bug, dan perlu dihilangkan.
-1->y = sum(iend:istart)
y =
0.
Setelah diperbaiki, fungsi sum dipanggil kembali dan secara sintaks sudah benar,
tetapi hasil ini masih salah, karena yang diharapkan hasilnya adalah 55.
-1->y = sum(istart:iend)
y =
55.

Tapi pada kenyataannya variabel istart dan iend tertukar. Fungsi diperbaiki
kembali dan periksa apakah hasil yang diperoleh sudah seperti yang diharapkan atau tidak.
Untuk kembali ke level nol, dapat digunakan pernyataan abort untuk menginterupsi urutan
untuk kembali ke level global.
-1->abort
-->
Tampilan “-->” mengkonfirmasikan bahwa level sudah berada pada level 0 dalam
call stack. Definisi fungsi yang benar menjadi :
function y = mysum(istart,iend)
pause
y = sum (istart:iend)
endfunction

Untuk mengecek bug lagi, fungsi dipanggil kembali


-->mysum(1,10)
Type 'resume ' or 'abort ' to return to standard level prompt .
-1->

Dari hasil dapat dipastikan bahwa kode sumber sudah benar, dan dapat digunakan
pernyataan resume agar Scilab dapat mengeksekusi program seperti biasanya.
-->mysum (1,10)
-1->resume
ans =
55.
Sekarang hasilnya sudah benar. Yang perlu dilakukan adalah menghilangkan
pernyataan pause dari fungsi.
6.3 Kegiatan Praktek
1. Bacalah dan kerjakan contoh-contoh yang telah dijabarkan pada bagian 6.2.
2. Catatlah setiap point-point penting yang anda dapatkan
3. Hasil kegiatan praktek dicatat pada laporan sebagai dokumentasi hasil kegiatan
praktek yang anda lakukan.
6.4 Tugas Mandiri
1. Berikan penjelasan hasil yang anda kerjakan pada bagian kegiatan praktek.
2. Buatlah fungsi untuk menentukan sebuah bilangan apakah bilangan prima atau
bukan.
3. Buatlah fungsi prima tersebut menjadi fungsi librari
4. Buatlah fungsi untuk menghitung sejumlah bilangan prima yang dinputkan dengan
jangkauan tertentu.
Misalkan
function [np,jp] = myprima(bawal,bakhir)


endfunction
Dimana,
np : berapa banyak bilangan prima yang ditemukan
jp : total penjumlahan bilangan prima yang ditemukan
bawal : nilai awal rentang bilangan

bakhir : nilai akhir rentang bilangan


Praktikum 7
PLOTTING

7.1 Tujuan
Diharapkan setelah praktikum ini mahasiswa sebagai praktikan dapat mengetahui dan
memahami :
1. bagaimana membuat plot (grafik) 2D dan plot countur,
2. bagaimana meng-kustomisasi, judul dan legend dari grafik atau plot yang dihasilkan,
3. dan, bagaimana meng-ekspor plot tersebut.

7.2 Dasar Teori


Scilab dapat menghasilkan berbagai plot 2D dan 3D. Scilab dapat membuat plot x-y
dengan fungsi plot, plot countur dengan fungsi countur, plot 3D dengan fungsi surf,
histogram dengan fungsi histplot dan berbagai tipe plot. Fungsi plot yang sering digunakan
ditampilkan pada tabel 7.1
Tabel 7.1 Fungsi Plot Scilab
plot Plot 2D
surf Plot 3D
countur Plot countur
pie Chart pie
histplot Histogram
bar chart bar
barh Chart bar horisontal
hist3D Histogram 3D
polarplot Plot koordinat polar
Matplot Plot 2D dari sebuah matriks menggunakan warna
Sgrayplot Plot 2D mulus dari sebuah permukaan menggunakan warna
Grayplot Plot 2D dari permukaan menggunakan warna

Untuk menghasilkan sebuah contoh dari plot 3D, dapat cukup dengan mengetikkan
pernyataan surf() pada consolo Scilab.
-->surf()

Tabel 7.2 Fungsi Scilab ketika membuat sebuah plot


linespace Vektor spasi secara linier
feval Mengevaluasi sebuah fungsi pada sebuah grid
legend Konfigurasi legend dari plot
title Konfigurasi judul dari plot
xtitle Konfigurasi judul dan legend dari plot

7.2.1 Plot 2D
Ditekankan bahwa penggunaan fungsi verktorisasi akan menghasilkan data matriks
sekali panggil. Dimulai dengan mendefinisikan fungsi yang akan diplot. Fungsi myquadratic
menghitung kuadrat dari argumen input x dengan operator “^”.
function f = myquadratic(x)
f = x^2
endfunction

Fungsi linspace digunakan untuk menghasilkan 50 nilai dalam interval [1,10]


xdata = linspace(1,10,50);

Variabel xdata sekarang berisi vektor baris dengan 50 masukan, dimana nilai pertama sama
dengan 1 dan nilai terakhir sama dengan 10. Nilai tersebut dapat dimasukkan ke dalam
fungsi myquadratic dan mendapatkan nilai fungsi pada titik yang diberikan.
ydata = myquadratic(xdata);

pernyataan ini akan menghasilkan vektor baris ydata, dimana berisi 50 masukkan.
Selanjutnya fungsi plot digunakan untuk menampilkan data sebagai plot x-y.
plot(xdata,ydata)

gambar 7.1 menyajikan grafik hasil plot x-y

Gambar 7.1 Grafik plot(xdata,ydata)


Perhatikan bahwa dapat dihasilkan plot yang sama tanpa menggunakan array ydata.
Memang argumen input kedua dari fungsi plot merupakan sebuah fungsi, seperti pernyataan
berikut :
plot(xdata,myquadratic )
ketika jumlah titik yang ingin dikelola dalam jumlah yang besar, penggunana fungsi secara
langsung akan mengurangi penggunaan memori yang banyak, karena menghindari
penggunaan vektor ydata.
7.2.2 Plot Contour
Pada bagian ini akan disajikan plot contour dari fungsi multivariat dan menggunakan
fungsi plot contour. Tipe dari grafik sering digunakan dalam konteks optimasi numerik yaitu
mengambarkan fungsi dua variabel secara semu pada lokasi optimumnya.
Jika diberikan fungsi f dengan n variabel f(x) = f(x1,…,xn) dan x  Rn, jika diberikan sebuah
nilai   R , maka persamaan
f(x) = 
selanjutnya didefinisikan permukaan (n + 1) dalam ruang dimensi Rn +1.
Ketika n = 2, titik z = f(x1,x2) menyatakan suatu permukaan dalam ruang tiga dimensi
(x1,x2, z)  R3. Hal ini akan memungkinkan menggambarkan plot contour. Untuk n > 3 plot ini
tidak bisa dilakukan. Satu solusi yang mungkin pada kasus ini adalah mengambil dua
parameter yang signifikan untuk menggambar plot contour dengan variasi parameter ini.
Fungsi contour Scilab memungkinkan mem-plot contour dari sebuah fungsi f. Sintaks
untuk fungsi countur sebagai berikut :
contour(x,y,z,nz)

Dimana,
 x adalah nilai vektor baris dari x (sama dengan y) dengan ukuran n1 (terhadap
n2).
 z adalah matriks real dengan ukuran (n1,n2), berisi nilai dari fungsi atau suatu
fungsi scilab yang mendefinisikan permukaan z=f(x,y).
 nz adalah nilai level atau angka dari level.
Berikut contoh sederhana dari bentuk fungsi contour, dimana fungsi myquadratic dilewatkan
sebagai argumen input. Fungsi myquadratic mengambil dua argumen input x 1 dan x2 dan
2 2
mengembalikan f ( x 1 , x 2 ) =x1 + x 2. Fungsi linspace digunakan untuk men-generate vektor dari
data sehingga fungsi dianalisis dalam jangkauan [-1,1]2.
function f = myquadratic2arg(x1,x2)
f = x1**2 + x2**2;
endfunction
xdata = linspace(-1,1,100);
ydata = linspace(-1,1,100);
contour (xdata,ydata,myquadratic2arg,10)
hasil plot contour disajikan dalam gambar 7.2.

2 2
Gambar 7.2 Plot Contour untuk fungsi f ( x 1 , x 2 ) =x1 + x 2

secara praktis, dapat pula fungsi yang dibuat memiliki header z = myfunction(x), dimana
variabel input x adalah vektor baris. Masalahnya adalah hanya ada satu argumen input,
sedangkan untuk fungsi contour diperlukan dua argumen. Ada dua kemungkinan solusi
untuk persoalan ini :
 menyediakan data untuk fungsi contour dengan dibuat dengan dua perulangan
 menyediakan data untuk fungsi contour dengan menggunakan fungsi feval
 mendefinisikan fungsi baru yang memanggil fungsi pertama.
Tiga solusi ini yang dibahas pada bagian ini. Tujuan pertama, pengguna dapat memilih
metode yang dianggap terbaik dari situasi yang ada. Tujuan kedua menunjukkan bahwa
masalah dapat dihindari jika terdapat konsistensi penggunaan dari fungsi yang disediakan
oleh Scilab dilakukan.
Berikut ini akan disajikan fungsi myquadratic1arg, yang menggunakan satu vektor sebagai
input argument tunggal. Selanjutnya, dibuat dua perulangan bersarang untuk menghitung
matriks zdata, yang berisi nilai-nilai z. Nilai z digunakan untuk menghitung semua kombinasi
dari titik (x(i),y(j))  R2, untuk i = 1,2,……,nx dan j = 1,2,……ny, dimana nx dan ny
adalah jumlah titik koordinat x dan y. terakhir dipanggil fungsi contour, dengan daftar dari
level yang diperlukan.
function f = myquadratic1arg(x)
f = x (1)**2 + x (2)**2;
endfunction
xdata = linspace ( -1 , 1 , 100 );
ydata = linspace ( -1 , 1 , 100 );

// Caution ! Two nested loop , this is bad.


for i = 1: length(xdata)
for j = 1:length(ydata)
x = [xdata(i) ydata (j)]. ';
zdata(i,j) = myquadratic1arg(x);
end
end
contour(xdata,ydata,zdata,[0.1 0.3 0.5 0.7])

plot contour ditampilkan pada gambar 7.3

2 2
gambar 7.3 Gambar 7.2 Plot Contour untuk fungsi f ( x 1 , x 2 ) =x1 + x 2, dimana levelnya
dikonfigurasi
Skrip ini bekerja dengan sempurna. Namun belum efisien karena menggunakan dua
perulangan bersarang dan hal ini dihindari dalam Scilab dengan alasan kinerja. Masalah lain
yang timbul adalah penyimpanan matriks zdata yang mengkonsumsi banyak ruang memori
ketika jumlah titik sangat besar. Oleh karenanya metode ini dihindari, karena buruk
menggunakan fitur yang disediakan oleh Scilab.
Berikut digunakan fungsi feval, yang mengevaluasi fungsi pada grid dari nilai dan
keluaran hasil perhitungan data. Grid yang dibangkitkan dibuat dari semua kombinasi titik
(x(i),y(j))  R2. Diasumsikan bahwa di sini tidak ada kemungkinan untuk memodifikasi
fungsi myquadratic1arg, yang mengambil satu argumen input. Sehingga, fungsi
myquadratic3, dengan dua argumen input. Fungsi myquadratic3 akan dilewatkan argumen
pada fungsi feval dan meng-generate matriks zdata.
function f = myquadratic1arg(x)
f = x (1)**2 + x (2)**2;
endfunction
function f = myquadratic3(x1,x2)
f = myquadratic1arg([x1 x2])
endfunction
xdata = linspace (-1,1,100);
ydata = linspace (-1,1,100);
zdata = feval ( xdata , ydata , myquadratic3 );
contour ( xdata , ydata , zdata , [0.1 0.3 0.5 0.7])

Skrip terakhir ini tentu akan menghasilkan plot yang sama dengan ditampilkan pada gambar
7.3. Metode ini juga untuk menghindari kemungkinan masalah penyimpanan matriks zdata
yang mempunyai ukuran 100 x 100.
Akhirnya, cara ketiga untuk membuat plot, sama dengan skrip yang terakhir namun fungsi
myquadratic3 dilewatkan secara langsung pada fungsi contour.
function f = myquadratic1arg(x)
f = x (1)**2 + x (2)**2;
endfunction
function f = myquadratic3(x1,x2)
f = myquadratic1arg([x1 x2])
endfunction
xdata = linspace(-1,1,100);
ydata = linspace(-1,1,100);
contour (xdata,ydata,myquadratic3,[0.1 0.3 0.5 0.7])

Skrip yang paling terakhir ini menghasilkan grafik juga sama dengan gambar 7.3.
Keuntungan utamanya hanya bahwa skrip ini tidak membuat matriks zdata.
7.2.3 Title, Axes dan Legend
Bagian ini akan dibahas fitur grafik Scilab yang mengkonfigurasi judul, axes dan
legend dari suatu plot x-y. berikut adalah contoh fungsi plot.
function f = myquadratic ( x )
f = x.^2
endfunction
xdata = linspace ( 1 , 10 , 50 );
ydata = myquadratic ( xdata );
plot ( xdata , ydata )

Grafik hasil plot fungsi ini ditampilkan pada gambar 7.4


Gambar 7.4 Plot x-y fungsi quadratic – grafik ini sama dengan grafik pada gambar 7.1
Sistem grafik Scilab berdasarkan graphics handles. Graphics handles menyediakan
sebuah akses object-oriented pada field dari entitas grafik. Layout grafik didekomposisi ke
dalam sub-sub obyek seperti garis untuk kurva, aksis x dan y, judul, legend dan seterusnya.
Setiap objek dapat didekomposisi ke dalam objek lain jika diinginkan. Setiap objek grafik
berhubungan dengan sekumpulan item properti, seperti lebar, warna dari garis kurva
misalnya. Properti ini dapat di-query dan dikonfigurasi secara sederhana dengan mengatur
setiap nilainya seperti variabel lain dalam Scilab. Pengaturan handles sangat mudah dan
efisien.
Tetapi, konfigurasi dasar dari plot dapat dilakukan dengan pemanggilan fungsi.
Contoh berikut untuk membuat fungsi judul untuk mengkonfigurasi plot.
title ( "My title " );

selanjutnya, aksis dikonfigurasi dengan menggunakan fungsi xtitle :


xtitle ( "My title " , "X axis " , "Y axis " )

Hasilnya seperti ditampilkan pada gambar 7.4


jika diinginkan untuk membandingkan dua set data pada plot 2D, yakni dilakukan
dengan satu set data x dan dua set untuk data y. Skrip berikut didefinisikan dua fungsi f(x)
= x2 dan f(x) = 2x2 dan plot data pada plot x-y yang sama. sebagai tambahan digunakan
“+-” dan “o-” untuk membedakan kedua kurva.
function f = myquadratic ( x )
f = x^2
endfunction
function f = myquadratic2 ( x )
f = 2 * x^2
endfunction
xdata = linspace ( 1 , 10 , 50 );
ydata = myquadratic ( xdata );
plot ( xdata , ydata , "+-" )
ydata2 = myquadratic2 ( xdata );
plot ( xdata , ydata2 , "o-" )
xtitle ( "My title " , "X axis " , "Y axis " );
Gambar 7.5 Plot x-y dari dua fungsi kuadratic – legend dikonfigurasi sehingga kedua fungsi
f(x) = x2 dan f(x) = 2x2 dapat dibedakan.

7.2.4 Export
Scilab dapat meng-eksport beberapa gambar atau grafik ke dalam format vectorial
dan bitmap. Seperti yang ditunjukkan pada tabel 7.3.
Ketika plot dihasilkan, grafiknya dapat di-eksport atau dikirim ke dalam sebuah file
dengan menggunakan menu file>Export to… . Selanjutnya dapat diatur nama dari file dan
tipenya.
Tabel 7.3 Fungsi Export
Vectorial
xs2png Export ke PNG
xs2pdf Export ke PDF
xs2svg Export ke SVG
xs2eps Export ke Encapsulated Postscript
xs2ps Export ke Postscript
xs2emf Export ke EMF (hanya untuk Windows)
Bitmap
xs2fig Export ke FIG
xs2gif Export ke GIF
xs2jpg Export ke JPG
xs2bmp Export ke BMP
xs2ppm Export ke PPM

Penggunaan fungsi-fungsi xs2* dituliskan pada tabel 7.3. Semua fungsi didasarkan
pada urutan pemanggilan :
xs2png (window_number,filename)

Dimana window_number adalah jumlah dari window grafik dan filename adalah
nama dari file yang akan dikirim. Sebagai contoh jika plot yang dkirim berada pada window
dengan nomor 0, yang secara default dikirim ke file yang diberi nama “ foo.png”, maka
penulisannya sebagai berikut :
xs2png(0,"foo.png")

7.3 Kegiatan Praktek


1. Bacalah dan kerjakan contoh-contoh yang telah dijabarkan pada bagian 7.2.
2. Catatlah setiap point-point penting yang anda dapatkan
3. Hasil kegiatan praktek dicatat pada laporan sebagai dokumentasi hasil kegiatan
praktek yang anda lakukan.
7.4 Tugas Mandiri
1. Buatlah skrip untuk menggambar grafik dari persamaan f(x)= ax2 + bx + c
2. Buatlah skrip untuk menggambar grafik dari persamaan d = vot + ½ at2
3. Buatlah skrip untuk menampilkan jumlah siswa pada satu sekolah dengan menggunakan
diagram batang. Data input jumlah periode, jumlah siswa wanita dan laki-laki pada tiap
periode. Kemudian eksport ke dalam file.
4. Buat grafik pada nomor 1 dan 2 menjadi satu grafik kemudian beri judul, legend dan axis,
kemudian export ke dalam file.
REFERENSI

Annigeri, S. An Introduction to Scilab. December 2009. Pdf file.

Baudin, M., INTRODUCTION TO SCILAB. Scilab Consortium – Digiteo.All rights reserved.


November 2010. Pdf file.

Scilab For Very beginners. Scilab Enterprises. S.A.S –143. bis rue Yves Le Coz 78000 Versailles


(France).  www.scilab-enterprises.com. Pdf files

https://help.scilab.org

Anda mungkin juga menyukai