Modul Praktikum Komputasi Geofisika [PDF]

  • 0 0 0
  • Suka dengan makalah ini dan mengunduhnya? Anda bisa menerbitkan file PDF Anda sendiri secara online secara gratis dalam beberapa menit saja! Sign Up
File loading please wait...
Citation preview

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” YOGYAKARTA



Laboratorium Komputasi Geofisika 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 Folder Window



B.Workspace Window A.Command Window



D.Details Window



E.Command 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*fxb0, 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*fx00), 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 (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 dialam. Deret taylor ini memiliki persamaan sebagai berikut : ( ) = ( 0) + ∑



3.2.



(



!



)^



(



!



)^



( 0) +



(



!



)^



(



)



+. . . +



(



atau sederhananya



!



)^



( 0)



( 0)



(3.1)



(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 0,3x1 – 0,2x2 + 10x3 = 71,4



(3.8)



Penyelesaian :  Ubah bentuk persamaan linear di atas ke dalam bentuk persamaan matriks seperti berikut: - 0,1 - 0,2   x1  7,85  3   0,1 7 - 0,3    x2   - 19,3   0,3 - 0,2 10   x3  71,4 



A 



x



(3.9)



y



 Keluaran Program



listing program A=[3 -0.1 -0.2;0.1 7 -0.3;0.3 -0.2 10]; B=inv(A); y=[7.85;-9.3;71.4]; x=B*y; x=A\y disp('nilai x adalah : '),disp(x) c=A*x; disp('nilai Ax adalah : '),disp(c)



nilai x adalah : 3.0494 -1.0710 7.0271 nilai Ax adalah : 7.8500 -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*fcgalat 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 iterasi,xr,nilai);



%4.7f \n',



% 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) 10 15 20 25 30 35 40 45 50 55 60 65 70 75 80 85 90 95 100 105



(yi)Waktu tiba(ms) 26,9000000000000 29,4500000000000 32,9000000000000 35,2000000000000 39,4200000000000 46,7000000000000 52,4000000000000 54,8000000000000 59,2900000000000 68,2000000000000 69,3400000000000 72,6000000000000 78,5200000000000 80,5200000000000 83,6000000000000 86,1200000000000 89,6000000000000 93,1000000000000 94,6000000000000 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 : ( )=



+



( −



)+



Persamaan tersebut memenuhi:



( )=



( −



)( −



( )=



=



+



( )= =



( −



) + ⋯+ =



+



)+



( −



( −



( −



)



)…( −



)( −



)



) (5.1)



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 X=in(:,1); %Input data X pada Baris 1 di Y=in(:,2); %Input data Y pada Baris 2 di Z=in(:,3); %Input data Z pada Baris 3 di



Variabel Peta1 juga diganti data load data load 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 Y=in(:,2); %Input data Y pada Baris 2 Z=in(:,3); %Input data Z pada Baris 3 V=in(:,4); %Input data Parameter pada X1=[X Y Z];



di data di data di data Baris 4



load load load di data load



%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 Y=in(:,2); %Input Z=in(:,3); %Input V=in(:,4); %Input X1=[X Y Z]



data data data data



X pada Baris 1 Y pada Baris 2 Z pada Baris 3 Parameter pada



di data di data di data Baris 4



load load load di data load



%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('YI','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 & M0.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 % [email protected] % % 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 {'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 case



%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 Y=in(:,2); %Input Z=in(:,3); %Input V=in(:,4); %Input X1=[X Y Z];



data data data data



X pada Baris 1 Y pada Baris 2 Z pada Baris 3 Parameter pada



input nilai interval model voxel inc=500; % a=input('masukkan nilai gridx:'); nilainya sekitar 100 sampai 1000 agar % b=input('masukkan nilai gridy:'); nilainya sekitar 100 sampai 1000 agar % c=input('masukkan nilai gridz:'); nilainya sekitar 100 sampai 1000 agar



di data di data di data Baris 4



load load load di data load



%



%Range input data x harus besar tidak kehabisan memori %Range input data y harus besar tidak kehabisan memori %Range input data z harus besar 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 0 1 1 yy = [0 0 1 1 0 zz = [1 0 0 0 0



0 0 1 0 1 0



1 1 NaN 1 0 NaN 1 1 NaN



0 0 0 0 1 1



NaN 0 1 NaN NaN 1 0 NaN NaN 1 1 NaN



1 1 1 0 1 0



NaN 1 0;... 0]; NaN 1 1;... 0]; NaN 0 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)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



2-15



structure with handles and user data (see GUIDATA)



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



Tujuan Kebijakan Petugas Peralatan Fungsi



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



Prosedur



1.



2. 3. 4. 5. 6. 7. 8.



9. 10. 11. 12.



Isi log book penggunaan komputer di buku log book di meja dalam laboratorium komputasi Sambungkan kabel power pada stop kontak untuk UPS, CPU, dan monitor. Tekan tombol power pada posisi “ON” hingga lampu menyala dan berbunyi “KLIK” pada UPS dan monitor. Tekan tombol power pada posisi “ON” hingga lampu menyala dan berbunyi “KLIK” pada CPU. Tunggu sampai masuk ke Windows Tentukan software dan pekerjaan apa yang akan dilakukan Buka software yang dibutuhkan dengan mengklik 2x pada shortcut atau launchernya. 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. Untuk mematikan komputer, pastikan semua program yang dibuka telah ditutup. Kemudian buka “START” pilih “SHUT DOWN”. Matikan Monitor, dan UPS dengan menekan Tombol Power. Copot semua kabel yang terhubung ke stop kontak.



Referensi



Buku manual Penggunaan Alat DIBUAT OLEH DIPERIKSA OLEH



DISETUJUI OLEH