Laporan Praktikum 14 (1) (19-01-2015) Metode Komputasi Matematika Rangkuman Video Program Scilab Syarif Abdullah (G551150381) Matematika Terapan FMIPA Institut Pertanian Bogor e-mail:
[email protected] 19 Januari 2016 Script and Functions Ketika beberapa perintah dieksekusi, mungkin lebih nyaman untuk menulis pernyataan ke dalam sebuah file dengan Scilab editor yang biasa disebut Sript File. Untuk mengeksekusi perintah tertulis dalam script file dapat digunakan functions “exec” sesuai dengan nama pada script file. Fail-fail tersebeut umumnya mempunyai ekstensi “ .sce” atau “ .sci” bergantung pada apa yang termuat. File yang memiliki ekstensi .sci memuat: -
Functions- functions Scilab dan/atau Functions yang didefinisikan/dibuat oleh user.
Pengeksekusian file ini menjalankan functions dalam Scilab environment (tetapi tidak mengeksekusinya). Sedangkan File yang memiliki ekstensi .sce memtuat: -
Functions Scilab dan Functions yang didefinisikan/dibuat oleh user
Misalkan dibuat dalam SciNotes dan dijalankan file dengan nama dan ekstensi Assalamualaikum.sce sebagai berikut: disp("Assalamualaikum") a=5;b=2;c=3; d=a+b+c; disp(d) disp("Waalaikumsalam") Bila kita jalankan dengan klik botton menu Execute dan Load into Scilab maka dalam Scilab Console akan menampilkan -->disp("Assalamualaikum") Assalamualaikum -->a=5;b=2;c=3; -->d=a+b+c; -->disp(d) 10.
-->disp("Waalaikumsalam") Waalaikumsalam Kita juga dapat memanggil dan menjalankan file ekstensi .sce dalam Scilab Console secara langsung dengan perintah “exect(“fileextensi.sce”)”. Misal kita ganti nilai a=1, maka dengan memanggil langsung pada Scilab Console, akan dihasilkan; -->exec("Assalamualaikum.sce") -->disp("Assalamualaikum") Assalamualaikum -->a=1;b=2;c=3; -->d=a+b+c; -->disp(d) 6. -->disp("Waalaikumsalam") Waalaikumsalam Selanjutnya misalkan kita buat dan jalankan suatu function dengan extensi .sci pada SciNotes yaitu program konversi menit ke detik sebagai berikut: //program konversi menit ke detik function [detik]=menit2detik(menit) detik=menit*60 endfunction Bila kita jalankan dengan klik botton menu Execute dan Load into Scilab maka dalam Scilab Console akan menampilkan -->//program konversi menit ke detik -->function[detik]=menit2detik(menit) --> detik=menit*60 -->endfunction Hal yang perlu diingat adalah ketika kita memanggil fungtion yang kita buat, jangan sampai lupa nama functionsnya. Dalam hal ini adalah menit2detik. Sehingga bila kita masiukkan suatu nilai maka akan mengeksekusi suatu jawaban yang dihitung oleh functions tersebut. Misal function yang kita buat kita jalankan dan diberi nilai sebagai berikut: -->menit2detik(2) ans = 120.
-->menit2detik(0.5) ans = 30. Sekarang akan kita gunakan functions yang memuat lebih dari satu intput dan output. Misalkan kita buat suatu functions sebagai berikut: -->//program koordinat polar ke kartesius -->function [x,y]=polar2rect(r,theta) --> x=r*cos(theta*%pi/180) --> y=r*sin(theta*%pi/180) -->endfunction Di mana x dan y adalah output serta r dan theta adalah varibel input. Sehingga bila kita masukkan suatu nilai r dan theta dan kita pangil function polar2rect akan menghasilkan output x dan y. Misalkan kita beri nilai sebagai berikut: -->r=2 r = 2. -->theta=45 theta = 45. -->[x1,y1]=polar2rect(r,theta) y1 = 1.4142136 x1 = 1.4142136 Salah satu hal yang menarik pada Scilab adalah kita dapat mendefinisikan sembarang bilangan dari functions dalam sebuah file .sci Hal yang perlu diingat dan diperhatikan: -
Default semua variabel yang didefinisikan pada sebuah functions adalah variabel local Jangkauan dari variabel local digunakan pada function sampai endfunction dari functions yang didefinisikan
Keuntungan dari fitur ini adalah -
Kita dapat menggunakan nama variabel yang sama pada functions yang berbeda Variabel-variabel ini tidak akan tercampur kecuali kita menggunakan variabel global Untuk lebih mengetahui tentang variabel global, buka help global
Catatan: jika sembarang variabel ditampilkan atau dimonitor dalam sebuah functions, maka perintah “disp” diperlukan. Dalam file functions, kita dapat mengecek sendiri pengaruh menggunakan semicolon(;) pada akhir pernyataan. Juga bila digunakan pernyataan disp(“...”). Functions adalah bagian dari code yang mendefinisikan input dan output seperti variabel local. Cara yang paling sederhana mendefinisikan functions yaitu dengan menggunakan perintah ‘deff()’. Terdapat 2 parameter string : -
String pertama mendefinisikan hubungan pada functions String kedua mendefinisikan pernyataan dari functions
Perintah “deff” mendefinisikan functions pada scilab dan juga menjalankannya. Untuk memuat functions yang didefinisikan dengan “deff” gunakan menu “execute” Misalkan kita mempunyai file .sci sebagai berikut: deff(“[radians]=degrees2radians(degrees)”,”radians=degrees*(%pi/180)”) di mana [radians]=degrees2radians(degrees) adalah suatu deklarasi dan radians=degrees*(%pi/180) adalah suatu statement/pernyataan. File dengan ekstensi .sce adalah file script : -
File-file tersebut berisi perintah scilab yang kita masukkan selama proses File-file tersebut dapat meringkas baris komentar yang digunakan dalam mendokumentasikan functions File-file tersebut juga dapat dieksekusi dengan perintah exec
File dengan ekstensi .sci adalah file functions yang diawali dengan pernyataan functions. Sebuah file .sci dapat mempunyai banyak definisi functions yang berisi sembarang bilangan dari pernyataan scilab yang menunjukkan operasi pada argumen functions atau pada variabel output setelah functions itu di evaluasi/dieksekusi. Percabangan Bersyarat Percabangan bersyarat adalah suatu kondisi apabila syarat dari kondisi itu terpenuhi maka akan menjalankan suatu perintah dan apabila tidak terpenuhi maka akan melakukan perintah selain kondisi yang terpenuhi. Kondisi dalam percabangan ini terdapat beberapa kasus yaitu satu kasus, dua kasus, tiga kasus atau lebih. Biasanya pada percabangan bersyarat kita gunakan perintah IF kondisi THEN, tetapi bisa juga dilanjutjkan dengan ELSEIF atau ELSE apabila terdapat percabangan bersyarat yang lain. Selain IF-THEN, adapula perintah CASE untuk beberapa percabangan bersyarat.
Misalkan suatu percabangan bersyarat yang mempunyai satu kondisi, -->n=42 n = --> if(n==42) then -->
disp(“the number is forty two”)
the number is forty two --> end Dari contoh diatas dilihat bahwa kondisi dengan syarat n==42 terpenuhi (True). Karenanya menghasilkan suatu tampilan the number is forty two. Misalkan suatu percabangan bersyarat yang mempunyai dua kondisi, -->n=54 n = -->if (n==42) then --> disp(“the number is forty two”) -->elseif (n==54) then --> disp(“the number is fifty four”) the number is fifty four -->else --> disp(“the number is neither forty two nor fifty four”) -->end Pada contoh di atas terlihat bahwa terdapat percabangan bersyarat lain dari percabangan pertama, sehingga digunakan perintah elseif untuk memberikan percabangan bersyarat yang lain apabila syarat pertama tidak terpenuhi, dan jika pada syarat ke-2 tidak dipenuhi, maka tetap menampilkan suatu perintah yang lain dengan else selain dari syarat percabagan di atasnya. -->x=3; y=5; z=4; -->if x>5 then -->disp(x),elseif x>6 then disp(y), else
--> disp(z) -->end Pada contoh di atas ditunjukkan bahwa dalam percabangan bersyarat tidak hanya menggunakan tanda “==”, namun dapat juga menggunakan tanda <, >, ~= atauoperator yang lain. Berikut aka diberikan penggunaan CASE dari percabangan bersyarat dengan melihat sayarat sebagai suatu kasus. -->n=100, n = -->select n -->case 42 --> disp(“the number is forty two”) -->case 54 --> disp(“the number is fifty four”) -->else --> disp(“the number is neither forty two nor fifty four”) the number is neither forty two nor fifty four -->end Terlihat bahwa selain menggunakan IF-THEN, kita dapat juga menggunakan perintah CASE dengan membagi syarat-syarat yang diketahui. Iterasi Atau Perulangan (Looping) Dalam sebuah iterasi/perulangan biasanya kita menggunakan perintah for, while, repeat-until. Adapula percampuran dari perintah iterasi dan suatu conditional brancing. Dalam iterasi, terdapat istilah break yaitu perintah apabila dalam conditional brancing terpenuhi, maka akan mengakhiri suatu iterasi. Selain itu terdapatpula perintah continue yaitu perintah apabila conditional brancing terpenuhi, maka iterasi akan dilanjutkan tanpa memperhatikan nilai dari iterasi tersebut (dilompati). Berikut akan diberikan beberapa contoh; Contoh Iterasi/Looping -->for i=1:2:7 --> disp(i) -->end
1. 2. 3. 5. 7. Contoh Iterasi biasa dan Iterasi dengan Conditional Brancing dan perintah Break -->for i=1:5 --> disp(i) -->end 1. 2. 3. 4. 5. -->for i=1:5 --> disp(i) --> if (i==2), -->
break
--> end -->end 1. 2. Terlihat bahwa iterasi/looping ketika pada kondisi syarat percabangan terpenuhi (True) dan dengan perintah break maka iterasi/looping dihentikan.
Contoh Iterasi biasa dan Iterasi dengan Conditional Brancing dan perintah continue -->for i=1:5 --> if(i<=3) then -->
continue
--> else -->
disp(i)
--> end -->end 4. 5. Terlihat bahwa iterasi/looping ketika pada kondisi syarat percabangan terpenuhi (True) dan dengan perintah continue maka iterasi/looping dilompati/tidak diperhatikan dan melanjutkan pada iterasi selanjutnya. Untuk melihat beberapa simbol operator dapat dilihat dengan menggunakan “-->help <--“ Berikut akan diberikan contoh iterasi dengan penggunaan vektor -->v = [1 5 3]; -->for x=v --> disp(x) -->end 1. 5. 3. -->v = [1 5 3]; -->for x=v --> disp(x^2) -->end
1. 25. 9.
Berikut diberikan contoh Iterasi/Looping while dengan conditional brancing dan perintah break -->i=0; -->while(i<=5) --> i=i+1; --> disp(i) -->end 1. 2. 3. 4. 5. 6.
-->i=0; -->while(i<=5) --> i=i+1; --> disp(i) --> if(i==3) then -->
break
--> end -->end
1. 2. 3. Terlihat bahwa ketika syarat kondisi terpenuhi dan ada perintah break, maka iterasi/looping akan dihentikan. File Handling (Penanganan File/Membaca File) Berikut akan dibahas tentang File Handling dengan functions sebagai berikut: -
Menulis file menggunakan write() Membaca dari suatu file menggunakan read() Membuka sebuah file yang ada menggunakan mopen() Menutup file yang masih dibuka menggunakan mclose()
-->random_matrix=rand(20,1); // membuat random matrix -->pwd //melihat directory sebelumnya ans = D:\Documents -->write('random-numbers.txt',random_matrix)//menulis/membuat file random matriks dengan file txt. -->new_vector=read('random-numbers.txt',20,1)//membaca file dari random-numbers.txt dan didefinisikan dengan nama vektor baru dengan banyak baris 20 new_vector = 0.2113249 0.7560439 0.0002211 0.3303271 0.6653811 0.6283918 0.8497452 0.6857310 0.8782165
0.0683740 0.5608486 0.6623569 0.7263507 0.1985144 0.5442573 0.2320748 0.2312237 0.2164633 0.8833888 0.6525135 -->new_vector=read('random-numbers.txt',7,1)// //membaca file dari random-numbers.txt dan didefinisikan dengan nama vektor baru dengan banyak baris 7 new_vector = 0.2113249 0.7560439 0.0002211 0.3303271 0.6653811 0.6283918 0.8497452
r = membuka file untuk membaca rb = membuka binary file untuk membaca rt = membuka file text untuk membaca w = membuat file baru untuk menulis atau membuka dan memotong file ke panjangnya nol wb = membuat binary file untuk menulis atau membuka atau memotong file ke panjangnya nol wt = membuat text binary file untuk menulis atau membuka dan memotong file ke panjangnya nol a atau b = menambahkan/melampirkan (membuka file untuk menulis diakhir file atau membuat file untuk menulis)
r+ atau r+b = membuka file untuk update(membaca atau menulis) Fd=mopen(file-name,mode) : -
Digunakan untuk membuka file yang ada Cocok untuk prosedur fopen C Mode adalah karakter string Mengontrol untuk apakah file dibuka
mclose(fd) :
menutup file yang dibuka oleh mopen fd adalah file deskripsi dari file yang dibuka jika fd dijalankan, mclose menutup file yang terakhir dibuka
-->fd_r=mopen('random-numbers.txt','rt') fd_r = 1. -->mclose(fd_r) ans = 0. User-defined Input & Output Pada bagian ini akan dibahas mengenai Input dan Output yang didefinisikan oleh User. Pada bagian ini akan dipelajari tentang: -
Input Functions Formatting the Output Save Functions Load Functions
Input Functions: Fungsi input dapat ditulis dalam 2 cara: x=input(“message to display”) x=input(“message to display”,”string”) Misalkan pada scilab: -->x=input("Masukkan Usia Anda= ") Masukkan Usia Anda= a
Undefined variable: a Masukkan Usia Anda= 29 x = 29. Hal ini terjadi kesalahan pada bagian pertama karena yang terbaca haruslah sebuah konstanta. Bukan sebuah string. -->y=input("Masukkan Usia Anda= ","string") Masukkan Usia Anda= ayis y = ayis -->y=input("Masukkan Usia Anda= ","string") Masukkan Usia Anda= 29 y = 29 Terlihat bahwa pada bagian yang pertama atau yang kedua tetap terbaca di mana type dari “ayis” dan “29” terbaca sebagai string. Berikut untuk melihat tipe data yang telah dimasukkan terakhir. -->typeof(x) ans = constant -->typeof(y) ans = string Format output mprintf() berfungsi untuk mengkonversi, memformat dan menulis data pada scilab console dan penghubung untuk versi C-code dari funsi printf
-->mprintf('At iteration %i, Result is:\nalpha=%f',33,0.535)//%i At iteration 33, Result is: alpha=0.535000 Artinya Pada iterasi ke-33 nilai dari alpha=0.535000 -->mprintf("value of x=%d is taken as a CONSTANT, while value of y=%s is taken as a STRING",x,y) value of x=29 is taken as a CONSTANT, while value of y=29 is taken as a STRING Artinya nilai 29 dari x adalah sebuah Konstanta dan nilai 29 pada y adalah sebuah srting. Save Functions Save() Save thissession: Akan menyimpan nilai sebelumnya dari semua variabel pada file thissession. File ini tidak bisa di edit. save(filename) : Menyimpan semua variabel yang aktif, pada file yang didefinisikan dengan filename save(fd): Menyimpan semua variabel yang aktif, pada file yang didefinisikan dengan deskripsi fd save(filename,x,y) atau save(fd,x,y) : Menyimpan hanya nama variable x dan y Contoh: -->a=eye(2,2) a = 1. 0. 0. 1. -->b=ones(a) b = 1. 1. 1. 1. -->save('matrix-a-b.dat',a,b)// menyimpan variabel a dan b pada file Warning: Scilab 6 will not support the file format used. Warning: Please quote the variable declaration. Example, save('myData.sod',a) becomes save('myData.sod','a').
Warning: See help('save') for the rational. -->clear a b// menghapus variabel a dan b -->a // cek variabel a !--error 4 Undefined variable: a -->b // cek variabel b !--error 4 Undefined variable: b Artinya variabel a dan b telah terhapus, dan tidak terdefinisi. Load Functions Variabel sebelumnya yang telah diclear biasanya telah terhapus dan tidak terdefinisi kembali. Tetapi variabel a dan b sebenarnya telah disimpan pada Save thissession. Sehingga apabila kila lakukan perinah load, maka variabel a dan b akan terdefinisi kembali. Berikut adalah langkah-langkahnya: -->load('matrix-a-b.dat','a','b') -->a a = 1. 0. 0. 1. -->b b = 1. 1. 1. 1.
Sekian pembahasan kali ini. Kuang Lebihnya Mohon Maaf. Semoga Bermanfaat. Amin.
Referensi:
https://youtu.be/SW8ODD8dIf8?list=PL7WFbgpeASD1vxft2QhiTbnXlp6y5CF6J https://youtu.be/c4xF6pt4p2E?list=PL7WFbgpeASD1vxft2QhiTbnXlp6y5CF6J https://youtu.be/VduNY6CGOMg?list=PL7WFbgpeASD1vxft2QhiTbnXlp6y5CF6J https://youtu.be/EVfoufoVjFM?list=PL7WFbgpeASD1vxft2QhiTbnXlp6y5CF6J https://youtu.be/Zpp7_kc5l-M?list=PL7WFbgpeASD1vxft2QhiTbnXlp6y5CF6J Scilab Program