Anda di halaman 1dari 103

MODUL PRAKTIKUM KOMPUTASI GEOFISIKA

Tim Penyusun :
Indriati Retno Palupi, S.Si., M.Si.
Wiji Raharjo, S.Si., M.Sc.
Tim Asisten Komputasi Geofisika

Nama :
NIM : a
Plug :

LABORATORIUM GEOFISIKA EKSPLORASI


JURUSAN TEKNIK GEOFISIKA </>
FAKULTAS TEKNOLOGI MINERAL
UNIVERSITAS PEMBANGUNAN NASIONAL “VETERAN” Laboratorium Komputasi Geofisika
YOGYAKARTA Teknik Geofisika
UPN “Veteran” Yogyakarta
KATA PENGANTAR

Puji syukur kehadirat Allah SWT atas segala rahmat, hidayah dan inayahNya sehingga
kami dapat menyelesaikan Modul Praktikum Komputasi ini dengan baik. Modul Praktikum ini
disusun bersama-sama tim dosen pengampu mata kuliah Komputasi Geofisika dan Inversi
Geofisika dan Tim Asisten Komputasi Geofisika untuk memberikan petunjuk praktikum bagi
mahasiswa Jurusan Teknik Geofisika Universitas Pembangunan Nasional “Veteran”
Yogyakarta.
Pada pelaksanaannya mahasiswa diharapkan dapat mengaplikasikan metode Numerik
dan Pemrograman dalam penerapannya di bidang Komputasi Geofisika. Selain itu mahasiswa
juga diharapkan telah mempersiapkan dasar teori dari beberapa buku referensi yang telah
tersedia di perpustakaan. Pelaksanaan praktikum ini meliputi pre-test, pengamatan/pelaksanaan
praktikum, dan pembuatan laporan sementara pada saat setelah praktikum. Untuk laporan akhir
disusun satu minggu setelah pelaksanaan ke dalam loker dosen pengampu.
Pada kesempatan ini kami mengucapkan banyak terimakasih kepada semua pihak yang
telah membantu dalam penelitian ini. Terutama kepada dosen-dosen Teknik Geofisika UPN
“Veteran” Yogyakarta yang telah memberikan masukan saran dan kritik.
Demikian pengantar dari kami semoga buku panduan praktikum ini dapat bermanfaat
dan dapat menambah ilmu pengetahuan untuk semua pihak yang menggunakan panduan ini,
terimakasih.

Tim Penyusun

II
DAFTAR ISI

HALAMAN JUDUL ............................................................................................................ i


KATA PENGANTAR ......................................................................................................... ii
DAFTAR ISI ........................................................................................................................... iii

BAB I Matlab Dan Algoritma............................................................................ 1


1.1. Bagian-Bagian Matlab ................................................................................................... 1
1.2. Array Dan Matriks .......................................................................................................... 4
1.3. Algoritma........................................................................................................................... 5
1.4. Proses Translasi Algoritma ke Pseudocode Matlab .............................................. 8

BAB II Visualisasi Data Dan Animasi Matlab ................................................. 16


2.1. Visualisasi Data ............................................................................................................... 16
2.1.1. Visualisasi 2 Dimensi ........................................................................................... 19
2.1.2. Visualisasi 3 Dimensi ........................................................................................... 23
2.2. Animasi .............................................................................................................................. 29
2.2.1. Menggunakan Fungsi............................................................................................ 30
2.2.2. Animasi Berulang Berdasar Algoritma(Proses Looping) .......................... 31

BAB III Metode Numerik................................................................................... 34


3.1. Deret Taylor ...................................................................................................................... 34
3.2. Analisa Galat .................................................................................................................... 34
3.3. Solusi Persamaan Linear ............................................................................................... 35
3.4. Solusi Persamaan Non-Linear ..................................................................................... 36
3.5. Regresi Linear .................................................................................................................. 41
3.6. Interpolasi: Metode Newton Divided Difference .................................................. 45
3.7. Integrasi Numerik: Metode Newton Cotes .............................................................. 47
3.8. Solusi Persamaan Diferensial: Metode Euler .......................................................... 49

BAB IV. Penerapan Komputasi......................................................................... 52


4.1. Relokasi Episenter .......................................................................................................... 52
4.2. Pembuatan Peta Kontur.................................................................................. 53
4.3. Isoslice Model 3D .......................................................................................... 55
4.4. Isosurface Model 3D ...................................................................................................... 57
4.5. Voxel Model 3D .............................................................................................................. 58
4.6. Animasi 3D Sederhana .................................................................................................. 64
4.7. Animasi 3D Rotasi .......................................................................................................... 64
4.8. Analisa Gerakan Partikel Gempa Bumi .................................................................... 68

BAB V. Pengenalan Microsoft Visual Studio


5.1. Pengantar Microsoft Visual Studio ................................................................76
5.2. Windows Form...............................................................................................77
5.3. Bahasa Visual Basic Tipe Variabel................................................................79
5.4. Operator Pada Visual Basic Dan urutan Operasinya .....................................79
5.5. Deklarasi Variabel..........................................................................................80
5.6. Konvensi Penamaan Dalam Visual Basic ......................................................80
5.7. Deklarasi Variabel..........................................................................................80
5.8. Deklarasi Implicit...........................................................................................81
5.9. Deklarasi Explicit...........................................................................................81

BAB VI. Graphical User Interface Matlab.......................................................82

DAFTAR PUSTAKA
LAMPIRAN
BAB I

Matlab Dan Algoritma

MatLab merupakan pengembangan dari “Matrix Laboratory” (Laboratorium Matriks).


MatLab merupakan sistem yang interaktif yang menggunakan bahasa pemrograman tingkat
tinggi untuk komputasi teknik dan sains. MatLab dapat melakukan perhitungan sederhana
seperti penambahan, pengurangan, perkalian dan pembagian. MatLab juga dapat melakukan
perhitungan bilangan komplek, akar dan pangkat, logaritma dan operasi trigonometri. Selain
itu Matlab juga dapat digunakan untuk menyimpan dan memanggil data, membuat,
menjalankan dan menyimpan perintah untuk otomatisasi perhitungan suatu persamaan penting
dan membandingkan logika dan lain-lain.

MatLab menyediakan banyak visualisasi data melalui kemampuan grafisnya, salah


satunya adalah antarmuka grafis (Graphical User Interface) dan MatLab menyediakan
sekelompok alat penyelesaian masalah untuk problem-problem tertentu seperti Toolbox
diantaranya sistem toolbox, signal procesing toolbox dan simbolic math toolbox. Bahkan
penggunanya dapat membuat toolbox sendiri.

1.1. Bagian – Bagian MatLab

F.Tab Menu

C.Current B.Workspace
Folder Window Window
A.Command Window

E.Command
D.Details Window History Window

Gambar 1.1. Jendela Awal Matlab (Matlab Versi R2017.A)

1
BAB I MATLAB DAN ALGORITMA

a) Command Window

Command Window adalah jendela Command tempat interaksi utama MatLab. Pada
Command Window terdapat tanda “>>” yang merupakan prompt Matlab untuk mengekesekusi
perintah-perintah yang telah diprogram. Pada command window dapat dilakukan suatu proses
seperti meng-input variabel, melakukan perhitungan matriks, plotting variabel dan
memperlihatkan hasil perhitungan yang dilakukan. Pekerjaan pada command window bersifat
real time yang artinya segala bentuk proses dan hasilnya bila ingin disimpan dilakukan secara
manual satu per satu, dimana variabel awal dan hasil berbentuk matriks disimpan terpisah
dengan hasil berupa grafik.

b) Workspace Window
Workspace window merupakan jendela dimana keluaran dari setiap pekerjaan yang
dilakukan di MatLab seperti variabel atau hasil perhitungan ditampilkan. Pada jendela
workspace juga dapat dilakukan perubahan terhadap variabel – variabel keluaran dari setiap
pekerjaan yang dilakukan. Setiap keluaran dari pekerjaan yang dilakukan pada MatLab dapat
disimpan sebagai file berekstensi (*.mat) dimana variabel – variabel dapat disimpan satu – persatu
atau disimpan sekaligus.

c) Current Folder Window

Current Folder Window merupakan jendela yang menampilkan lokasi directory dari file
MatLab yang dijalankan atau tersimpan. Lokasi directory dari file MatLab yang akan
dijalankan akan otomatis diarahkan, karena setiap eksekusi file MatLab perlu dilakukan pada
directory tempat file MatLab disimpan.

d) Details Window

Details window merupakan jendela yang menampilkan komentar pada baris pertama
setiap page break dan setiap tombol fungsi pada script GUI. Details window mempermudah
kita untuk melakukan perubahan terhadap script yang dibuat pada editor window, dimana lebih
mudah untuk mencari letak kesalahan berdasarkan bagian – bagian yang dibuat dan
ditampilkan pada jendela ini.

e) Command History Window

Command History Window merupakan jendela yang menampilkan history dari pekerjaan
yang dilakukan di MatLab, mulai dari proses inputan pada command window sampai aktifitas
pekerjaan scrip.

2
f) Tab Menu

Pada tab menu, ada beberapa menu yang digunakan sesuai dengan keperluan. Default
menu yang terdapat pada MatLab ada 3, yaitu Home menu, Plots menu, dan Apps menu. Ada
beberapa menu yang munncul ketika editor window dibuat, dimana menu – menu ini digunakan pada
editor menu. Menu – menu itu antara lain Editor menu, Publish menu, dan View menu. Home menu
digunakan untuk melakukan eksekusi dasar seperti membuat halaman editor baru, mengatur layout
tampilan jendela, import dan export data, serta pengaturan terhadap MatLab. Pada Plots menu
digunakan untuk melakukan visualisasi data yang berada pada workspace window. Visualisasi data
dapat berupa 2D atau 3D sesuai kebutuhan. Program MatLab juga menyediakan aplikasi – aplikasi
sainstik pada apps menu dimana aplikasi – aplikasi umum sudah ada dan tinggal digunakan, serta dapat
di-download pada website resmi.

Ketika dibuat sebuah jendela editor yang baru, 3 menu akan muncul pada tab menu. Menu – menu
itu antara lain editor menu, publish menu, dan view menu. Editor menu digunakan untuk melakukan
eksekusi pada script pada jendela editor, dimana eksekusi – eksekusi yang dilakukan dalam kategori
file, navigation, edit, breakpoint, dan run. Publish menu digunakan untuk melakukan publikasi
terhadap script dan hasilnya, dimana bentuk dari publikasi ini berbentuk file berekstensi (.html). View
menu digunakan untuk mengatur tampilan dari jendela editor, dimana perletakan, ukuran dan
banyaknya jendela editor dapat kita atur dalam menu ini.

Gambar 1.2. Menu – Menu Pada Tab Menu Matlab (Matlab Versi R2017.A)

3
BAB I MATLAB DAN ALGORITMA

1.2. Array dan Matriks


Array merupakan baris pada matriks yang mempunyai elemen kolom dengan jumlah
tertentu, sehingga satu array dapat memiliki elemen yang jumlahnya lebih dari satu. Proses
pembentukan matriks dalam MatLab dapat dilakukan secara manual atau dengan menggunakan
fungsi. Secara manual, elemen matriks diinput satu per satu kedalam tanda ([]) setelah variabel
dengan ketentuan :

 Spasi, tanda (,) dan tanda (:) antar elemen memisahkan data secara horisontal atau
membentuk kolom matriks (untuk tanda (:), bila membentuk suatu interval, akan
membentuk matriks kolom dengan jumlah elemen sesuai interval yang dibuat).
 Tanda (;) antar elemen memisahkan data secara vertikal atau membentuk baris matriks.
 Untuk matriks berordo tertentu, elemen – elemen matriks harus seimbang jumlahnya.
 Bila antar data tidak ada spasi ataupun tanda yang memisahkannya, data – data tersebut
akan dieksekusi sebagai 1 elemen matriks.
 Bila tidak ada elemen matriks yang diinput, maka akan dieksekusi sebagai elemen kosong.

Gambar 1.3. Bentuk – Bentuk Matriks Yang Dihasilkan Dari Setiap Penulisan Dan Output Pada
Workspace.

4
Bentuk matriks yang dapat di bentuk pada MatLab menggunakan fungsi yang disediakan
dapat digunakan sesuai kebutuhan (fungsi – fungsi pembentuk matriks dapat dilihat pada
kamus), misalnya untuk membentuk sebuah matriks identitas dapat digunakan fungsi ones.

a) Operasi matematika pada matriks

Operasi matematika pada matriks pada dasarnya sama dengan operasi matematika biasa,
seperti penambahan, pengurangan, perkalian dan pembagian, hanya saja perkalian dan
pembagian pada matriks ada yang melibatkan hanya elemen tiap matriksnya saja tetapi juga
ada juga yang melibatkan array pada matriks.

b) Operasi matriks pada sistem persamaan linear

Sistem persamaan linear merupakan kumpulan dari sejumlah persamaan linear (pangkat
satu) yang sering dinyatakan dalam bentuk :

dengan y adalah vektor kolom, A adalah matriks dan x adalah variabel yang dicari nilainya.
Penyelesaian persamaan linear dapat dilakukan dengan menggunakan invers matriks.
Langkahnya adalah dengan mengalikan invers matriks A pada kedua ruas dari persamaan
tersebut di atas sehingga diperoleh persamaan:

=( . A)x

= x

Persamaan terakhir menunjukkan bahwa nilai x diperoleh dengan mengalikan invers matrik A
dengan vektor kolom y.

1.3. Algoritma

Dalam melakukan suatu pemrograman, perlu dipahami langkah – langkah untuk


menyelesaikan suatu masalah. Langkah – langkah tersebut dibuat dengan menggunakan bahasa
pemrograman yang digunakan sesuai kondisi. Langkah – langkah yang dibuat dengan logis dan
bisa diterima, dibuat dengan efisien dan efektif sehingga hasil mendekati kebenaran. Langkah
langkah ini disebut dengan algoritma. Secara umum algoritma adalah urutan langkah – langkah
logis yang digunakan untuk penyelesaian masalah yang disusun secara sistematis dan logis.
Beberapa hal yang perlu dipahami dalam membuat algoritma, yaitu :
5
BAB I MATLAB DAN ALGORITMA

 Teks algoritma berisi deskripsi langkah – langkah penyelesaian masalah. Deskripsi tersebut
dapat ditulis dalam notasi apapun asalkan mudah dimengerti dan dipahami.
 Tidak ada notasi yang baku dalam penulisan algoritma seperti notasi bahasa pemrograman.
Notasi yang digunakan dalam menulis algoritma disebut notasi algoritmit.
 Setiap orang dapat membuat aturan penulisan dan notasi algoritmik sendiri. Hal ini
dikarenakan teks algoritma tidak sama dengan teks program. Namun supaya notasi
algoritma mudah ditranslasikan ke dalam notasi bahasa pemrograman tertentu, maka
sebaiknya notasi algoritmik berkorespondensi dengan notasi bahasa pemrograman secara
umum.
 Notasi algoritmik bukan notasi bahasa pemrograman, karena itu pseudocode dalam notasi
algoritmik tidak dapat dijalankan oleh komputer. Agar dapat dijalankan oleh komputer,
pseudocode dalam notasi algoritmik harus ditranslasikan atau diterjemahkan ke dalam
notasi bahasa pemrograman yang dipilih. Perlu diingat bahwa orang yang menulis program
sangat terikat dalam aturan tata bahasanya dan spesifikasi mesin yang menjalankannya.
 Algoritma merupakan hasil pemikiran konseptual, supaya dapat dilaksanakan oleh
komputer, algoritma harus ditranslasikan ke dalam notasi bahasa pemrograman.

Perlu diingat bahwa setiap algoritma perlu ditranslasikan ke dalam bahasa pemrograman
yang digunakan, karena pseudocode dalam algoritma tidak dapat dijalankan oleh komputer.
Dapat dilihat pada gambar 1.4 bahwa proses translasi dari algoritma ke bahasa pemrograman
yang digunakan akan mudah dilakukan apabila notasi atau susunan algoritma jelas.

6
Gambar 1.4. Proses Translasi Atau Terjemah Dari Suatu Algoritma Ke Dalam Suatu Bahasa
Pemrograman (Algoritma Pengolahan Seismik Refraksi Ke Pseudocode Matlab).

Perintah – perintah yang disusun dalam bahasa pemrograman yang dipilih dapat disusun
sesuai dengan algoritma yang dibentuk. Perlu diperhatikan bahwa berbagai model algoritma
yang ada memiliki susunan dan pseudocode yang berbeda pula. Dalam menyusun algoritma,
ada 3 model algoritma yang dapat digunakan untuk menyusun sebuah algoritma, yaitu :

1) Model pengulangan.
2) Model runtunan.
3) Model pemilihan.

7
BAB I MATLAB DAN ALGORITMA

1) Model Perulangan

Pada algoritma dengan model perulangan, pemecahan masalah yang digunakan dilakukan
dengan cara mencari hasil yang mendekati kebenaran dari interval data yang dimiliki.
Maksudnya adalah untuk mencari hasil yang diinginkan, diperlukan perhitungan yang berulang
secara terus – menerus sehingga mencapai syarat yang diinginkan dalam suatu interval.
Pseudocode dalam MatLab yang umum digunakan dalam model ini adalah for-end, while-end,
if-else-end, dan if-end.

2) Model Runtunan

Model runtunan merupakan model yang umum digunakan untuk menyusun sebual
algoritma. Model ini cukup mudah untuk dibuat, karena model ini dibentuk dari proses
pemecahan masalah yang dilakukan secara bertahap. Jadi untuk dapat membangun model ini,
kita harus memahami urutan langkah kerja dalam pemecahan masalah.

3) Model pemilihan

Dalam model algoritma pemilihan, diperlukan beberapa kondisi untuk menyelesaikan suatu
permasalahan. Kondisi dalam suatu permasalahan ini dipilih berdasarkan bentuk permasalahan
dan hasil yang diinginkan. Dalam model pemilihan hasil yang didapatkan bisa berupa sebuah
solusi atau beberapa solusi. Pseudocode dalam MatLab yang umum digunakan dalam model
ini adalah if-end, switch-case-end, dan if-elseif-end.

1.4. Proses Translasi Algoritma ke Pseudocode MatLab

Pada dasarnya proses pemrograman pada MatLab menggunakan pseudocode yang telah
disediakan oleh MatLab itu sendiri. Berbeda dengan aplikasi pemrograman yang lain,
pseudocode yang tersedia dalam MatLab mempermudah proses pemrograman karena fungsi
matematika telah tersedia dan akan langsung muncul hasil bila kita menggunakan fungsi yang
tersedia serta menginput variabel. Proses translasi algoritma ke pseudocode MatLab cukup
mudah, mengingat pseudocode yang disediakan oleh MatLab disesuaikan dengan fungsi
matematika yang kita ketahui. Sebelum melakukan translasi dari algoritma ke pseudocode
MatLab, diperlukan kemampuan untuk menyusun sebuah algoritma yang baik.

a. Proses membangun algoritma

Kemampuan untuk menyusun sebuah algoritma dibutuhkan pemahaman tentang


pemecahan suatu masalah, dimana masalah pada pemrograman sainstik memiliki sebuah data

8
awal yang berisi data – data dari beberapa parameter. Hal yang perlu dilakukan dalam
menyusun sebuah algoritma yang baik adalah :

 Menentukan target dari algoritma, yaitu berupa hasil yang diinginkan, baik itu berbentuk
data maupun berbentuk visualisasi.
 Menentukan bentuk algoritma yang dibuat. Hal ini dapat ditentukan dari masalah dan target
yang ingin dicapai, dimana dibutuhkan pemahaman tentang proses pemecahan masalah
untuk mencapai target yang ditentukan.
 Memperhatikan parameter – parameter yang dibutuhkan dalam algoritma dan tidak
dibutuhkan. Hal ini perlu dilakukan mengingat penambahan variabel yang tidak diproses
akan membuat algoritma menjadi tidak efisien.
 Memperhatikan aturan dalam penulisan variabel dan fungsi pada MatLab (dapat dilihat
pada kamus), dimana salah dalam penulisan tidak dapat dieksekusi oleh MatLab.

Contoh pada kasus sistem persamaan non – linear dengan pendekatan numerik metode
tertutup (metode bagi dua). Pada kasus ini parameter awal yang dimiliki berupa persamaan dan
hasil yang ingin didapatkan berupa akar persamaan dan ditentukan menggunakan metode bagi
dua. Langkah – langkah yang dilakukan untuk mendapatkan hasil akar persamaan yang
memenuhi persamaan dengan metode bagi dua adalah :

1. Menentukan selang terkecil (a) dan selang terbesar (b) yang mengandung minimal satu
buah akar serta menentukan nilai toleransi.
2. Mencari nilai selang terkecil (fxa) dan nilai selang terbesar (fxb) yang memenuhi
persamaan.
3. Mengalikan nilai selang terkecil (fxa) dan nilai selang terbesar (fxb), kemudian memilih
langkah yang akan diambil berdasarkan syarat dari metode bagi dua, jika fxa*fxb<0, maka
persamaan memiki akar dan proses dilanjutkan, jika fxa*fxb>0, maka tidak memiliki akar
dan proses dihentikan. Bentuk algoritma ini merupakan bentuk algoritma pemilihan.
4. Menentukan syarat perhitungan, dimana nilai absolut dari hasil persamaan (fx) lebih dari
nilai toleransi, maka perhitungan akan diulang sampai syarat tidak terpenuhi atau nilai
absolut dari hasil persamaan (fx) kurang dari nilai toleransi.
5. Mencari nilai hasil bagi 2 (x0) antara selang terkecil (a) dan selang terbesar (b), kemudian
nilai ini digunakan untuk mencari nilai yang memenuhi persamaan (fx) sehingga didapat
nilai hasil persamaan (fx0).
6. Menentukan syarat pemilihan selang yang baru, dimana syarat yang pertama hasil
perkalian nilai persamaan pada selang terkecil dengan nilai persamaan pada hasil bagi dua
9
BAB I MATLAB DAN ALGORITMA

antar selang kurang dari 0 (fxa*fx0<0), maka nilai persamaan pada hasil bagi dua menjadi
selang terbesar (fx0=fxb). Jika hasil perkalian nilai persamaan pada selang terkecil dengan
nilai persamaan pada hasil bagi dua antar selang kurang dari 0 (fxa*fx0>0), maka nilai
persamaan pada hasil bagi dua menjadi selang terkecil (fx0=fxa). Proses ini kemudian
kembali lagi ke nomor 4 sampai syarat terlewati.

Dari parameter awal, tujuan dan proses di atas maka dapat dibangun skema algoritma sebagai
berikut :

10
Bagian 1

Bagian 2

Bagian 3

Bagian 4

Bagian 6

Bagian 7

Bagian 8

Bagian 5

Bagian 8

Gambar 1.5. Diagram Algoritma Yang Dapat Dibentuk Dari Langkah – Langkah Yang Diketahui.

11
BAB I MATLAB DAN ALGORITMA

b. Proses Translasi

Setelah dibentuk suatu algoritma yang mudah dipahami, kemudian dilakukan proses
translasi. Dimulainya proses translasi sebaiknya dilakukan secara berurutan mulai dari awal.
Contohnya jika kita telah memiliki algoritma seperti pada gambar 1.5, maka dapat dimulai
translasi sesuai bagian – bagian yang ada. Proses itu dapat dilakukan sebagai berikut :

 Bagian 1

Pada bagian ini, dibuat sebuah fungsi pada file function yang berbeda dengan persamaan
yang akan dicari akarnya, sehingga membentuk :

Gambar 1.6. Bentuk pseudocode dari bagian 1.

 Bagian 2

Inti pada bagian ini adalah untuk membuat variabel – variabel yang akan digunakan, yaitu
batas terbesar, batas terkecil dan nilai toleransi sehingga membentuk :

Gambar 1.7. Bentuk Pseudocode Dari Bagian 2.

 Bagian 3

Pada bagian ini dilakukan proses subtitusi nilai x dengan nilai batas terkecil dan terbesar,
sehingga terbentuk :

Gambar 1.8. Bentuk Pseudocode Dari Bagian 3.

12
 Bagian 4

Pada bagian ini, proses yang dilakukan adalah melakukan uji awal apakah persamaan
memiliki akar persamaan dengan syarat yang ditentukan, sehingga membentuk :

Gambar 1.9. Bentuk Pseudocode Dari Bagian 4.

 Bagian 5

Pada bagian ini, dibuat suatu perulangan perhitungan, di mana proses mencari akar didapat
dari proses membagi dua antara selang tertinggi dengan selang terendah, sehingga terbentuk :

Gambar 1.10. Bentuk Pseudocode Dari Bagian 5.

 Bagian 6

Yang dilakukan pada bagian ini adalah proses membagi dua antara titik selang tertinggi
dengan titik selang terendah sehingga mendapatkan nilai tengah yang baru. Untuk membantu
proses perulangan perlu dibuat sebuah variabel indeks baru untuk menunjukan iterasi ke berapa
proses ini telah terjadi, dimana pembentukan indeks hanya cukup ditambah dengan satu,
sehingga membentuk :

Gambar 1.11. Bentuk Pseudocode Dari Bagian 6.

13
BAB I MATLAB DAN ALGORITMA

 Bagian 7

Proses yang terjadi pada bagian ini adalah setelah dilakukannya pembagian antar titik
selang tertinggi dengan terendah, terbentuk titik baru. Titik baru ini kemudian ditentukan
sebagai selang tertinggi atau selang terendah sehingga terbentuk algoritma pemilihan untuk
memilih apakah titik yang baru merupakan selang terendah atau selang tertinggi berdasarkan
syarat yang digunakan, sehingga membentuk :

Gambar 1.12. Bentuk Pseudocode Dari Bagian 7.

 Bagian 8

Pada bagian ini, jika syarat perulangan sudah tidak terpenuhi atau nilai toleransi didapatkan
maka nilai akhir merupakan solusi dari persamaan yang ada. Bentuk pseudocode yang dapat
dibuat berbentuk :

Gambar 1.13. Bentuk Pseudocode Dari Bagian 8.

Bila seluruh pseudocode yang ada disatukan, maka akan terlihat sebagai berikut :

14
Gambar 1.14. Bentuk Pseudocode Secara Utuh.

15
BAB II

Visualisasi Data dan Animasi MatLab

2.1. Visualisasi Data

Dalam pemrograman sainstik, terkhususnya pemrograman geofisika, output yang


diinginkan umumnya berupa visualisasi data. Visualisasi data diperlukan agar hasil dapat
diinterpretasikan karena setiap data geofisika akan membentuk pola – pola yang mengikuti
kondisi bawah permukaan. Dalam visualisasi data program MatLab, dapat dilakukan secara 2
dimensi maupun 3 dimensi, dimana fungsi – fungsi untuk visualisasi data telah tersedia pada
MatLab. Hasil visualisasi data dapat dilihat secara langsung dan disusun dengan fungsi
tertentu. Untuk melakukan visualisasi data diperlukan beberapa variabel, dengan ketentuan :

 Jumlah elemen – elemen pada setiap variabel atau ukuran matriks setiap variabel sama.
 Variabel yang memiliki elemen NaN atau nan akan tetap dieksekusi, namun dalam
visualisasinya (khususnya visualisasi 3 dimensi) tidak akan ditampilkan atau kosong.
 Pada visualisasi 3 dimensi yang memerlukan proses gridding, jumlah elemen dalam setiap
variabel akan mempengaruhi klinerja komputer yang digunakan, sehingga bila memiliki
data yang cukup besar, perlu dilakukan beberapa perubahan algoritma.
 Pada visualisasi 3 dimensi, parameter – parameter yang dapat divisualisasikan umumnya
berbentuk geometri atau keruangan, sehingga bila data berbentuk selain dari geometri atau
keruangan (misalnya densitas) tidak dapat divisualisasikan.
 Menimpah beberapa visualisasi menjadi satu tampilan dapat dilakukan dengan fungsi yang
tersedia, dimana parameter yang digunakan dalam visualisasi sama.
 Pada visualisasi 2 dimensi, bila melakukan visualisasi lebih dari 2 variabel maka variabel
yang menempati sumbu x harus sama (secara vertikal, variabel yang menempati sumbu y
harus sama) dengan menggunakan fungsi hold on atau secara langsung.

Beberapa simbol – simbol yang digunakan dalam visualisasi data baik dalam visualisasi 2
dimensi dan 3 dimensi antara lain :

Simbol Garis
– Solid line
: Dotted Line
–. Dash Dot Line

16
BAB II VISUALISASI DATA DAN ANIMASI MATLAB

Simbol Tanda
. Point
o Circle
x Cross
+ Plus
* Asterisk
s Square
d Diamond
v Triangle (down)
^ Triangle (up)
< Triangle (left)
> Triangle (right)
p Pentagram
h Hexagram

Fungsi pengaturan warna tiap titik data yang digunakan dalam visualisasi data dalam
visualisasi 2 antara lain :
Simbol Keterangan
r Warna Merah
g Warna Hijau
b Warna Biru
y Warna Kuning
m Warna Magenta
k Warna Hitam

Warna dasar dari grafik adalah putih. Tetapi sebenarnya warna dasar tersebut dapat
diubah menjadi warna lain dengan menggunakan teknik pengaturan warna. Instruksi untuk
memberi warna pada area grafik adalah sebagai berikut:

set(gca, ‘color’, [R G B]);

Instruksi untuk memberikan warna pada judul grafik juga disediakan oleh Matlab.
Instruksinya adalah sebagai berikut:

title(‘teks’, ‘color’ ,[R G B]);

17
BAB II VISUALISASI DATA DAN ANIMASI MATLAB

Sedangkan instruksi untuk memberi warna pada label grafik adalah sebagai berikut :

xlabel(‘teks’, ‘color’, [R G B]);

ylabel(‘teks’, ‘color’,[R G B]);

Tidak hanya warna yang dapat diubah pada grafik. Matlab juga menyediakan instruksi untuk
mengubah jenis huruf dan mengatur format huruf dengan instruksi sebagai berikut:

set(gca, fontProperty, value)

title(‘teks’, fontProperty, value)

xlabel(‘teks’, fontProperty, value)

ylabel(‘teks’, fontProperty, value)

Font property yang dapat digunakan adalah sebagai berikut :

Font Property Value

fontname Arial, times new roman dll

fontweight Bold, normal

fontsize 1, 2, 3 s/d 30

fontangel Italic, normal

Contoh :

18
BAB II VISUALISASI DATA DAN ANIMASI MATLAB

Gambar 2.1. Contoh hasil pengaturan layout pada visualisasi 2 dimensi.

2.1.1. Visualisasi 2 Dimensi

Memvisualisasikan data terkadang tidak cukup hanya dengan plotting garis atau titik saja.
Dalam banyak hal misal pada bidang seismologi, untuk mengetahui tingkat aktivitas gunungapi
melalui jumlah gempa vulkaniknya per hari atau per minggu atau per bulan, diperlukan
tampilan khusus dari visualisasi data 2D, atau dalam analisis sinyal juga diperlukan visualisasi
khusus di luar tampilan garis dan titik. Fungsi visualisasi khusus yang disediakan Matlab antara
lain :

A. Fungsi Bar

Fungsi bar menyediakan tampilan gambar dalam diagram batang. Sebagai latihan coba
ketikkan script berikut :

19
BAB II VISUALISASI DATA DAN ANIMASI MATLAB

Hasil dari script diatas adalah sebagai berikut :

Gambar 2.2. Tampilan grafik diagram batang dengan menggunakan fungsi bar.

B. Fungsi Stem

Fungi stem banyak digunakan untuk menggambarkan sinyal digital.

Hasil dari script diatas adalah sebagai berikut :

Gambar 2.3. Tampilan fungsi stem.

20
BAB II VISUALISASI DATA DAN ANIMASI MATLAB

C. Fungsi Stairs

Fungsi stairs biasanya juga digunakan untuk menampilkan sinyal, hanya saja untuk sinyal
yang bersifat kontinu yang ditampilkan dalam bentuk kotak-kotak.

Hasil dari fungsi stairs adalah sebagai berikut :

Gambar 2.4. Tampilan fungsi stairs.

D. Fungsi Polar

Gambar 2.5. Tampilan fungsi polar.

21
BAB II VISUALISASI DATA DAN ANIMASI MATLAB

E. Fungsi Semilogx

Gambar 2.6. Tampilan fungsi Semilogx.

F. Fungsi Loglog

Gambar 2.7. Tampilan fungsi loglog.

22
BAB II VISUALISASI DATA DAN ANIMASI MATLAB

G. Fungsi Pie

Gambar 2.8. Tampilan fungsi pie.

2.1.2. Visualisasi 3 dimensi

Visualisasi 3D artinya menempatkan satu atau lebih titik data pada media ruang. Teknik
ini sangat berguna pada pemodelan ruang. Beberapa fungsi umum yang biasa digunakan
untuk memvisualisasikan data 3D adalah :

A. Fungsi Plot3

Fungsi plot3 hampir sama dengan fungsi plot, tetapi dalam plot3 ada tiga variabel yang di
plotkan bersamaan.

23
BAB II VISUALISASI DATA DAN ANIMASI MATLAB

Kemudian save script diatas dan run, maka hasilnya adalah sebagai berikut :

Gambar 2.9. Visualisasi 3 dimensi menggunakan fungsi plot3.

24
BAB II VISUALISASI DATA DAN ANIMASI MATLAB

B. Fungsi Mesh

Fungsi mesh digunakan umtuk menampilkan data dalam bentuk permukaan 3D. Cirinya
adalah adanya grid-grid yang menghubungkan 4 titik terdekat dalam ruang 3D.

Kemudian save script diatas dan run, maka hasilnya adalah sebagai berikut :

Gambar 2.10. Visualisasi 3 dimensi menggunakan fungsi mesh.

25
BAB II VISUALISASI DATA DAN ANIMASI MATLAB

C. Fungsi Surf

Fungsi surf digunakan untuk menampilkan data dalam bentuk permukaan 3D seperti pada
fungsi mesh. Perbedaan dengan fungsi mesh adalah setiap grid diisi dengan warna tertentu
sesuai bobot nilai. Coba gantikan fungsi mesh(U) pada script program sebelumnya dengan
surf(U), maka akan tampak hasilnya seperti pada gambar di bawah ini :

Gambar 2.11. Visualisasi 3 dimensi menggunakan fungsi surf.

D. Fungsi Sufrl

Fungsi surfl adalah pengembangan dari fungsi surf, hanya saja fungsi surfl lebih
menekankan pewarnaan berdasarkan teknik pencahayaan. Coba gantikan fungsi surf(U) pada
script program diatas dengan surfl(U), maka didapatkan hasil sebagai berikut :

Gambar 2.12. Visualisasi 3 dimensi menggunakan fungsi surfl.

26
BAB II VISUALISASI DATA DAN ANIMASI MATLAB

E. Fungsi Pcolor

Fungi pcolor berfungsi untuk menampilkan data 3D dalam bentuk permukaan 2D (tampak
atas). Cirinya adalah grid berwarna yang menunjukkan bobot nilai tertentu.

Kemudian save script diatas dan run, maka hasilnya adalah sebagai berikut :

Gambar 2.13. Visualisasi 3 dimensi menggunakan fungsi pcolor.

F. Fungsi Imagesc

Fungsi ini hampir sama dengan fungsi pcolor, perbedaannya dengan pcolor terletak pada
cara pewarnaan grid yang menggunakan interpolasi warna grid-grid terdekat, sehingga terlihat
lebih soft. Coba gantikan fungsi pcolor(z) pada script program sebelumnya dengan imagesc(z),
akan didapatkan hasil seperti ditunjukkan di bawah ini :

27
BAB II VISUALISASI DATA DAN ANIMASI MATLAB

Gambar 2.14. Visualisasi 3 dimensi menggunakan fungsi imagesc.

G. Fungsi Contour

Fungsi contour digunakan untuk membuat garis kontur dari data 3D. Garis kontur dibuat
dengan teknik interpolasi dari titik-titik terdekat. Coba gantikan fungsi imagesc(z) dengan
contour(z), maka dapat dilihat hasilnya sebagai berikut :

Gambar 2.15. Visualisasi 3 dimensi menggunakan fungsi contour.

Hasil interpolasi pada masing-masing garis kontur dapat ditampilkan. Tambahkan


clabel(contour(z)) di bawah instruksi contour, maka akan didapatkan hasil sebagai berikut :

28
BAB II VISUALISASI DATA DAN ANIMASI MATLAB

Gambar 2.16. Visualisasi 3 dimensi menggunakan fungsi contour dan clabel.

H. Fungsi Contourf

Fungsi contourf sama dengan fungsi contour, perbedaannya adalah pada setiap level
kontur diberi warna sesuai bobot garis konturnya. Gantikan contour(z) diatas dengan
contourf(z), maka dapat dilihat hasilnya sebagai berikut :

Gambar 2.17. Visualisasi 3 dimensi menggunakan fungsi contourf.

2.2. Animasi
Pengembangan dari visualisasi data geofisika yang bersifat simulasi dapat dibuat ke dalam
animasi. Untuk membuat animasi, dapat menggunakan fungsi yang tersedia dalam MatLab
ataupun membuat algoritma animasi. Fungsi animasi yang tersedia dalam MatLab hanya
sebatas plot 2 dimensi dan 3 dimensi (mesimulasikan pergerakan suatu titik atau beberapa titik)
dan tidak dapat mesimulasikan suatu data yang bersifat keruangan. Oleh sebab itu untuk

29
BAB II VISUALISASI DATA DAN ANIMASI MATLAB

membuat suatu animasi dengan data bersifat keruangan dibuat suatu algoritma dengan model
algoritma pengulangan, dimana setiap data yang ada digambar satu per satu.

2.2.1. Menggunakan Fungsi

Fungsi yang dapat digunakan untuk membuat animasi data dengan menggunakan fungsi
comet dan comet3. Prinsip kerja keduanya sama, yaitu hanya diperlukan satu pasang data atau
lebih dengan jumlah data yang sama, kemudian dijadikan variabel untuk fungsi tersebut.

Gambar 2.18. Animasi 2 dimensi menggunakan fungsi comet (gerak osilasi teredam).

Gambar 2.19. Animasi 3 dimensi menggunakan fungsi comet3.

30
BAB II VISUALISASI DATA DAN ANIMASI MATLAB

2.2.2. Animasi Berulang Berdasar Algoritma(Proses Looping)

Untuk dapat membuat suatu algoritma yang menghasilkan suatu animasi, diperlukan
pehamanan mengenai bagaimana cara kerja dari animasi tersebut. Secara sederhana, animasi
diartikan sebagai proses menghidupkan objek mati dengan cara menempatkan sejumlah
gambar berurutan per waktu dengan koordinat berbeda – beda sehingga didapat perubahan
gambar seolah – olah gambar bergerak. Proses animasi secara sederhana dilakukan sebagai
berikut :

 Menumpuk beberapa gambar secara bergantian dan berurutan.


 Menempatkan beberapa gambar pada waktu yang berbeda – beda.
 Mengubah koordinat tiap gambar.

Dengan konsep ini, algoritma yang digunakan berbentuk pengulangan (looping). Untuk bentuk
dari algoritma yang dapat dibentuk (kasus gerak osilasi teredam) adalah sebagai berikut :

31
BAB II VISUALISASI DATA DAN ANIMASI MATLAB

Gambar 2.20. Algoritma pengulangan untuk membuat animasi.

32
BAB II VISUALISASI DATA DAN ANIMASI MATLAB

Dan bila algoritma di atas di translasikan akan menjadi :

Gambar 2.21. Bentuk script dari translasi algoritma animasi.

Dengan hasil sebagai berikut :

Gambar 2.22. Screenshot hasil animasi (gerak osilasi teredam).

33
BAB III

Metode Numerik

3.1.Deret Taylor
Deret Taylor ini adalah fungsi kompleks yang terdifirensialkan sampai tidak hingga pada
sebuah pemetaan. Dalam sebuah bilangan Deret taylor, digunakan untuk menurunkan suatu
metode numerik, deret ini merupakan suatu fungsi polinom(suku banyak contoh :x+x2+x3+...).
Deret taylor ini berguna untuk mencari solusi dari suatu persamaan atau fungsi polinomial
dari sekumpulan data yang pada umumnya merupakan permasalahan yang sering dijumpai di-
alam.
Deret taylor ini memiliki persamaan sebagai berikut :
( )^ ( )^ ( ) ( )^
( ) = ( 0) + ( 0) + +. . . + ( 0) (3.1)
! ! !

atau sederhananya
( )^
∑ ( 0) (3.2)
!

3.2. Analisa Galat


Solusi dengan metode numerik adalah solusi hampiran (aproksimasi). Solusi hampiran
ini merupakan pendekatan terhadap solusi eksak atau pasti. Hal ini menyebabkan metode
numerik mengandung galat (error) sehingga galat dapat diartikan sebagai seberapa dekat
solusi hampiran terhadap solusi eksak. Semakin kecil nilai galat maka semakin teliti solusi
numerik yang didapat dan sebaliknya. Galat memiliki persamaan sebagai berikut:
ԑ=a – (3.3)
Keterangan :
ԑ = Galat
a= Nilai Pasti
= Nilai Pendekatan
Galat ini terbagi dua meliputi:
1. Galat Mutlak yaidu nilai hampiran terhadap nilai pasti sehingga selalu bernilai positif.
|ԑ| = |a – | (3.4)
2. Galat relatif merupakan perbandingan antara nilai galat terhadap nilai pasti.
ԑr=(ԑ/a)*100% (3.5)
34
BAB III METODE NUMERIK

Selain itu terdapat sumber utama galat diantaranya yaitu:


1. Galat Pemotongan(truncation Error) ditimbulkan akibat penggunaan hampiran sebagai
pengganti formula pasti
2. Galat Pembulatan (Round-Off Error) timbul akibat keterbatasan alat bantu untuk
menyajikan bilangan real
3. Galat Eksperimental timbul akibat data yang diberikan, misal kesalahan pengukuran, dan
ketelitian alat hitung.
4. Galat Pemrograman timbul pada program pada suatu sistem(contoh: bug)

3.3. Solusi Persamaan Linear

Penggunaan Matriks untuk Menyelesaikan Sistem Persamaan Linear (SPL)


Sistem persamaan linear merupakan kumpulan dari sejumlah persamaan linear (pangkat
satu) yang sering dinyatakan dalam bentuk :

y  Ax (3.6)

dengan y adalah vektor kolom, A adalah matriks dan x adalah variabel yang dicari nilainya.
Penyelesaian persamaan linear dapat dilakukan dengan menggunakan inversi matriks. Solusi
Persamaan linear ini sangat berguna pada sejumlah kegiatan pengolahan atau pemodelan di
geofisika hal ini dikarenakan sebagian besar permasalahan di geofisika memanfaatkan
parameter lapangan. Parameter lapangan ini merupakan hasil dari berbagai faktor di alam yang
dapat diasumsikan sesuai dengan parameter-parameter fisika sehingga secara sederhana
parameter lapangan merupakan suatu fungsi kompleks dengan sejumlah variabel
berupa parameter fisika

Langkahnya adalah dengan mengalikan invers matriks A pada kedua ruas dari persamaan
tersebut di atas sehingga diperoleh persamaan:

A 1 y  ( A 1  A ) x (3.7)
1
A y  Ix
x  A 1 y
Persamaan terakhir menunjukkan bahwa nilai x diperoleh dengan mengalikan invers matrik A
dengan vektor kolom y.

35
BAB III METODE NUMERIK

Contoh : Carilah nilai x1, x2 dan x3 dari persamaan linear seperti berikut

3x1 – 0,1x2 – 0,2x3 = 7,85


0,1x1 + 7x2 – 0,3x3 = -19,3 (3.8)
0,3x1 – 0,2x2 + 10x3 = 71,4

Penyelesaian :

 Ubah bentuk persamaan linear di atas ke dalam bentuk persamaan matriks seperti berikut:

3 - 0,1 - 0,2   x1  7,85 


0,1 7  
 - 0,3    x2   - 19,3  (3.9)
0,3 - 0,2 10   x3  71,4 

A x y

 listing program  Keluaran Program


A=[3 -0.1 -0.2;0.1 7 -0.3;0.3 -0.2 10]; nilai x adalah :
B=inv(A); 3.0494
y=[7.85;-9.3;71.4]; -1.0710
x=B*y; x=A\y 7.0271
disp('nilai x adalah : '),disp(x) nilai Ax adalah :
c=A*x; 7.8500
disp('nilai Ax adalah : '),disp(c) -19.3000
71.4000

Soal Mandiri:
Sebuah benda yang sedang bergerak dengan kecepatan 10 m/det dipercepat dengan percepatan
2 m/det2 selama 10 detik. Hitung jarak s dan kecepatan v benda setiap kenaikkan waktu 0,1
detik mulai detik ke 0 sampai detik ke 10 dan nyatakan hasilnya dalam bentuk grafik : s vs t
dan v vs t.

3.4. Solusi Persamaan Non – Linear


Solusi persamaan non linear merupakan pencarian akar-akar dari suatu fungsi, dimana
akar dari suatu persamaan dipenuhi apabila:
f(x)=0

sehingga x merupakan akar dari persamaan tersebut. Ada dua metode utama pencarian akar
yaitu :

1. Metode Tertutup adalah metode ini mencari akar pada suatu fungsi yang dibatasi pada
selang tertentu.

36
BAB III METODE NUMERIK

Contoh Metode bisection

Gambar 3.1. Alur Kerja Metode Bisection


Pertama masukkan input berupa fungsi, batas atas, dan bawah, serta toleransi.
Selanjutnya hitung nilai dari c, lakukan uji coba apabila nilai f(c) sudah lebih kecil dari
toleransi, maka “c” adalah akarnya, namun jika tidak maka perlu dikaji ulang lagi dengan
menjadikan nilai “c” sebagai batas baru dengan mengalikan f(a) dan f(c) sesuai persyaratan
apabila kurang dari 0 maka nila a-c adalah batasnya dan sebaliknya maka nilai c-b adalah
akarnya. Selanjutnya kembali ke tahap awal.

37
BAB III METODE NUMERIK

Gambar 3.2. Hasil Dari Metode Bisection

buat script fungsi kemudian disave dengan nama “fbi.m”. Nilai didalam “y=...” dapat
diganti sesuai dengan keiginan penentuan akar dari persamaan

function [y]=f(x)
y=x.^2+6*x+5;
Gambar 3.3. Script fungsi metode bisection.

kemudian buat script program bisection sesuai disave pada satu folder yang sama dengan
fungsinnya, dan diberi nama sesuai keinginan.

clc; clear all; close all;


% a=batas bawah, b=batas atas, h=rentang untuk plot data
a=-2;
b=3;
h=0.1;
rentang=a:h:b;

y=fbi(rentang); %menghitung nilai dari fungsi dari batas bawah sampai


atas
plot(rentang,y); %membuat grafik persamaan dari fungsi fbi

%menginput toleransi dari untuk perhitungan


Toleransi=0.1;
Error=inf;

grid on
title('Grafik Fungsi Untuk Menentukan Akar Persamaan'); %membuat judul
grafik

38
BAB III METODE NUMERIK

no=1;
%membuat tampilan di command windown
fprintf('================================================================
==============\n');
fprintf('no a c b f(a) f(c)
f(b) Error \n');
fprintf('================================================================
==============\n');

% operasi bisection
while Error>Toleransi
fa=fbi(a); %nilai fungsi dari fa
fb=fbi(b);
c=(b+a)/2;
fc=fbi(c);
if fa*fc<0
b=c;
else
a=c;
end
Error=abs(b-a);
fprintf('%d %0.6f %0.6f %0.6f %0.6f %0.6f %0.6f %0.6f
\n',no,a,c,b,fa,fc,fb,Error)
no=no+1;
end

fprintf('================================================================
==============\n');
fprintf('Maka nilai persamaannya yaitu sama dengan nilai c: %0.6f\n',c);
hold on

%menampilkan posisi dari akar persamaan fbi


plot(c,fbi(c),'+',’markersize’,40);
Gambar 3.4. Script Metode Bisection.

2. Metode Terbuka adalah metode pencarian akar pada suatu fungsi dengan nilai akar
terdekat dari nilai awal yang diinput pada fungsi tersebut.

Salah satu contoh metode terbuka yaitu metode lelaran tidak tetap, metode ini memiliki
tahapan sebagai berikut.

39
BAB III METODE NUMERIK

Gambar 3.5. Alur Kerja Perhitungan Error


Inputan utama yaitu fungsi f(x), toleransi error, dan nilai tebakan awal, Kemudian
mengubah nilai f(x) menjadi g(xr) contohnya:
f(xr) =x3-x2-x+1
0 =x3-x2-x+1

x = x3-x2+1

g(xr) = x3-x2+1

Kemudian menghitung nilai g(xr) selanjutnya menghitung nilai error, kemudian


mengkajinya dengan toleransi jika “kurang dari toleransi” ma “x r” adalah akarnya sedangkan
jika tidak maka g(xr) adalah xr berikutnya. Buat script fungsi kemudian disave dengan nama
“fbi.m”. Nilai didalam “y=...” dapat diganti sesuai dengan keiginan penentuan akar dari
persamaan

40
BAB III METODE NUMERIK

function [y]=f(x)
y=x.^3-x.^2+1;
Gambar 3.6. Script Fungsi Metode Bisection.

kemudian buat script program lelaran tidak tetap sesuai disave pada satu folder yang sama
dengan fungsinnya, dan diberi nama sesuai keinginan.

% metode Lelaran Titik-tetap


clear all;clc;close all;
% menginput nilai toleransi, awal iterasi, dan nilai dari error awal.
iterasi=0;
galat=0.00001;
nilai=1;

% menginput nilai x relatif yaitu nilai


xr=input('masukkan nilai x relatif:');

% menampilkan tampilan di command window


disp('iterasi ke- xr xr1-xr')

% operasi lelaran tidak tetap


while nilai>galat
y=feval('fbi',xr); %menghitung nilai dari y dengan fungsi fbi, dan
variabel xr

nilai=abs(y-xr); %menghitung error

xr=y; %mensubtitusi nilai dari y menjadi xr baru

% menampilkan data hasil perhitungan


fprintf ('%1.0f %4.7f %4.7f \n',
iterasi,xr,nilai);

% menambah iterasi
iterasi=iterasi+1;
end
disp('=============================================================');
Gambar 3.7. Script Metode Bisection.

3.5. Regresi Linear


Regresi adalah teknik pencocokan kurva untuk data yang berketelitian rendah.
Contoh data dengan ketelitian rendah adalah data hasil pengamatan (empiris), percobaan di
laboratorium, atau data statistik, data seperti itu disebut data hasil pengukuran. Pada data
hasil pengukuran, pencocokan kurva (curve fitting) berarti membuat fungsi menghampiri
(aproksimasi) titik-titik data. Kurva fungsi hampiran (curve fitting) tidak perlu melalui semua
titik data tetapi cukup dekat dengan tiap data. Manfaat pencocokan kurva untuk data hasil
pengukuran:

41
BAB III METODE NUMERIK

1. Mengembangkan formula empirik pada suatu sistem.


2. Menentukan kurva kecenderungan untuk “meramalkan” perubahan selanjutnya.
Misalkan (xi, yi) adalah data hasil pengukuran. Kita akan menghampiri titik-titik
tersebut dengan sebuah garis lurus. Garis lurus tersebut dibuat sedemikian sehingga galatnya
sekecil mungkin dengan titik-titik data.

Gambar 3.8. Ilustrasi Regresi Pada Sebuah Persebaran Data.

Tahapan dalam regresi linear yaitu:

1. Memasukkan nilai x dan y yang ingin dicari trend modelnya.


2. Kemudian menghitung nilai a dan c dari fungsi y=ax+c
3. Selanjutnya menghitung a dan c dengan rumus

∗ ∑( )−∑ ∑
=
∑ − (∑ )

= − ̅
Keterangan:
a=Koefisien
b= konstanta
xi= nilai x pada titik ke...i
yi= nilai x pada titik ke...i
n= jumlah data

42
BAB III METODE NUMERIK

4. Terakhir menghitung nilai error root mean squared(RMS):

1
=( | ( )− |)

Semakin kecil nilai Erms maka pada umumnya model linear yang dibentuk semakin sesuai dengan
aslinya.

Contoh diberikan data offset dan waktu tiba seperti berikut ini:

Tabel 3.1. Data Offset dan travel time (seismik Refraksi)

(x)Offset(m) (yi)Waktu tiba(ms)


10 26,9000000000000
15 29,4500000000000
20 32,9000000000000
25 35,2000000000000
30 39,4200000000000
35 46,7000000000000
40 52,4000000000000
45 54,8000000000000
50 59,2900000000000
55 68,2000000000000
60 69,3400000000000
65 72,6000000000000
70 78,5200000000000
75 80,5200000000000
80 83,6000000000000
85 86,1200000000000
90 89,6000000000000
95 93,1000000000000
100 94,6000000000000
105 98,5000000000000

43
BAB III METODE NUMERIK

Gambar 3.9. Hasil Dari Regresi Linear.

Lakukan perhitungan regresi linear pada matlab dengan membuat dan me-run script seperti di bawah
ini:
% Regresi Linier untuk data seismik refraksi
clc;clear all; close all;
format long
% import data x dan y yang akan diregresi
x=[10;15;20;25;30;35;40;45;50;55;60;65;70;75;80;85;90;95;100;105]; %Plot
Sumbu x offset
yi=[26.9;29.45;32.9;35.2;39.42;46.7;52.4;54.8;59.29;68.2;69.34;72.6;78.52
;80.52;83.6;86.12;89.6;93.1;94.6;98.5]; %Plot sumbu y time

% menghitung nilai dari b


b=((length(x).*sum(x.*yi))-(sum(x).*sum(yi)))/((length(x).*(sum(x.^2)))-
(sum(x)).^2);

% menghitung nilai dari a


a=mean(yi)-b*mean(x);

% menyusun nilai fungsi linear


fx=a+b.*x;

% menghitung error/galat
Erms=((1/length(x))*abs(fx-yi).^2).^2;

% melakukan plot x dan y, hasil dari regresi dan data awal


plot(x,yi,'o',x,fx,'-o');
hold on
no=1:1:length(x);
No=no';

44
BAB III METODE NUMERIK

% menyusun tabel dan matriks


Table=[No,x,yi,fx,Erms];
disp(' Tabel Data Seismik Refraksi Forward Shooting ');
disp('-----------------------------------------------------');
disp(' No Offset Time fx Error ');
disp('-----------------------------------------------------');
disp(Table)
disp('-----------------------------------------------------');
disp('berdasar data-data tersebut trendlinenya sesuai persamaan y=a+bx');
disp (' a b');

% memnunculkan nilai a dan b dari persamaan linear


fprintf('%4f %4f\n', a,b);

% membuat simbol dari data


legend('Data','Regresi Linier');

% mendefinisikan label x dan y


xlabel('Offset');
ylabel('Time');

% membuat judul dari grafik


title('Grafik Regresi Linier Data Forward Shooting Seismik Refraksi');
grid on;

Gambar 3.10. Script Regresi Linear.

3.6. Interpolasi : Metode Newton Divided Difference


Interpolasi merupakan salah satu materi penting pada komputasi. Interpolasi dapat
digunakan untuk mencari hubungan dari kumpulan data tanpa error berdasar fungsi
linear atau non-linear. Data pengamatan hanya memberikan nilai hasil pengamatan yaitu nilai
y dari nilai x yang telah ditentukan. Ketika nilai x tidak diketahui maka akan sulit untuk
menentukan nilai y-nya. Contoh permasalahan pada interpolasi, terdapat tabel sebagai berikut:
Tabel 3.2. Data kedalaman dan suhu

X=kedalaman (m) Y=suhu (C)


0 25
1 26
3 28
7 30
10 34
15 37

45
BAB III METODE NUMERIK

Tabel tersebut merupakan tabel yang berisi data pengamatan berupa pengaruh gradien
kedalaman terhadap suhu, dimana parameter kedalaman dinyatakan dengan sumbu-x dan
parameter suhu dinyataan dengan sumbu-y. Pencarian nilai suhu untuk x=5 dan x=11, dapat
menggunakan pendekatan interpolasi antara lain melalui pendekatan interpolasi linear
(berderajat satu), polinomial (berderajat lebih dari satu) dan pendekatan fungsi spline.
METODE NEWTON DIVIDED DIFFERENCE
Metode Newton Divided Difference atau metode bagi dua adalah salah satu dari
pendekatan polinomial dalam teknik interpolasi. Untuk setiap pasangan data (x i,yi) dari suatu
fungsi y=f(x), dapat didekati dengan persamaan berikut :
( )= + ( − )+ ( − )( − ) + ⋯+ ( − )…( − ) (5.1)
Persamaan tersebut memenuhi:
( )= =
( )= = + ( − )
( )= = + ( − )+ ( − )( − ) dst

Hasil dari interpolasi

46
BAB III METODE NUMERIK

Gambar 3.11. Hasil Interpolasi Metode Newton Divided Dfference.

Pada gambar pertama menunjukkan titik-titik awal dari plot x dan y kedalaman dan
temperatur, pada gambar kedua menunjukkan titik hasil interpolasi polinomial data 2
menunjukkan orde polinom pangkat 1, data 3 menunjukkan orde polinom pangkat 2, data 4
menunjukkan orde polinom pangkat 3, sampai data 6 menunjukkan orde polinom pangkat 5.
Berikut ini adalah program Matlab untuk menghitung interpolasi Newton Divided Difference

3.7. Integrasi Numerik


Integral merupakan salah satu dari dua operasi utama kalkulus yaitu diferensial dan integral itu
sendiri. Secara eksplisit didefinisikan sebagai luasan yang dibatasi oleh kurva dari suatu
fungsi dan sumbu dari suatu grafik geometris. Integral ini selalu terubung dengan
diferensial.

Gambar 3.12. Ilustrasi Integral Fungsi F(X).

47
BAB III METODE NUMERIK

Integral terbagi dua integral tak tentu dan integral tentu:

Teorema dasar kalkulus Integral tertentu dimana: jika f(x) kontinu dalam selang [a,b]
dan jika F(x) adalah integral tertentu dari f(x) maka:

Atau

( − )∗ ( )

Gambar 3.13. Hasil Dari Operasi Integral Metode Newton Cotes Grafik Garis Berasal Dari Fungsi X,
Dengan Grafik Bar Berwarna Merah Menunjukkan Luasan Yang Dicover

48
BAB III METODE NUMERIK

Contoh Proses-nya Pertama buat fungsi terlebih dulu di matlab. Fungsi ini adalah nilai
persamaan yang akan dicari luasannya nanti :

function [ y ] = f( x )
y=x.^3+2*x+1
end
Gambar 3.14. Contoh fungsi.

setelah itu disave, dan diberi nama “f.m”. lalu buat script integral numerik metode newton
cotes seperti berikut ini, dan simpan di folder yang sama dengan file fungsi “f.m”(namakan
file sesuai kehendak) :

clc;clear all;close all;


format long;
a=-10; %batas bawah dari nilai x
b=10; %batas atas dari nilai x

% input nilai dari rentang untuk perhitungan


c=1
h=c;

% membuat matriks interval


n=a:c:b;

% memilih dan menghitung nilai hasil integral yang tepat


if n==b
else
A1=(h/2).*(f(n+1)+f(n));
end
d=n(1:length(n)-1);A=A1(1:length(n)-1);

% plotting gambar dan luasan


bar(d+0.5,A);
hold on
plot(n,f(n),'-o');

% Menghitung luasan dari fungsi tersebut


Luas=sum(A);
fprintf('Luas dari fungsi adalah: %5f',Luas)

Gambar 3.15. Script Integral Dan Luasan Fungsi.

3.8. Solusi Persamaan Differensial


Turunan atau diferensial atau derivatif pada ilmu kalkulus merupakan pengukuran
terhadap bagaimana fungsi berubah seiring perubahan nilai input. Derivatif ini secara
sederhana menyatakan bagaimana suatu besaran berubah akibat perubahan besaran lain.
Turunan juga dapat didefinisikan sebagai kemiringan (slope) dari suatu trend pada suatu
fungsi. Persamaan diferensial terbagi dua yaitu :

49
BAB III METODE NUMERIK

Persamaan Diferensial Biasa merupakan persamaan diferensial yang hanya mempunyai


satu peubah atau variabel bebas.
Contoh persamaan diferensial biasa:
y’=dy/dx (3.7)
Persamaan Diferensial Parsial merupakan persamaan diferensial memiliki lebih dari satu
peubah bebas. Disebut parsial karena turunan yang dilakukan karena saat salah satu
variabel diturunkan, maka variabel lainnya konstan. Turunan fungsi terhadap tiap variabel
bebas dilakukan secara parsial.
Contoh persamaan diferensial parsial:

+ =6xyex+y

Persamaan seperti ditunjukkan pada bagian persamaan .... memiliki bentuk dapat diselesaikan
dengan menggunakan metode Euler. Metode ini memiliki persamaan seperti berikut ini:

yn+1=yn+h*f(xn,yn)

contoh :

diketahui persamaan differensial seperti berikut ini:

+ =1

Persamaan tersebut dapat dirubah menjadi seperti berikut ini:

y’= 1-xy atau sama saja dengan f(x,y) = 1-xy

apabila diketahui nilai pada titik (0,0) dan nilai interval 0.1 maka dapat diselesaikan
menggunakan matlab dengan membuat fungsi seperti berikut ini:

function [ dydx ] = f( x,y )


dydx=1-(x.*y); %persamaan untuk fungsi yang didiferensialkan
end
Gambar 3.16. Contoh Fungsi Yang Didiferensialkan.

selanjutnya membuat script untuk program seperti berikut ini


% script diferensial metode euler
clear all;clc;

% interval
h=0.1

% nilai awal x dan y


y=0;
x=0;

50
BAB III METODE NUMERIK

X=[];
Y=[];

% perhitungan diferensial sampai ke


for i=1:100

X=[x;X];
Y=[y;Y];

% persamaan diferensial euler


y=y+h*f(x,y);
x=h*i;
end

% plotting data diferensial


plot(X,Y,'o-');
grid on
Gambar 3.17. Script Differensial Metode Euler.

hasil dari penyelesaian persamaan diferensial tersebut bila diplot menunjukkan pola pada
gambar.

Gambar 3.18. Hasil Differensiasi Metode Euler.

51
BAB IV

Penerapan Komputasi

4.1. Relokasi Epicenter


Relokasi epicenter merupakan metode untuk penentuan epicenter yaitu titik terjadinya
gempa secara 2D. Relokasi epicenter ini memanfaatkan Inversi Jacobi. Hasil relokasi epicenter
dapat dilihat seperti pada gambar 4.1.

Gambar 4.1. Hasil Relokasi Epicenter


Metode ini dapat dihitung dengan menggunakan script matlab sebagai berikut :

% menghapus command window dan workspace


clear all;
clc;

x=[20;50;40;10]; %Koordinat x seismogram


y=[10;25;50;40]; %Koordinat y seismogram
tobs=[6.1;2.8;5;7.9]; %waktu yang ditangkap masing2 seismogram
v=4; %asumsi kecepatan
% n=length(x);
d=input('masukkan jumlah iterasi:');

52
BAB IV PENERAPAN KOMPUTASI

mx=10; %epicenter koordinat x awal;


my=10; %epicenter koordinat y awal;
M1=[];
for n=1:d
if n>1
M=m;
% tobs=tcal;
else
M=[mx;my];
end
% waktu terkalkulasi
tcal=(1/v)*(sqrt((M(1)-x).^2+(M(2)-y).^2));
% gm=to+(1/vp)*(sqrt((x-M(1)).^2+(y-M(2)).^2))
% E=sqrt(sum((tcal-tobs).^2)/n); %Error
jx=(1/v)*((M(1)-x))./(sqrt((x-M(1)).^2+(y-M(2)).^2)); % Matrix
jacobi sumbu x
jy=(1/v)*((M(2)-y))./(sqrt((x-M(1)).^2+(y-M(2)).^2)); % Matrix
jacobi sumbu y
J=[jx jy]
m=M+inv(J'*J)*J'*(tobs-tcal);
M1=[M1 M] ;
plot(x,y,'v',mx,my,'o',m(1),m(2),'h'); %'+' penentuan awal; '0'
seismogram; 'x' relokasi
hold on
plot(M1(1,:),M1(2,:));
end
legend('Seismogram','Epicenter Awal','Relokasi');
grid on;

Kelemahan script ini adalah perlu menginput koordinat stasiun dan nilai kecepatan, serta
model awal secara manual melalui script itu sendiri.

4.2. Pembuatan Peta Kontur

Gambar 4.2. Peta Kontur Hasil Matlab

53
BAB IV PENERAPAN KOMPUTASI

Matlab dapat digunakan untuk pembuatan Peta kontur 2D. Pada script yang digunakan
kekurangannya adalah untuk menjalankan script ini perlu mengganti nama file sesuai
dengan yang ada di perintah load. Pembuatan peta kontur seperti pada gambar 4.2. pada
matlab dapat dilakukan dengan melalui tahapan berikut ini :
1. Pertama siapkan data dalam bentuk notepad dengan format X, Y, Z, seperti pada gambar
4.3.

Gambar 4.3. Contoh Data Untuk Peta Kontur.


2. Simpan data di suatu folder dan beri nama
3. Kemudian buat script berikut ini dan simpan pada folder yang sama

%menghapus command window dan variabel di workspace


clc;clear all;

%seuaikan dengan nama file yang akan diinput


load Peta1.dat

% menyusu matriks dan mensortir data


in=Peta1; %kalau nama file diganti nanti Variabel Peta1 juga diganti
X=in(:,1); %Input data X pada Baris 1 di data load
Y=in(:,2); %Input data Y pada Baris 2 di data load
Z=in(:,3); %Input data Z pada Baris 3 di data load

% Gridding data
[x,y]=meshgrid(min(X):20:max(X),min(Y):max(Y));
v=griddata(X,Y,Z,x,y);

figure (1)
contourf(x,y,v);
figure (2)
mesh(x,y,v);

54
BAB IV PENERAPAN KOMPUTASI

4.3. Isoslice Model 3D


Matlab dapat digunakan untuk pembuatan slicing 2D atau pemodelan isoslice. Pemodelan
ini dilakukan untuk menampilkan potongan gambaran dari objek 3D seperti pada gambar 4.4.

Gambar 4.4. Contoh Hasil Model Isoslice Dari Objek 3D


Tahapan pemodelan isoslice ini adalah sebagai berikut:
1. Menyusun dan membuat file berisikan X, Y, Z dan nilai yang akan diplot seperti pada
gambar 4.5.

Gambar 4.5. Contoh Data Untuk Model 3D


2. Save pada notepad dan simpan filenya.

55
BAB IV PENERAPAN KOMPUTASI

3. Kemudian buat script berikut ini dan simpan di folder yang sama dengan data.

% membersihkan comman window dan workspace


clc;clear all;

% mengambil data dari notepad sesuai dengan nama file


load s3.dat %sesuaikan nama filenya
in=s3; %ganti juga s3 dengan nama file

% menyortir data yang diinput


X=in(:,1); %Input data X pada Baris 1 di data load
Y=in(:,2); %Input data Y pada Baris 2 di data load
Z=in(:,3); %Input data Z pada Baris 3 di data load
V=in(:,4); %Input data Parameter pada Baris 4 di data load
X1=[X Y Z];

%perlu diatur agar tidak melebihi ukuran RAM misal 100-1000


inc=input('masukkan increment(rekomendasi 100-1000):');
% a=input('masukkan nilai range x:'); %Range input data x harus besar
nilainya sekitar 100 sampai 1000 agar tidak kehabisan memori
% b=input('masukkan nilai range y:'); %Range input data y harus besar
nilainya sekitar 100 sampai 1000 agar tidak kehabisan memori
% c=input('masukkan nilai range z:'); %Range input data z harus besar
nilainya sekitar 100 sampai 1000 agar tidak kehabisan memori

% griding data 3D
[x,y,z]=meshgrid(min(X):inc:max(X),min(Y):inc:max(Y),min(Z):inc:max(Z));
XI=[x(:) y(:) z(:)];
V=griddatan(X1,V,XI);
v = reshape(V, size(x));

% d=input('potong pada sumbu x ke:'); %lakukan slice pada sumbu x ke-


% e=input('potong pada sumbu y ke:'); %lakukan slice pada sumbu y ke-
% f=input('potong pada sumbu z ke:'); %lakukan slice pada sumbu z ke-

% input increment untuk interval slicing


Inc=input('masukkan increment untuk sayatan(rekomendasi 1-1000):');
xsl=min(X):Inc:max(X); ysl=min(Y):Inc:max(Y);zsl=min(Z):Inc:max(Z);

% slicing
sl=slice(x,y,z,v,xsl,ysl,zsl); %perintah slicing untuk menampilkan model
set(sl,'FaceColor','interp','EdgeColor','none');
hold off
grid on; view(3); axis vis3d tight; camlight left; lighting
gouraud;title('Model Slice Data 3D');colorbar;

Script ini memiliki kekurangan yaitu untuk menjalankan script ini perlu mengganti
nama file sesuai dengan yang ada di perintah load dan perlu diatur interval dari gridnya.

4.4. Isosurface Model 3D


Isosurface memiliki pengertian yaitu permukaan dengan nilai yang sama, merupakan salah
satu metode pemodelan 3D. Metode ini menampilkan permukaan dari nilai konstan yang sama
dari volume suatu bangun 3D. Gambar 4.6. menunjukkan bentuk isosurface.

56
BAB IV PENERAPAN KOMPUTASI

Gambar 4.6. Contoh Hasil Model Isosurface Dari Objek 3D


Untuk membuat model ini dapat dilakukan melalui tahapan berikut ini:
1. Menyusun dan membuat file berisikan X, Y, Z dan nilai yang akan diplot seperti pada
gambar 4.5.
2. Save pada notepad dan simpan filenya.
3. Kemudian buat script berikut ini dan simpan di folder yang sama dengan data.
%menghapus tampilan di dalam comman window dan variabel pada workspace
clc;clear all;

%import data dari file apabila nama file berbeda maka variabel juga berbeda
load s3.dat;in=s3;

%sortir data
X=in(:,1); %Input data X pada Baris 1 di data load
Y=in(:,2); %Input data Y pada Baris 2 di data load
Z=in(:,3); %Input data Z pada Baris 3 di data load
V=in(:,4); %Input data Parameter pada Baris 4 di data load
X1=[X Y Z]

%menentukan jumlah interval grid untuk gridding


a=input('masukkan nilai gridx:'); %Range input data x harus besar nilainya
sekitar 100 sampai 1000 agar tidak kehabisan memori
b=input('masukkan nilai gridy:'); %Range input data y harus besar nilainya
sekitar 100 sampai 1000 agar tidak kehabisan memori
c=input('masukkan nilai gridz:'); %Range input data z harus besar nilainya
sekitar 100 sampai 1000 agar tidak kehabisan memori
[x,y,z]=ndgrid(min(X):a:max(X),min(Y):b:max(Y),min(Z):c:max(Z));
XI=[x(:) y(:) z(:)];

57
BAB IV PENERAPAN KOMPUTASI

V = griddatan(X1,V,XI,'nearest');
v = reshape(V, size(x));
c=input('masukkan nilai densitas:');
p=patch(isosurface(x,y,z,v,c),...
'FaceColor','blue',...
'EdgeColor','none',...
'AmbientStrength',.2,...
'SpecularStrength',.7,...
'DiffuseStrength',.4);
p2=patch(isocaps(x,y,z,v,c),'FaceColor','interp','Edgecolor','none');
grid on
title('Model 3D Isosurface');
colorbar;view(3);
axis vis3d tight;camlight left;lighting gouraud;
% hold on
% d=input('masukkan nilai resistivitas 2:');
% p=patch(isosurface(x,y,z,v,d),...
% 'FaceColor','red',...
% 'EdgeColor','none',...
% 'AmbientStrength',.2,...
% 'SpecularStrength',.7,...
% 'DiffuseStrength',.4);
% p3=patch(isocaps(x,y,z,v,d),'FaceColor','interp','Edgecolor','none')

Script ini memiliki kekurangan yaitu untuk menjalankan script ini perlu mengganti
nama file sesuai dengan yang ada di perintah load dan perlu diatur interval dari gridnya.

4.5. Voxel Model 3D


Voxel model merupakan pemodelan berupa grid kotak 3D. Pemodelan ini
dapat dilakukan di matlab. Pemodelan Voxel ini ditunjukkan pada gambar 4.7.

Gambar 4.7. Contoh Hasil Model Voxel Dari Objek 3D

58
BAB IV PENERAPAN KOMPUTASI

Untuk membuat model ini dapat dilakukan melalui tahapsn berikut ini:
1. Menyusun dan membuat file berisikan X, Y, Z dan nilai yang akan diplot seperti pada
gambar 4.5.
2. Save pada notepad dan simpan filenya.
3. Buat fungsi “ind2patch” dan simpan di folder yang sama dengan notepad

function [F,V,C]=ind2patch(IND,M,ptype)

% function [F,V,C]=ind2patch(IND,M,ptype)
% ------------------------------------------------------------------------
%
% This function generates patch data (faces 'F', vertices 'V' and color
% data 'C') for 3D images. The patches are only generated for the voxels
% specified by the linear indices in 'IND'. The variable 'ptype' indicates
% the type of patch:
%
% 'v' Voxel patch data with unshared vertices and faces
% such that each voxel has 8 unshared vertices and 6
% unshared faces (may be faster than 'vu' and 'vb'
% options which require UNIQUE costly computations).
% 'vu' Voxel patch data such that where possible voxels share
% vertices and faces (making patch data computation slower
% but plotting more memory efficient).
% FaceColor data is averaged for shared faces.
% 'vb' Voxel patch data faces are exported for unique unshared
% faces e.g. only boundary for enclosed volume (plotted
% data is visually equivalent to 'v' and 'vu' options when
% FaceAlpha is 1)
% 'si', 'sj', 'sk' Mid-voxel slice patch data for i, j and k direction
% respectively
% 'siu', 'sju', 'sku' Same as 'si', 'sj', 'sk' but with double points
% removed.
% 'h' Creates a hexahedral element description instead (e.g
% nx8) element data.
% 'hu' Same as 'h' but with shared unique nodes.
%
%%% EXAMPLE
% clear all; close all; clc;
%
% %% Simulating 3D image
% [X,Y,Z]=meshgrid(linspace(-4.77,4.77,25));
% phi=(1+sqrt(5))/2;
% M=2 - (cos(X + phi*Y) + cos(X - phi*Y) + cos(Y + phi*Z) + cos(Y - phi*Z)
+ cos(Z - phi*X) + cos(Z + phi*X));
% M=M./max(M(:)); %Normalise, not required
%
% figure; set(gcf,'units','normalized','outerposition',[0 0 1 1]);
%maximizes figure window
% hold on; xlabel('X-J','FontSize',20);ylabel('Y-
I','FontSize',20);zlabel('Z-K','FontSize',20);
%
% %% Creating and plotting patch data
%
% %Setting up indices for X direction slices
% S=round(size(M,2)./2); %Selection of middle slice
% L_plot=false(size(M)); L_plot(:,S,:)=1;
% IND=find(L_plot);

59
BAB IV PENERAPAN KOMPUTASI

% [F,V,C]=ind2patch(IND,M,'sj'); %Creating patch data for x mid-voxel


slices
% hs=patch('Faces',F,'Vertices',V,'EdgeColor','none',
'CData',C,'FaceColor','flat','FaceAlpha',0.75);
%
% %Setting up indices for Y direction slices
% S=round(size(M,1)./2); %Selection of middle slice
% L_plot=false(size(M)); L_plot(S,:,:)=1;
% IND=find(L_plot);
% [F,V,C]=ind2patch(IND,M,'si'); %Creating patch data for y mid-voxel
slices
% hs=patch('Faces',F,'Vertices',V,'EdgeColor','none',
'CData',C,'FaceColor','flat','FaceAlpha',0.75);
%
% %Setting up indices for Z direction slices
% S=round(size(M,3)./2); %Selection of middle slice
% L_plot=false(size(M)); L_plot(:,:,S)=1;
% IND=find(L_plot);
% [F,V,C]=ind2patch(IND,M,'sk'); %Creating patch data for z mid-voxel
slices
% hs=patch('Faces',F,'Vertices',V,'EdgeColor','none',
'CData',C,'FaceColor','flat','FaceAlpha',0.75);
%
% %Setting up indices for voxels
% IND=find(M>-0.2 & M<=0); % A selection of low intensity voxels
% [F,V,C]=ind2patch(IND,M,'v'); %Creating patch data for selection of low
voxels
% hs=patch('Faces',F,'Vertices',V,'EdgeColor','k',
'CData',C,'FaceColor','flat','FaceAlpha',1);
%
% %Setting up indices for voxels to plot
% IND=find(M>0.9); % A selection of high intensity voxels.
% [F,V,C]=ind2patch(IND,M,'v'); %Creating patch data for selection of high
voxels
% hs=patch('Faces',F,'Vertices',V,'EdgeColor','k',
'CData',C,'FaceColor','flat','FaceAlpha',1);
%
% axis equal; view(3); axis tight; colormap jet; colorbar; caxis([0 1]);
grid on;
% set(gca,'FontSize',20);
%
% Kevin Mattheus Moerman
% gibbon.toolbox@gmail.com
%
% 2014/09/25
%------------------------------------------------------------------------

%% PARSING INPUT

%Get indices to patch


if islogical(IND) %treated as a logic index and converted to linear indices
IND=find(IND);
end
IND=IND(:);

%Deal with complex data


if ~isreal(M)
M=real(M);
disp('Warning: Complex data, imaginary components were ignored')
end

60
BAB IV PENERAPAN KOMPUTASI

%%

numIND=numel(IND);

[I,J,K] = ind2sub(size(M),IND); %Convert to I,J,K coordinates

switch ptype
case {'si','siu'} %I midvoxel slice
i_shift=ones(size(IND))*[ 0 0 0 0 ];
j_shift=ones(size(IND))*[-0.5 -0.5 0.5 0.5 ];
k_shift=ones(size(IND))*[-0.5 0.5 0.5 -0.5 ];
faceOrder=[1 2 3 4];
numNodes=4;
case {'sj','sju'} %J midvoxel slice
i_shift=ones(size(IND))*[-0.5 0.5 0.5 -0.5 ];
j_shift=ones(size(IND))*[ 0 0 0 0 ];
k_shift=ones(size(IND))*[-0.5 -0.5 0.5 0.5 ];
faceOrder=[1 2 3 4];
numNodes=4;
case {'sk','sku'} %K midvoxel slice
i_shift=ones(size(IND))*[-0.5 0.5 0.5 -0.5 ];
j_shift=ones(size(IND))*[-0.5 -0.5 0.5 0.5 ];
k_shift=ones(size(IND))*[ 0 0 0 0 ];
faceOrder=[1 2 3 4];
numNodes=4;
case {'v','vu','vb'} %Voxels, same with unique faces and vertices, only
boundary (unshared) faces and vertices
i_shift=ones(size(IND))*[-0.5 0.5 0.5 -0.5 -0.5 0.5 0.5 -
0.5];
j_shift=ones(size(IND))*[-0.5 -0.5 0.5 0.5 -0.5 -0.5 0.5
0.5];
k_shift=ones(size(IND))*[ 0.5 0.5 0.5 0.5 -0.5 -0.5 -0.5 -
0.5];
faceOrder=[1 2 3 4;... %Top
5 6 7 8;... %Bottom
1 2 6 5; ... %Left face
3 4 8 7; ... %Right face
1 4 8 5; ... %Back
2 3 7 6]; %Front
numNodes=8;
case {'h','hu'} %Hexahedral element
i_shift=ones(size(IND))*[-0.5 0.5 0.5 -0.5 -0.5 0.5 0.5 -
0.5];
j_shift=ones(size(IND))*[-0.5 -0.5 0.5 0.5 -0.5 -0.5 0.5
0.5];
k_shift=ones(size(IND))*[ 0.5 0.5 0.5 0.5 -0.5 -0.5 -0.5 -
0.5];
faceOrder=[1 2 3 4 5 6 7 8];
numNodes=8;
otherwise
warning('wrong input for argument ptype, valid inputs are s for
surfaces patches and v for voxel patches');
end
numFacesPerVoxel=size(faceOrder,1);
numNodesPerFace=size(faceOrder,2);

VI=I*ones(1,numNodes);
VJ=J*ones(1,numNodes);
VK=K*ones(1,numNodes);

61
BAB IV PENERAPAN KOMPUTASI

VI=VI+i_shift; VI=VI'; VI=VI(:);


VJ=VJ+j_shift; VJ=VJ'; VJ=VJ(:);
VK=VK+k_shift; VK=VK'; VK=VK(:);

V=zeros(length(VI),3);

V=[VJ VI VK]; %N.B. I and J direction are switched

%Creates faces
Fi=ones(numIND,numNodesPerFace);
F=repmat(Fi,numFacesPerVoxel,1);
b=(numNodes.*((1:1:numIND)'-1))*ones(1,numNodesPerFace);
for q=1:1:numFacesPerVoxel
Fi=ones(size(IND))*faceOrder(q,:)+b;
F((1+numIND*(q-1)):numIND*q,:)=Fi;
end

%Preparing color information


C=M(IND);
C=C(:);

if ~isa(C,'double'); %If the image is not a double, then convert


C=double(C);
end
if numFacesPerVoxel>1;
C=repmat(C,[numFacesPerVoxel,1]);
end

switch ptype
case {'vu','vb'}

%Removing double VERTICES


[V,~,IND_IND]=unique(V,'rows'); %works well because coordinates are
integers +/- 0.5
F=IND_IND(F);

%Removing double FACES


Fs=sort(F,2); %Sort so faces with same nodes have the same rows
[~,IND_F,IND_F_2]=unique(Fs,'rows'); %integer unique operation
F=F(IND_F,:);

%Get face counts (used for averaging colour)


numF=size(Fs,1); numFuni=size(F,1);
logicColourMatrixEntry=sparse(IND_F_2,1:numF,1,numFuni,numF,numF);
F_count=full(sum(logicColourMatrixEntry,2));

%Fixing face colors, shared faces now obtain mean colour


if ~isempty(C)

sharedColourMatrixSparse=sparse(IND_F_2,1:numF,C,numFuni,numF,numF);
C=full(sum(sharedColourMatrixSparse,2))./F_count;
end

%Removing non-unique faces for option 'vb'


if strcmp(ptype,'vb')
%Only keeping un-shared faces and color data
F=F(F_count==1,:);
C=C(F_count==1,:);

62
BAB IV PENERAPAN KOMPUTASI

%Remove excess points


indVUni=unique(F(:));
V=V(indVUni,:);

%Now fix face matrix entries


indVFix=nan(size(V,1),1);
indVFix(indVUni)=1:numel(indVUni);
F=indVFix(F);
end
case{'siu','sju','sku'}
%Removing double vertices
[V,~,IND_IND]=unique(V,'rows'); %works well because coordinates are
integers +/- 0.5
F=IND_IND(F);
case 'hu'
%Removing double vertices
[V,~,IND_IND]=unique(V,'rows'); %works well because coordinates are
integers +/- 0.5
F=IND_IND(F);
end

%Tranposing F if required (possible if numel(find(IND))=1)


if size(F,2)==1
F=F';
end

end

4. Kemudian buat script berikut ini dan simpan di folder yang sama dengan data dan fungsi
“ind2patch”.

clc;clear all;
load s3.dat
in=s3;
X=in(:,1); %Input data X pada Baris 1 di data load
Y=in(:,2); %Input data Y pada Baris 2 di data load
Z=in(:,3); %Input data Z pada Baris 3 di data load
V=in(:,4); %Input data Parameter pada Baris 4 di data load
X1=[X Y Z];

% input nilai interval model voxel


inc=500;
% a=input('masukkan nilai gridx:'); %Range input data x harus besar
nilainya sekitar 100 sampai 1000 agar tidak kehabisan memori
% b=input('masukkan nilai gridy:'); %Range input data y harus besar
nilainya sekitar 100 sampai 1000 agar tidak kehabisan memori
% c=input('masukkan nilai gridz:'); %Range input data z harus besar
nilainya sekitar 100 sampai 1000 agar tidak kehabisan memori

% gridding voxel 3D
[x,y,z]=ndgrid(min(X):inc:max(X),min(Y):inc:max(Y),min(Z):inc:max(Z));
XI=[x(:) y(:) z(:)]; % Belum terpakai
V=griddatan(X1,V,XI);
v = reshape(V, size(x));
IND=find(v); % input parameter yang akan dimodelkan dengan mengganti nilai
v
% modelling 3D voxel

63
BAB IV PENERAPAN KOMPUTASI

[F,V,C]=ind2patch(IND,v,'v');
title('patch type: v');
xlabel('J - columns');ylabel('I - rows'); zlabel('K - slices'); hold on;

p=patch('Faces',F,'Vertices',V,'FaceColor','flat','CData',C,'EdgeColor','k'
,'FaceAlpha',0.5);
% set(p,'FaceColor','interp','EdgeColor','none');
axis equal; view(3); axis tight; axis vis3d; grid on;axis vis3d
tight;%camlight left;lighting gouraud;
drawnow;colorbar;

Script ini memiliki kekurangan yaitu untuk menjalankan script ini perlu mengganti
nama file sesuai dengan yang ada di perintah load dan perlu diatur interval dari gridnya
serta perlu membuat fungsi “ind2patch”.

4.6. Animasi 3D Sederhana


Salah satu aplikasi matlab dalam analisa grafik adalah animasi. Bentuk animasi sederhana
“on-the-fly” yang dapat dilakukan dengan 2 fungsi dasar matlab dalam 2D maupun 3D. Dalam
bentuk 2D dengan fungsi comet danuntuk 3D dalam fungsi comet3. Contoh sederhana aplikasi
dengan menggunakan fungsi comet dan comet3 dapat dilihat pada listing sederhana matlab
berikut ini:

t = 0:0.01:10*pi;
x = t.*sin(t);y=t.*cos(t);
comet3(x,y,t);

Gambar 4.8. Animasi 3D Menggunakan Comet3


4.7. Animasi 3D Rotasi

Sebagai contoh animasi rotasi sederhana yang bisa digunakan untuk latihan adalah dengan
menggunakan bentuk kubus yang berputar. Langkah pertama yang dilakukan dengan membuat
bentuk kubus awal.

64
BAB IV PENERAPAN KOMPUTASI

x = [0 1 1 0 0 0 1 1 0 0 NaN 1 1 NaN 1 1 NaN 0 0];


y = [0 0 1 1 0 0 0 1 1 0 NaN 0 0 NaN 1 1 NaN 1 1];
z = [0 0 0 0 0 1 1 1 1 1 NaN 1 0 NaN 0 1 NaN 1 0];
cube_h = plot3(x-0.5,y-0.5,z-0.5);
axis('square');
axis([-1 1 -1 1 -1 1]*2);
view(-37.5,15);
set(cube_h,'erasemode','background');
rotation_increment = 5; % degrees
rotation_axis = [0 0 1];
rotation_origin = [0 0 0];
num_of_incr = 360/rotation_increment;
for loop = 1:num_of_incr
rotate(cube_h,rotation_axis,...
rotation_increment,rotation_origin);
drawnow;
end

Gambar 4.9. Animasi 3D Menggunakan Rotasi

Buat beberapa kubus yang berputar yang lain.


x = [0 1 1 0 0 0 1 1 0 0 NaN 1 1 NaN 1 1 NaN 0 0];
y = [0 0 1 1 0 0 0 1 1 0 NaN 0 0 NaN 1 1 NaN 1 1];
z = [0 0 0 0 0 1 1 1 1 1 NaN 1 0 NaN 0 1 NaN 1 0];
cube_h = plot3(x-0.5,y-0.5,z-0.5);
axis('square');
axis([-1 1 -1 1 -1 1]*2);
view(-37.5,15);
set(cube_h,'erasemode','background');
rotation_increment = 5; % degrees
rotation_axis = [0 0 1];
rotation_origin = [0 0 0];
num_of_incr = 360/rotation_increment;
for loop = 1:num_of_incr
rotate(cube_h,rotation_axis,...
rotation_increment,rotation_origin);
drawnow;
end
cube2_h = line(x+1,y+1,z+1,'erasemode','background');
for loop = 1:num_of_incr
rotate(cube_h,rotation_axis,...
rotation_increment,rotation_origin);
rotate(cube2_h,rotation_axis+[1 1 0],...
rotation_increment,rotation_origin+1);
drawnow;
end

65
BAB IV PENERAPAN KOMPUTASI

Gambar 4.10. Animasi 3D Meggunakan Rotasi

x = [0 0 1 1 0]; y = [0 1 1 0 0]; z = zeros(size(x));


rotation_axis = [0 0 1];
rotation_origin = [0 0 0];
rotation_increment = 5; % degrees
num_of_incr = 360/rotation_increment;
s1_h = surf([x;x]-.5,[y;y]-.5,[z+0.5;z-0.5]);
set(s1_h,'erasemode','background',...
'facecolor','none',...
'edgecolor','g');
s2_h = surface([x;x]+1.5,[y;y]+1.5,[z+.5;z-0.5]+1.5,...
'erasemode','background',...
'facecolor','none',...
'edgecolor','r');
s3_h = surface([x;x]+1.5,[y;y],[z+.5;z-0.5],...
'erasemode','background',...
'facecolor','none',...
'edgecolor','b');
axis([-3 3 -3 3 -3 3]);axis('square');
for loop = 1:num_of_incr
rotate(s1_h,rotation_axis,...
rotation_increment,rotation_origin);
rotate(s2_h,rotation_axis+[1 1 0],...
rotation_increment,rotation_origin+1);
rotate(s3_h,rotation_axis,...
rotation_increment,rotation_origin);
drawnow;
end

Gambar 4.11. Animasi 3D Menggunakan Rotasi

% Generate vertices for the surface of a single cube.

66
BAB IV PENERAPAN KOMPUTASI

xx = [0 0 1 1 0 NaN 0 1 NaN 1 0;...


0 0 1 1 0 NaN 0 1 NaN 1 0];
yy = [0 1 1 0 0 NaN 1 1 NaN 1 1;...
0 1 1 0 0 NaN 0 0 NaN 0 0];
zz = [1 1 1 1 1 NaN 1 1 NaN 0 0;...
0 0 0 0 0 NaN 1 1 NaN 0 0];

% Set up rotation variables.


rotation_increment = 5; % degrees
rotation_axis = [0 0 1];
rotation_origin = [0 0 0];
num_of_incr = 360/rotation_increment;

% Generate 3 translated versions of the cube.


s1_h = surf([xx]-.5,[yy]-.5,[zz]-.5);
set(s1_h, 'erasemode','background','facecolor','g');
s2_h = surface([xx]+1.5,[yy]+1.5,[zz]+1,...
'erasemode','background','facecolor','r');
s3_h = surface([xx]+1.5,[yy],[zz]-0.5,...
'erasemode','background','facecolor','b');

% Set up the proper proportions.


axis([-3 3 -3 3 -3 3]);axis('square');

% Define the rotation specifications for each cube.


for loop = 1:num_of_incr
rotate(s1_h,rotation_axis,...
rotation_increment,rotation_origin);
rotate(s2_h,rotation_axis+[1 1 0],...
rotation_increment,rotation_origin+1);
rotate(s3_h,rotation_axis,...
rotation_increment,rotation_origin);
drawnow;
end

Gambar 4.12. Animasi 3D Rotasi

67
BAB IV PENERAPAN KOMPUTASI

4.8. Analisa Gerakan Partikel Gempa Bumi

Berikut ini adalah latihan dalam pengolahan data gempa bumi. Dari mulai load data, cut dan
zoom, dilanjutkan dengan analisa gerakan partikelnya ditinjau dari 3 komponen serta dalam
domain 3D. Data gempa berasal dari gempa Loma Prieta.

Sumber:
C. Denham, 1990, C. Moler, August, 1992.
% Copyright (c) 1984-98 by The MathWorks, Inc

Berikut listing program analisa data gempabumi

%QUAKE Loma Prieta Earthquake.


echo off

clf reset
clc
echo on

load quake
% The data are courtesy Joel Yellin at the Charles F. Richter
% Seismological Laboratory, University of California, Santa Cruz.

% Press any key to continue after pauses.


pause

clc

% In the workspace now are three variables containing time


% traces from an accelerometer in the Natural Sciences'
% building at UC Santa Cruz. The accelerometer recorded the
% main shock of the earthquake. The variables n, e, v refer to
% the three directional components measured by the instrument,
% which was aligned parallel to the fault, with its N direction
% pointing in the direction of Sacramento.
% The data is uncorrected for the response of the instrument.
% The data needs to be scaled by the gravitational acceleration.
% A fourth variable, t, containing a time base, is also created.

g = 0.0980;
delt = 1/200;
e = g*e;
n = g*n;
v = g*v;
t = delt*(1:length(e))';
pause

clc

% Here are plots of the accelerations.

yrange = [-250 250];


ax = [0 50 yrange];
subplot(3,1,1), plot(t,e,'y-'), title('East-West acceleration'), axis(ax)
set(gca, 'Color', 'black');
subplot(3,1,2), plot(t,n,'m-'), title('North-South acceleration'), axis(ax)

68
BAB IV PENERAPAN KOMPUTASI

set(gca, 'Color', 'black');


subplot(3,1,3), plot(t,v,'c-'), title('Vertical acceleration'), axis(ax)
set(gca, 'Color', 'black');
pause

clc

% Now, we click twice with the mouse along one of the time axes
% to select an interesting time interval.

% Let's look at the interval from t=8 sec to t=15 sec


% Draw white lines at the selected spots.
% All subsequent calculations will involve the selected interval.

%t1 = ginput(1);
%t1(2) = t1(1);

t1=8*[1 1];
subplot(3,1,1), hold on, plot(t1,yrange,'w-','erase','none', 'LineWidth',
2); hold off
subplot(3,1,2), hold on, plot(t1,yrange,'w-','erase','none', 'LineWidth',
2); hold off
subplot(3,1,3), hold on, plot(t1,yrange,'w-','erase','none', 'LineWidth',
2); hold off

%t2 = ginput(1)
%t2(2) = t2(1);
t2=15*[1 1];
subplot(3,1,1), hold on, plot(t2,yrange,'w-','erase','none', 'LineWidth',
2); hold off
subplot(3,1,2), hold on, plot(t2,yrange,'w-','erase','none', 'LineWidth',
2); hold off
subplot(3,1,3), hold on, plot(t2,yrange,'w-','erase','none', 'LineWidth',
2); hold off
pause

clc

% Zoom in on the selected time interval.

trange = sort([t1(1) t2(1)])


k = find((trange(1)<=t) & (t<=trange(2)));
e = e(k);
n = n(k);
v = v(k);
t = t(k);
ax = [trange yrange]

subplot(3,1,1), plot(t,e,'y-'), title('East-West acceleration'), axis(ax)


set(gca, 'Color', 'black');
subplot(3,1,2), plot(t,n,'m-'), title('North-South acceleration'), axis(ax)
set(gca, 'Color', 'black');
subplot(3,1,3), plot(t,v,'c-'), title('Vertical acceleration'), axis(ax)
set(gca, 'Color', 'black');
pause

clf
clc

69
BAB IV PENERAPAN KOMPUTASI

% The COMET function produces a dynamic plot of one second's worth


% of horizontal acceleration.

k = length(t);
k = round(max(1,k/2-100):min(k,k/2+100));
xlabel('East'), ylabel('North');
title('Acceleration During a One Second Period');
hold on
comet(e(k),n(k))
pause

clc

% The velocity and position of a point in 3-D space can be obtained


% by integrating the accelerations twice.

edot = cumsum(e)*delt; edot = edot - mean(edot);


ndot = cumsum(n)*delt; ndot = ndot - mean(ndot);
vdot = cumsum(v)*delt; vdot = vdot - mean(vdot);
subplot(2,1,1);
plot(t,[edot+25 ndot vdot-25])
axis([trange min(vdot-30) max(edot+30)])
xlabel('Time'), ylabel('V - N - E'), title('Velocity')
drawnow

epos = cumsum(edot)*delt; epos = epos - mean(epos);


npos = cumsum(ndot)*delt; npos = npos - mean(npos);
vpos = cumsum(vdot)*delt; vpos = vpos - mean(vpos);
subplot(2,1,2)
plot(t,[epos+50 npos vpos-50])
xlabel('Time'), ylabel('V - N - E'), title('Position')
axis([trange min(vpos-55) max(epos+55)])
pause

clf
na = max(abs(npos)); na = 1.05*[-na na];
ea = max(abs(epos)); ea = 1.05*[-ea ea];
va = max(abs(vpos)); va = 1.05*[-va va];
clc

% The trajectory defined by the position data can be displayed


% with three different 2-dimensional projections. The first is

subplot(2,2,1)
plot(npos,vpos, 'r-');
axis([na va])
xlabel('North'); ylabel('Vertical');
pause

% The trajectory can be annotated with a few values of t.

nt = ceil((max(t)-min(t))/6);
k = find(fix(t/nt)==(t/nt))';
for j = k, text(npos(j),vpos(j),['o ' int2str(t(j))]); end
pause

clc

% Similar code produces two more 2-D views.

70
BAB IV PENERAPAN KOMPUTASI

subplot(2,2,2)
plot(epos,vpos, 'color',[1 0 1],'linestyle','-');
for j = k; text(epos(j),vpos(j),['o ' int2str(t(j))]); end
axis([ea va])
xlabel('East'); ylabel('Vertical');
drawnow

subplot(2,2,3)
plot(npos,epos, 'color',[0 .5 0],'linestyle','-');
for j = k; text(npos(j),epos(j),['o ' int2str(t(j))]); end
axis([na ea])
xlabel('North'); ylabel('East');
pause

clc

% The fourth subplot is a 3-D view of the trajectory.


%quktest=-100
subplot(2,2,4)
plot3(npos,epos,vpos,'b-')
for j = k;text(npos(j),epos(j),vpos(j),['o ' int2str(t(j))]);end
xlabel('North'); ylabel('East'), zlabel('Vertical');
axis([na ea va])
set(gca,'box','on')
pause

clf
clc

% Another 3-D view of position is obtained with the MESH function.

n = 50;
p = fix((n-1)*(epos-min(epos))/(max(epos)-min(epos))+1);
q = fix((n-1)*(npos-min(npos))/(max(npos)-min(npos))+1);
r = vpos - min(vpos);
z = zeros(n,n);
echo off;
for k = 1:length(r);z(p(k),q(k)) = r(k);end
echo on;
mesh(z)
axis([0 n 0 n 0 max(r)])
set(gca, 'Color', 'black')
title('The movement of a point in 3-dimensions')
zlabel('Vertical');
xlabel('North-South')
ylabel('East-West')
colormap([0 0 1]);
pause

clf
clc

% Finally, Handle Graphics allows us to produce a dancing dot which traces


% the actual movement of a point on the earth during this portion of the
quake.

plot3(npos,epos,vpos,'b')
axis([min(npos) max(npos) min(epos) max(epos) min(vpos) max(vpos)])
xlabel('North-South')

71
BAB IV PENERAPAN KOMPUTASI

ylabel('East-West')
zlabel('Vertical')
title('Position (cms)')
hold on
plt = plot3(0,0,0,'.','erasemode','xor','markersize',24);

dk = ceil(length(epos)/1500);
echo off;
for k =
1:dk:length(epos);set(plt,'xdata',npos(k),'ydata',epos(k),'zdata',vpos(k));
drawnow;end
echo on;
hold off
s = 'for k = 1:dk:length(epos)';
s = [s 'set(plt,''xdata'',npos(k),''ydata'',epos(k),''zdata'',vpos(k)),'];
s = [s 'drawnow,end'];
echo off
uicontrol('Units','normal','Position',[.4 .01 .1
.06],'String','Again','callback',s)

72
BAB IV PENERAPAN KOMPUTASI

73
BAB IV PENERAPAN KOMPUTASI

74
BAB IV PENERAPAN KOMPUTASI

75
BAB V

Pengenalan Microsoft Visual Studio

5.1 Pengantar Microsoft Visual Studio


Microsoft Visual Studio merupakan perangkat lunak lengkap yang sering digunakan
untuk melakukan pengembangan aplikasi, baik itu aplikasi bisnis, aplikasi personal ataupun
komponen aplikasinya, dalam bentuk konsol, aplikasi windows ataupun aplikasi web. Visual
Studio mencangkum kompiler, SDK, IDE (Integrated Development Environment), dan
dokumentasi (umumnya berupa MSDN Library). Kompiler yang dimasukkan ke dalam paket
Visual Studio antara lain Visual C++, Visual C#, Visual Basic, Visual Basic.NET, Visual
InterDev, Visual J++, Visual J#, Visual FoxPro, dan Visual SourceSave.

Microsoft Visual Studio dapat digunakan untuk mengembangkan aplikasi dalam native
code (dalam bentuk bahasa mesin yang berjalan di windows) maupun managed code (dalam
bentuk Microsoft Intermediate Language di atas .NET Framework). Selain itu, Visual Studio
juga dapat digunakan untuk mengembangkan aplikasi Silverlight, aplikasi windows mobile
(yang berjalan di atas .NET Compact Framework).

Daya tarik dari Microsoft Visual Studio adalah memberikan pengalaman Look and Feel
yang dibuat dalam sebuah GUI (Graphical User Interface). Salah satu contoh GUI, dapat dilihat
pada gambar 1 yang menampilkan sebuah jendela IDE Visual Studio 2015 yang memuat
pelbagai kontrol (kendali) GUI. Di Bagian Atas Jendela terdapat sebuah batang menu yang
memuat menu FILE, EDIT, VIEW, DEBUG, TEAM, TOOLS, TEST, ACHITECTURE,
ANALYZE, WINDOW, dan HELP. pada bagian kanan dan kiri dari jendela IDE Visual Studio
terdapat menu toolbar, solution Explorer dan Server Explorer. Pada bagian menu ini dapat
ditambahkan menu – menu lain seperti Data Source atau SQL Server Object Explorer dengan
menambahkannya pada menu View.

Gambar 1. Kendali – Kendali GUI pada jendela IDE Visual Studio 2015

76
BAB V PENGENALAN MICROSOFT VISUAL STUDIO

5.2 Windows Form


Windows form digunakan untuk menciptakan GUI untuk program. Untuk mendesain sebuah
Form, dapat digunakan alat – alat yang tersedia pada jendela Toolbox pada gambar 2. Alat –
alat yang ditampilkan akan berbeda pada tiap kompiler, namun ada beberapa alat yang yang
sama pada beberapa kompiler seperti C# dan Visual Basic.

Gambar 5.1. Tools Pada Jendela Toolbox Visual Studio 2015

Tentang beberapa fungsi pada toolbox yang sering digunakan dapat dilihat pada tabel 1.
Tabel 1. Beberapa Fungsi Tools Pada Jendela Toolbox Visual Studio 2015
Fungsi Penjelasan
Label Menampilkan citra atau teks yang tidak bisa di edit.
TextBox Memampukan pengguna untuk memasukkan data melalui papan
ketik. Ia juga dipakan untuk menampilkan teks yang dapat diedit
maupun yang tidak bisa diedit.
CheckBox Menetapkan sebuah opsi yang dapat diseleksi (dicentang) atau
diseleksi.
ComboBox Menyedikan sebuah daftar drop – down yang memuat item – item
sehingga pengguna dapat membuat pilihan dengan mengklik suatu
item pada daftar atau dengan mengetikkannya pada sebuah kotak
yang tersedia.
ListBox Menyediakan sebuah daftar item yang dapat dipilih pengguna
dengan mengklik satu atau lebih item.
Panel Sebuah container dimana di dalamnya kendali – kendali dapat
ditempatkan dan diorganisir.
NumericUpDown Memampukan pengguna untuk memilih dari suatu rentang yang
memuat nilai – nilai masukan numerik.
Button Memicu sebuah event ketika diklik dengan mouse.

77
BAB V PENGENALAN MICROSOFT VISUAL STUDIO

Standarnya, jika kita mengatur tools yang dimuat dalam suatu form dapat dilakukan
pada jendela Properties di kanan bawah jendela Visual Studio. Hal yang menjadi dasar dalam
pengaturan tiap tools yaitu pengaturan nama objek, dimana nama objek ini akan berpengaruh
terhadap proses coding. Namun pada dasarnya Visual Studio akan memberikan nama secara
default kepada setiap tools yang ada, misalnya tool label akan diberi nama secara default
menjadi Label1 dan seterusnya. Untuk mempermudah proses coding ini sebaiknya nama objek
diubah sesuai kebutuhan. Dapat juga dimasukkan sebuah event yang diinginkan, misalnya
mouse leave pada pictures box yang akan memberikan efek sesuai dengan keinginan.

Pada sebuah form akan memiliki jendela editor, dimana jendela editor terlihat sama
pada beberapa kompiler, misalnya saja C# dengan Visual Basic. Akan terlihat bahwa ada 3
kolom pilihan dimana kolom paling kanan untuk memilih project, tengah berupa pilihan
terhadap tools yang akan dicoding, dan kolom paling kiri berupa pilihan event yang diinginkan,
misalnya event klik atau hoever yang dapat dilihat pada gambar 3. Bila telah memilih ketiga
pilihan pada masing – masing kolom, akan muncul sebuah coding yang diawali dengan private
sub dan diakhiri dengan end sub yang disebut statement dimana kita memasukkan perintah
pada baris diantara keduanya.

Gambar 5.2. Jendela Editor Visual Studio 2015

78
BAB V PENGENALAN MICROSOFT VISUAL STUDIO

Adapun beberapa event yang sering digunakan dapat dilihat pada tabel 2.
Tabel 2. Beberapa Fungsi Event Pada Visual Studio 2015

Event Penjelasan
Load Terjadi sebelum sebuah form ditampilkan kepada pengguna.

Click Terjadi ketika sebuah tool diklik.


MouseHoever Terjadi ketika mouse berada pada sebuah tool.
MouseLeave Terjadi ketika mouse meninggalkan tool.
DoubleClick Terjadi ketika sebuah tool diklik 2 kali.

5.3 Bahasa Visual Basic Tipe Variabel


Dibandingkan dengan type data yang terdapat pada bahasa basic, maka pada VBA, type
data yang disediakan lebih banyak, seperti type Currency, Decimal, Object, dan Variant..
Variant merupakan type variabel yang istimewa, karena dapat berubah dari satu type ke type
yang lain, sesuai dengan evaluasi ekspresi oleh Visual Basic.

Ketepatan pemilihan type variabel akan sangat menentukan pemakaian resources oleh
aplikasi yang dihasilkan, adalah tugas programmer untuk memilih type yang sesuai untuk
menghasilkan program yang efisien dan berperfomance tinggi.

Tabel 3. Tipe Variabel, Pemakaian Storage Dan Jangkauan Masing-Masing

5.4 Operator Pada Visual Basic Dan Urutan Operasinya


Visual basic meyediakan operator aritmatika, komparasi dan logika, salah satu hal yang
harus dipahami oleh programmer adalah tata urutan operasi dari masing-masing operator
tersebut sehingga mampu membuat ekspresi yang akan menghasilkan nilai yang benar, Tabel
1-2, menunjukkan operator dan urutan operasinya dari atas kebawah.

Contoh :

A=1+2*3 'Akan menghasilkan 7

B = (1 + 2) * 3 'Akan menghasilkan 9

79
BAB V PENGENALAN MICROSOFT VISUAL STUDIO

Tabel 4. Operator Pada Visual Basic Dan Urutan Operasi Dari Atas Ke Bawah

5.5 Deklarasi Variabel


Visual Basic memungkinkan kita untuk menggunakan variabel tanpa deklarasi. Tetapi
hal ini adalah kurang baik untuk praktek pemrograman yang terstruktur dan menghindari
kesalahan pengolahan yang diakibatkan oleh kesalahan dalam pengetikkan nama variabel.
Agar setiap variabel yang digunakan harus dideklarasikan, dapat digunakan perintah :

Option Explicit

Pada setiap awal module, atau pada menu Tools, pilih Option, pilih tab Editor, buat tanda check
pada Require Variable Declaration.
Deklarasi variabel pada Visual Basic dapat dilakukan dengan Keyword berikut :
Tabel 5. Keyword pada deklarasi variabel

5.6 Konvensi Penamaan Dalam Visual Basic


Ketika anda menulis Code Visual Basic, anda mendeklarasikan banyak elemen (Sub
dan Function procedures, variables, constants,dan lainnya). Nama dari procedure, variabel,
dan konstanta yang mana anda deklarasi pada Visual Basic harus mengikuti petunjuk berikut :

• Harus dimulai dengan suatu Huruf


• Tidak dapat mengandung titik atau spesial karakter
• Tidak dapat lebih dari 255 huruf, nama dari kontrol, form, class, dan module tidak dapat
melebihi 40 karakter.
• Tidak dapat sama dengan keywords yang tercadang.
Keyword yang tercadang adalah kata yang Visual Basic gunakan sebagai bagian dari
bahasanya. Ini terdiri dari predefined statements (seperti If dan Loop), function (seperti Len
dan Abs), dan operator (seperti Or dan Mod).

5.7 Deklarasi Variabel


• Deklarasi variabel pada bagian deklarasi (general declaration) di suatu form, standard, atau
class module, dari pada dalam suatu procedure, membuat variabel itu berlaku untuk semua
procedure dan function dalam module tersebut

80
BAB V PENGENALAN MICROSOFT VISUAL STUDIO

• Deklarasi variabel dengan menggunakan keyword Public membuatnya berlaku pada


keseluruhan aplikasi anda.
• Deklarasi suatu variabel lokal dengan menggunakanan keyword Static akan menyimpan
nilainya ketika suatu procedure berakhir.

5.8 Deklarasi Implicit


Anda tidak perlu mendeklarasikan suatu variabel sebelum menggunakan, tetapi fasilitas
ini tidak disarankan oleh penulis, karena dapat mengakibatkan bug-bug tersembunyi karena
pemakaian variabel yang tidak konsisten dan kemungkinan kesalahan pengetikan nama
variabel. Defaultnya Visual Basic menggunakan Deklarasi Implicit.

5.9 Deklarasi Explicit


Untuk mencegah kesalahan mengetik variabel, dan Visual Basic akan selalu
memberikan peringatan jika menemukan nama yang tidak dideklarasikan terlebih dahulu
sebagai suatu variabel.

81
BAB VI

Graphical User Interface Matlab


Laying Out a Simple GUI
In this section...
“Membuka GUI Baru Pada Layout Editor” pada halaman 2-
1
“Mengatur Ukuran Grafik GUI ” pada halaman 2-3
“Menambah Komponen” pada halaman 2-3
“Menyusun Komponen” pada halaman 2-4
“Menambah Teks ke Komponen” pada halaman
2-6
“Menyelesaikan Layout” pada halaman 2-9
Layout Editor
1 Mulai GUIDE dengan mengetik guide pada Command Window
Matlab. Ini menampilkan dialog GUIDE Quick Start seperti gambar
berikut ini

2 Pada dialog Quick Start, pilih template Blank GUI(Default). Klik OK untuk
memunculkan GUI kosong pada Layout Editor, seperti gambar berikut ini.
2 Creating a Simple GUI with GUIDE

3 Munculkan nama dari komponen GUI pada palet komponen. Pilih


Preferences dari File menu MATLAB. Kemudian pilih
GUIDE>Show names in component palette, dan klik OK. Layout
Editor kemudian tampil seperti gambar berikut ini.

2-2
BAB VI GRAPHICAL USER INTERFACE MATLAB

Mengatur Ukuran Figure GUI


Atur ukuran dari GUI dengan mengatur luasan grid pada Layout
Editor. Klik pojok kanan bawah dan tarik sampai GUI mendekati
tinggi 3 inchi dan lebar 4 inchi. Jika perlu, buat window lebih besar.

Klik dan tarik


Pojok untuk
mengubah ukuran

Menambah Komponen
1 Tambah tiga tombol push ke GUI. Untuk setiap Tombol push, pilih tombol
push dari komponen palet pada kiri Layout Editor dan tarik ke area layout.
Posisikan seperti gambar berikut ini.

2-3
2 Creating a Simple GUI with GUIDE

2 Tambahkan komponen sisa ke GUI


• Statik teks
• Menu pop up
• Axes
Susun komponen seperti gambar di bawah ini. Atur komponen axes sekitar 2x2 inchi.

Menyusun Komponen
Dapat dilakukan dengan Alignment Tool untuk menyusun komponen sama seperti yang lainnya.
Untuk menyusun:

1 Pilih ketiga tombol dengan menekan Ctrl dan mengkliknya.


2 Pilih Align Objects dari menu Tools untuk memunculkan Alignment Tool.
3 Buat pengaturan ini pada Alignment Tool, seperti gambar berikut ini:
• Spasi 20 Pixels diantara tombol Push pada Arah Vertikal
• Perataan kiri pada arah Horizontal

2-4
BAB VI GRAPHICAL USER INTERFACE MATLAB

4 Klik OK. Tampilan GUI terlihat seperti Layout Editor berikut.

2-5
2 Creating a Simple GUI with GUIDE

Menambah Teks ke Komponen


Walaupun tombol push, menu pop-up, dan teks statik menunjukkan sejumlah teks
pada layout editor, teksnya sendiri tidak berguna untuk GUI yang dibuat. Topik ini
menunjukkan bagaimana merubah teks default
• “Memberi Label pada Tombol Push” pada halaman 2-13
• “Memasukkan Item Menu Pop-up” pada halaman 2-15
• “Merubah Statik Text” pada halaman 2-17

Setelah menambahkan teks yang diperlukan, GUI akan terlihat seperti pada
Layout Editor.

Memberi Label Tombol Push


Setiap tombol push membiarkan user memilih tipe ploting data: Surf,
mesh, dan kontur. Topik ini menunjukkan bagaimana memberi label
ke tombol dengan pilihan tersebut.

2-6
BAB VI GRAPHICAL USER INTERFACE MATLAB

1. Pilih Property Inspector dari menu View.

2. Pada daerah layout, pilih tombol push teratas dengan mengkliknya.

3. Pada Property Inspector, pilih String Property dan kemudian pindahkan nilai yang ada
dengan kata Surf.

4. Klik diluar daerah String. Label tombol Push akan berubah menjadi Surf

5. Pilih setiap tombol Push bergantian dan ulangi tahap 3 dan 4 Beri label
tombol push tengah dengan Mesh, dan tombol push bawah dengan
Contour

Memasuki Menu Item Pop-Up


Menu Pop-up menyediakan pilihan dari tiga jenis data: peaks,
membrane, dan sinc. Ketiga data ini berasal dari fungsi di
MATLAB dengan nama sama. Topik ini menunjukkan
bagaimana mendaftarkan data-data tersebut pada pop up menu.

2-7
2 Creating a Simple GUI with GUIDE

1. Pada daerah layout, pilih menu pop-up dengan mengkliknya.


2. Pada Property Inspector, klik tombol selanjutnya ke String,
maka akan muncul kotak dialog.

3. Ganti teks yang ada dengan nama dari tiga data set: Peaks, Membrane, dan
Sinc. Tekan Enter pindahkan ke baris berikutnya.

4. Ketika sudah selesai, klik OK. Item pertama di daftar yaitu


Peaks, muncul pada menu pop-up di area layout.

Memodifikasi Teks Statik


Pada GUI, teks statik berguna sebagai label untuk menu pop-up. User
tidak bisa merubah teks ini. Topik ini menunjukkan bagaimana
merubah teks statik untuk pemilihan data.

1 Pada area layout, pilih teks statik dengan meng-


kliknya.
2 Pada Property Inspector, klik tombol disebelah String. Pada
kotak String yang muncul, ganti teks yang ada dengan
tulisan Select Data.

2-8
BAB VI GRAPHICAL USER INTERFACE MATLAB

3 Klik OK. Tulisan Select Data akan tampil di komponen statik teks diatas
menu pop-up

Menyelesaikan Layout
Pada Layout Editor, GUI saat ini akan terlihat seperti ini dan pada tahap selanjutnya
menyimpan layout. Topik selanjutnya, “menyimpan Layout GUI” pada halaman 2-19,
disebutkan bagaimana melakukan ini.

2-9
2 Creating a Simple GUI with GUIDE

Menyimpan Layout GUI


Ketika menyimpan GUI, GUIDE membuat dua file, FIG-file dan M-
file. FIG-file, dengan ekstensi .fig, merupakan file biner
mengandung deskripsi dari layout. M-file, berekstensi .m,
mengandung kode mengontrol GUI.

1 Simpan dan aktifkan GUI dengan memilih Run dari menu


Tools.

2 GUIDE menunjukkan dialog box berikut. Klik Yes


untuk melanjutkan.

3 GUIDE membuka dialog Save As pada folder penyimpanan saat


ini dan mengarahkan ke nama FIG-file.

4 Cari lokasi penyimpanan yang diinginkan, kemudian isikan nama file


simple_gui untuk FIG-file. GUIDE menyimpan keduanya
menggunakan nama tersebut.
5 Jika lokasi penyimpanan tempat menyimpan GUI bukan di folder MATLAB,
GUIDE akan membuka dialog box, memberikan pilihan untuk mengubah
lokasi penyimpanan.

2-10
BAB VI GRAPHICAL USER INTERFACE MATLAB

direktori file yang terdapat file GUI, atau menambah direktori ke atas atau
bawah dari lokasi MATLAB

6 GUIDE menyimpan file simple_gui.fig dan simple_gui.m dan mengaktifkan


GUI. Ia juga membuka file GUI.M pada editor default.

GUI telah aktif dapat memilih kumpulan data pada menu pop-up dan mengklik
tombol push, tapi tidak akan ada yang terjadi. Ini dikarenakan belum ada kode
pada M-file yang mengatur menu pop-up dan tombol-tombol tersebut. Tahapan
selanjutnya adalah memprogram GUI. Topik selanjutnya, “memprogram GUI
sederhana” pada halaman 2-21, menunjukkan bagaimana melakukan ini.

2-11
2 Creating a Simple GUI with GUIDE

Memprogram GUI Sederhana


In this section...
“Menambah kode ke M-file” pada halaman 2-12 “Membuat data untuk di Plot”
pada halaman 2-12
“Memprogram menu Pop-Up” pada halaman 2-14 “Memprogram tombol
Push” pada halaman 2-15

Menambah Kode ke M-file


ketika menyimpan GUI pada topik sebelumnya. “Menyimpan layout
GUI” pada halaman 2-19 GUIDE membuat dua file FIG-file
simple_gui.fig ysng mengandung layout GUI dan M-file simple_gui.m
mengandung kode pengontrol GUI, namun GUI tidak melakukan apa-
wpq karena tidak asa kode paea M-file yang bekerja. Topik ini
menunjukkan bagaimama menambah kodr ke M-file agar bekerja. Ada
tiga tahapan:

Membuat Data Untuk Diplot


Topik ini menunjukkan bagaimana membuat data untuk diplot saat user
meng-klik tombol. Data ini terbentuk pada fungsi pembuka. Fungsi
pembuka yang pertama kali dipanggil disetiap GUIDE yang dibuat GUI
M-File. Dapat digunakan untuk menampilkan tugas yang dapat dihasilkan
sebelum user mengakses GUI.

Pada contoh ini, menambah kode pyang membuat tiga data set untuk
membuka fungsi. Kode yang digunakan di Matlab menggunskan fungsi
Peaks, Membrane, dan Sinc.

1 Tampilkan pembuka fungsi pada M-file editor. Jika GUI M-file,


simple_gui.m belum terbuka, buka dengan memilih M-file Editor dari
View menu. Pada editor klik ikon fungsi fx pada toolbar, kemudian pilih
simple_gui_OpeningFcn pada menu pop-up yang ditampilkan.

2-12
BAB VI GRAPHICAL USER INTERFACE MATLAB

Kursor akan berpindah ke fungsi pembuka, yang mengandung kode ini:

% --- Executes just before simple_gui is made visible.


function simple_gui_OpeningFcn(hObject, eventdata, handles, varargin)
% This function has no output args, see OutputFcn.
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% varargin command line arguments to simple_gui (see VARARGIN)

% Choose default command line output for simple_gui


handles.output = hObject;

% Update handles structure


guidata(hObject, handles);

% UIWAIT makes simple_gui wait for user response (see UIRESUME)


% uiwait(handles.figure1);

2 Buat data untuk GUI untuk memplot dengan menambah kode berikut
ke fungsi pembuka langsung setelah komentar %varargin..

% Create the data to plot.


handles.peaks=peaks(35);
handles.membrane=membrane; [x,y] =
meshgrid(-8:.5:8); r = sqrt(x.^2+y.^2) +
eps; sinc = sin(r)./r; handles.sinc = sinc;
% Set the current data value. handles.current_data =
handles.peaks; surf(handles.current_data)

Keenam baris eksekusi awal membuat data menggunakan fungsi MATLAB peaks,
membrane, dan sinc. Mereka menyimpan data pada struktur handles, yang diteruskan
sebagai argumen untuk semua callbacks. Callback untuk tombol push bisa memperoleh
data dari struktur handles.
Dua baris terakhir membuat nilai data dan mengatur peaks, dan
kemudian menunjukkan plot surf untuk data peaks. Gambar berikut
menunjukkan bagaimana GUI terlihat ketika pertama kali ditampilkan.

2-13
2 Creating a Simple GUI with GUIDE

Memprogram Menu Pop-UP


Menu pop-up memperbolehkan pengguna untuk memilih data untuk diplot. Ketika
pengguna GUI memilih satu dari tiga jenis plot, Software MATLAB memilih menu pop-
up berdasar nilai pada property sesuai string yang dipilih. Memanggil kembali menu
pop-up membaca nilai property dari menu pop-up untuk menentukan item apa yang akan
ditampilkan dan mengatur handles.current_data sesuai.

1 Menunjukkan callback pada menu pop-up pada M-file editor. Klik


kanan komponen menu pop-up pada Layout Editor untuk
menampilkkan konteks menu dari menu, pilih View
Callbacks>Callback.

GUI M-file terbuka pada editor jika tidak ada yang lagi dibuka, dan pindahkan kursor
ke menu pop-up pilih callback, yang telah terdapat kode berikut ini:

% --- Executes on selection change in popupmenu1.


function popupmenu1_Callback(hObject, eventdata, handles)
% hObject handle to popupmenu1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)

2 Tambahkan kode berikut ke popupmenu1_Callback setelah komentar yang


bermula berikut % handles...

Kode pertama didapat dari properties dua menu pop-up:


• String — adalah barisan sel yang memiliki menu konten
• Value — index ke konten menu dari sekumpulan data terpilih.

Kemudian gunakan switch statement untuk membuat


pemilihan kumpulan data ke data saat ini. Statement terakhir
menyimpan perubahan untuk struktur handles.

2-14
BAB VI GRAPHICAL USER INTERFACE MATLAB

% Determine the selected data set. str =


get(hObject, 'String');
val = get(hObject,'Value');
% Set current data to the selected data set. switch
str{val};
case 'Peaks' % User selects peaks.
handles.current_data = handles.peaks;
case 'Membrane' % User selects membrane.
handles.current_data = handles.membrane;
case 'Sinc' % User selects sinc.
handles.current_data = handles.sinc;
end
% Save the handles structure.
guidata(hObject,handles)

Memprogram Tombol Push


Setiap tombol push membuat tipe plot berbeda menggunakan
data tertentu dengan pilihan saat ini pada menu pop-up. Tombol
push memanggil kembali data dari struktur handles dan
kemudian memplotnya.

1 Menampilkan Surf tombol push dengan callbak pada M-file editor.


Klik kanan Surf pada tombol push di Layout Editor untuk
menampilkan menu konteks dari menu, pilih View
Callbacks>Callback

M-file GUI terbuka pada editor jika belum dibuka, dan kursor
dipindahkan ke Surf tombol push kemudian callback, dan akan
muncul kode berikut ini:

% --- Executes on button press in pushbutton1.


function pushbutton1_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)

2-15
2 Creating a Simple GUI with GUIDE

2 Tambahkan kode berikut ini untuk langsung memanggil setelah komentar yang
bermulai % handles...
% Display surf plot of the currently selected data.
surf(handles.current_data);

3 Ulangi langkah 1 dan 2 untuk menambah kode yang sama pada Mesh
dan Contour pada tombol push callbacks.

• Add this code to the Mesh push button callback,


pushbutton2_Callback:
% Display mesh plot of the currently selected data.
mesh(handles.current_data);

• Tambahkan kode ini ke callback tombol push Contour,


pushbutton3_Callback:
% Display contour plot of the currently selected data.
contour(handles.current_data);

4 Simpan M-file dengan memilih Save dari menu File.

GUI siap digunakan. Topik selanjutnya adalah “Menjalankan GUI” pada halaman
2-28 akan dijelaskan cara kerjanya.

2-16
DAFTAR PUSTAKA

Palupi, Indriati Retno, S.Si., M.Si., Wiji Raharjo, S.Si., M.Sc. 2017. Modul
Praktikum Komputasi Geofisika. UPN “Veteran” Yogyakarta: Yogyakarta.
Munir, Rinaldi. Topik Khusus Informatika.
Karris, Steven T. 2007. Numerical Analysis Using MATLAB and Excel Thir Edition.
Orchard Publications.
Chapra, Steven C & Raymond P. Canale. 2010. Numerical Methods for Engineers
Sixth Edition. Mc Graw Hill: Boston.

1
LABORATORIUM KOMPUTASI GEOFISIKA
NO. DOK : 1
INSTRUKSI KERJA KOMPUTER NO. REV : -
(TIPE DELL, & LENOVO, USA) TGL TERBIT : 11-Jan-18
HALAMAN : 5
Tujuan Menjadi acuan penggunaan komputer yang baik dan benar
Kebijakan Pengawasan alat laboratorium oleh praktikan harus dalam pengawasan dosen
pembimbing praktikum, laboran atau asisten praktikum
Petugas 1. Laboran
2. Asisten Praktikum
Peralatan Ada
Fungsi Komputer dipergunakan untuk pengolahan, pemodelan, pemrograman, dan
pekerjaan-pekerjaan lainnya yang hanya bisa dilakukan dengan komputer.
Prosedur Prosedur kerja penggunaan Komputer sebagai berikut :

1. Isi log book penggunaan komputer di buku log book di meja dalam laboratorium
komputasi
2. Sambungkan kabel power pada stop kontak untuk UPS, CPU, dan monitor.
3. Tekan tombol power pada posisi “ON” hingga lampu menyala dan berbunyi
“KLIK” pada UPS dan monitor.
4. Tekan tombol power pada posisi “ON” hingga lampu menyala dan berbunyi
“KLIK” pada CPU.
5. Tunggu sampai masuk ke Windows
6. Tentukan software dan pekerjaan apa yang akan dilakukan
7. Buka software yang dibutuhkan dengan mengklik 2x pada shortcut atau
launchernya.
8. Setelah selesai menggunakan software apabila ingin menyimpan file, bisa
menghubungi asisten laboratorium atau laboran yang ada untuk membantu
dalam proses penyimpanan file bila peralatan penyimpanan terdapat virus
atau program yang mengganggu kinerja komputer, apabila tidak ada dapat
langsung disimpan ke peralatan penyimpanan pribadi.
9. Untuk mematikan komputer, pastikan semua program yang dibuka telah
ditutup.
10. Kemudian buka “START” pilih “SHUT DOWN”.
11. Matikan Monitor, dan UPS dengan menekan Tombol Power.
12. Copot semua kabel yang terhubung ke stop kontak.

Referensi Buku manual Penggunaan Alat


DIBUAT OLEH DIPERIKSA OLEH DISETUJUI OLEH