Oleh :
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.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
5. Hasil kegiatan praktek dicatat pada laporan sebagai dokumentasi hasil kegiatan
praktek yang anda lakukan.
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
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
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]
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. 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.
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
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.
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 = ”*”, 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.
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.
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.
Penukaran kolom juga dapat dilakukan pada matriks A dengan pernyataan sebagai berikut :
A(:,[3 1 2]).
-->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.
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.
6. Hasil kegiatan praktek dicatat pada laporan sebagai dokumentasi hasil kegiatan
praktek yang anda lakukan.
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)
“.*” 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.
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.
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
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
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
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
Penyataan WHILE memiliki kinerja yang sama dengan pernyataan FOR. Oleh
karenanya pernyataan vektorisasi seharusnya dipertimbangkan sebelum mendesain
algoritma dengan perulangan menggunakan WHILE.
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);
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
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
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
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 )
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
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.
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.
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
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
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
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.
Untuk menghasilkan sebuah contoh dari plot 3D, dapat cukup dengan mengetikkan
pernyataan surf() pada consolo Scilab.
-->surf()
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
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)
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 );
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 )
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")
https://help.scilab.org