PENYELESAIAN NUMERIS MASALAH NILAI BATAS
Transcript of PENYELESAIAN NUMERIS MASALAH NILAI BATAS
PENYELESAIAN NUMERIS MASALAH NILAI BATAS PADA PERSAMAAN DIFERENSIAL BIASA ORDE DUA
BERBASIS KOMPUTASI (Studi Komparatif antara Metode Beda Hingga dan Metode Tembakan)
SKRIPSI
Diajukan Kepada Fakultas Sains dan Teknologi Universitas Islam Negeri Sunan Kalijaga Yogyakarta
untuk Memenuhi Sebagian Syarat Memperoleh Gelar Sarjana Strata Satu Pendidikan Sains
Oleh:
M. Kamari 03430368
PENDIDIKAN MATEMATIKA FAKULTAS SAINS DAN TEKNOLOGI
UNIVERSITAS ISLAM NEGERI SUNAN KALIJAGA YOGYAKARTA
2008
© 2008 Perpustakaan Digital UIN Sunan Kalijaga Yogyakarta
© 2008 Perpustakaan Digital UIN Sunan Kalijaga Yogyakarta
© 2008 Perpustakaan Digital UIN Sunan Kalijaga Yogyakarta
© 2008 Perpustakaan Digital UIN Sunan Kalijaga Yogyakarta
© 2008 Perpustakaan Digital UIN Sunan Kalijaga Yogyakarta
MOTTO
“ Hariku adalah hari ini, bukan lusa atau esok
yang belum tentu matahari bersinar di dalamnya. ”
Laa Tahzan ‘Aidh al-Qorn
vi© 2008 Perpustakaan Digital UIN Sunan Kalijaga Yogyakarta
PERSEMBAHAN
Karya ini kupersembahkan kepada
Kampus Tercinta Universitas Islam Negeri Sunan Kalijaga Yogyakarta
vii© 2008 Perpustakaan Digital UIN Sunan Kalijaga Yogyakarta
KATA PENGANTAR
Puji syukur kehadirat Allah SWT atas segala nikmat dan karunia-Nya sehingga
penulis dapat menyelesaikan skripsi dengan judul “Penyelesaian Numeris Masalah Nilai
Batas pada Persamaan Diferensial Orde Dua Berbasis Komputasi (Studi Komparatif
antara Metode Beda Hingga dan Metode Temabakan).” Shalawat serta salam semoga
senantiasa tercurahkan kepada Rasulullah SAW sebagai revolusioner Islam dan uswatun
khasanah bagi seluruh umat dan rahmat bagi seluruh alam.
Penulis menyadari bahwa terselesaikannya skripsi ini tidak terlepas dari peran serta
dari berbagai pihak yang telah memberikan dukungan baik yang bersifat materiil maupun
moril. Oleh karena itu, penulis mengucapkan terima kasih kepada:
1. Ibu Dra. Hj. Maizer Said Nahdi, M.Si., selaku Dekan Fakultas Sains dan Teknologi
UIN Sunan Kalijaga Yogyakarta.
2. Ibu Dra. Khurul Wardati, M.Si. selaku Ketua Program Studi Pendidikan
Matematika Fakultas Sains dan Teknologi UIN Sunan Kalijaga Yogyakarta.
3. Bapak Muchammad Abrori, S.Si., M.Kom. selaku dosen pembimbing akademik
sekaligus dosen pembimbing I yang senantiasa dengan penuh kesungguhan dan
keikhlasan memberikan bimbingan dan pengarahan dalam penyusunan skripsi ini.
4. Bapak Sugiyanto, M.Si. selaku dosen pembimbing II yang dengan penuh
keikhlasan memberikan bimbingan dan pengarahan dalam penyusunan skripsi ini.
viii© 2008 Perpustakaan Digital UIN Sunan Kalijaga Yogyakarta
5. Bunda dan Kakak sekeluarga tercinta,”Jazakumullah bi ahsanil jaza atas segala
usaha dan peluh keringatnya selama ini, dan semoga dengan izin Allah, saya bisa
memberikan yang terbaik untuk keluarga dan Islam.”
6. Keluarga Pak Sri, keluarga Bu Wid, keluarga Ust. Zein (alm) atas dukungan dan
bantuannya selama ini. Jazakumullah khairan katsiran.
7. Sahabat kecilku, Evi, Nabila, Iqoh, Iil, yang telah menemani penulis dengan riang
dan canda tawa.
8. Asatidz dan Ikhwah di PP. Fauzul Muslimin Kotagede dan TPM’03 yang telah
berbagi ilmunya dan menemani perjalanan serta memberi warna kehidupan penulis
selama di Jogja.
9. Serta berbagai pihak yang tidak bisa penulis sebutkan satu persatu.
Atas semua kebaikan ini, semoga Allah SWT menerimanya sebagai amal kebaikan
dan mendapatkan balasan yang lebih baik di sisi-Nya.
Harapan penulis mudah-mudahan skripsi ini bermanfaat bagi penulis pada
khususnya dan pembaca pada umumnya.
Yogyakarta, 3 Desember 2007
Penulis
ix© 2008 Perpustakaan Digital UIN Sunan Kalijaga Yogyakarta
DAFTAR ISI
HALAMAN JUDUL ………………………………………………………………….
SURAT PERNYATAAN KEASLIAN ……………………………………………….
HALAMAN NOTA DINAS PEMBIMBING I ………………………………………
HALAMAN NOTA DINAS PEMBIMBING II ………………………………………
HALAMAN PENGESAHAN ………………………………………………………...
HALAMAN MOTTO ………………………………………………………………...
HALAMAN PERSEMBAHAN ………………………………………………………
KATA PENGANTAR ………………………………………………………………..
DAFTAR ISI ………………………………………………………………………….
DAFTAR TABEL …………………………………………………………………….
DAFTAR GAMBAR …………………………………………………………………
DAFTAR LAMPIRAN ……………………………………………………………….
ABSTRAK ……………………………………………………………………………
BAB I PENDAHULUAN ……………………………………………………………..
A. Latar Belakang Masalah …………………………………………...................
B. Identifikasi Masalah ………………………………………………………….
C. Batasan Masalah ………………………………………………………………
D. Rumusan Masalah …………………………………………………………….
E. Tujuan dan Kegunaan Penelitian ……………………………………………...
F. Sistematika Pembahasan ………………………………………………………
i ii iii iv v vi vii viii x xv xvi xviii xix 1 1 7 8 8 9 10
x© 2008 Perpustakaan Digital UIN Sunan Kalijaga Yogyakarta
BAB II TINJAUAN PUSTAKA DAN LANDASAN TEORI ………………..………
A. Tinjauan Pustaka ……………………………………………………….……..
B. Landasan Teori …………………………………………………………..…….
1. Persamaan diferensial ……………………………………………….…….
2. Persamaan diferensial biasa ……………………………………………….
3. Penyelesaian persamaan diferensial biasa ……………………………..….
4. Diferensiasi numerik (Numerical Differentiation) ………………….…….
5. Metode dekomposisi LU ……………………………………………..……
6. Masalah nilai awal pada persamaan diferensial biasa ……………..………
7. Metode Euler ………………………………………………………..…….
8. Metode Runge Kutta ………………………………………………..……..
9. Metode Runge Kutta orde empat …………………………………….……
10. Masalah nilai batas pada persamaan diferensial biasa …………………....
11. Metode beda hingga (finite difference method) ………………………..….
12. Metode tembakan (shooting method) ……………………………….….....
13. Pengantar perangkat lunak MATLAB ……………………………….…....
BAB III METODE PENELITIAN ……………………………………….…..............
A. Jenis Penelitian ………………………………………………………….….…
B. Sumber Data …………………………………………………………….…….
C. Metode Pengumpulan Data dan Analisis Data ……………………….…….…
D. Perangkat Pendukung …………………………………………………………
12 12 13 13 16 21 22 23 25 27 28 30 33 34 39 41 42 42 42 43 44
xi© 2008 Perpustakaan Digital UIN Sunan Kalijaga Yogyakarta
E. Algoritma dan Flowchart Metode Beda Hingga …………………..…………. 4
1. Algoritma metode beda hingga …………………………………..………. 4
2. Flowchart metode beda hingga …………………………………..……….. 4
F. Algoritma dan Flowchart Metode Tembakan …………………………..…….. 4
1. Algoritma metode tembakan ……………………………………..………. 4
2. Flowchart metode tembakan ……………………………………..……….. 5
G. Contoh Soal dan Penyelesaian Masalah Nilai Batas (MNB) ………….……… 5
Soal 3.1 ………………………………………………………………….……. 5
a. Metode analitis …………………………………………………….……… 5
b. Metode beda hingga ……………………………………………….……… 5
c. Metode tembakan ………………………………………………………… 6
d. Perbandingan hasil perhitungan MNB ………………………………...….. 1
Soal 3.2 …………………………………………………………………..……. 10
a. Metode analitis ……………………………………………………..…….. 1
b. Metode beda hingga ………………………………………………….…… 1
c. Metode tembakan …………………………………………………….…… 1
d. Perbandingan hasil perhitungan MNB …………………………….……… 1
Soal 3.3 ………………………………………………………………….……. 1
a. Metode analitis ……………………………………………………….…… 1
b. Metode beda hingga ………………………………………………..…….. 1
c. Metode tembakan …………………………………………………………. 1
d. Perbandingan hasil perhitungan MNB ………………………………….…. 13
4
4
6
9
9
2
4
4
4
7
7
04
5
05
06
10
21
22
22
24
27
9
xii© 2008 Perpustakaan Digital UIN Sunan Kalijaga Yogyakarta
BAB IV PENERAPAN DAN PEMBAHASAN ……………………………………...
A. Penerapan ……………………………………………………………………..
1. Menu utama 1(PROGRAM_APLIKASI) …………………………………
2. Menu utama 2 (METODE_BTM) ………………………………………...
a. Kotak input ……………………………………………………………
b. Kotak output …………………………………………………………..
c. Menu input …………………………………………………………….
d. Menu help ……………………………………………………………..
e. Menu output ……………………………………………………...........
f. Simpan nilai …………………………………………………………...
g. Cetak nilai …………………………………………………………….
h. Menu keluar …………………………………………………………...
B. Pembahasan …………………………………………………………………....
1. Cara menjalankan proses penyelesaian numeris MNB dengan metode beda hingga dan metode tembakan menggunakan program MATLAB ……………………………………………………………………………..
Soal 4.1 ……………………………………………………………………
Soal 4.2 …………………………………………………………………....
Soal 4.3 ……………………………………………………………………
140 140 141 144 145 146 147 149 151 152 153 153 154
154 154 159 164 170
2. Keluaran (output) Program ………………………………………………..
xiii© 2008 Perpustakaan Digital UIN Sunan Kalijaga Yogyakarta
BAB V PENUTUP ……………………………………………………………………
A. Kesimpulan …………………………………………………………………..
B. Saran-Saran …………………………………………………………………..
DAFTAR PUSTAKA …………………………………………………………………
171 172 173 174 176
LAMPIRAN-LAMPIRAN ……………………………………………………………
xiv© 2008 Perpustakaan Digital UIN Sunan Kalijaga Yogyakarta
DAFTAR TABEL
Tabel 3.1 Hasil perhitungan MNB soal 3.1 secara analitis ……………………........ Tabel 3.2. Hasil perhitungan MNB soal 3.1 dengan metode Beda Hingga ………….. Tabel 3.3. Nilai-nilai u dan v metode tembakan pada soal 3.1 …………………….. Tabel 3.4. Nilai-nilai metode Tembakan pada soal 3.1 …………………………. nw Tabel 3.5. Hasil perhitungan MNB soal 3.1 dengan metode Tembakan …………….. Tabel 3.6. Kesalahan mutlak dan kesalahan relatif MNB metode Beda Hingga dan
metode Tembakan terhadap nilai eksak pada soal 3.1 …………………… Tabel 3.7. Hasil perhitungan MNB soal 3.2 dengan metode Beda Hingga …………. Tabel 3.8. Nilai-nilai u dan v metode tembakan pada soal 2.3 ……………………… Tabel 3.9. Nilai-nilai metode tembakan pada soal 2.3 ……………………….. nw Tabel 3.10. Hasil perhitungan MNB soal 2.3 dengan metode Tembakan ………........ Tabel 3.11. Perbandingan Hasil Perhitungan MNB metode Beda Hingga dan
metode Tembakan soal 2.3 ……………………………………………… Tabel 3.12. Hasil perhitungan MNB soal 3.3 secara analitis ………………………. Tabel 3.13. Hasil perhitungan MNB soal 3.3 dengan metode Beda Hingga ……........ Tabel.3.14. Nilai-nilai u dan v metode tembakan pada soal 3.3 ……………………. Tabel 3.15. Nilai-nilai metode tembakan pada soal 3.3 ………………………. nw Tabel 3.16. Hasil perhitungan MNB soal 3.3dengan metode Tembakan ………........ Tabel 3.17. Perbandingan Hasil Perhitungan MNB metode Beda Hingga dan metode Tembakan soal 3.3 ……………………………………………….
57 67 101 102 103 104 109 120 120 121 121 123 127 138 138 138 139 139
Tabel 3.18. Kesalahan mutlak dan kesalahan relatif MNB metode Beda Hingga dan metode Tembakan terhadap nilai eksak pada soal 3.3 ………………….
xv© 2008 Perpustakaan Digital UIN Sunan Kalijaga Yogyakarta
DAFTAR GAMBAR
Gambar 4.1. Tampilan Menu Utama MATLAB Common Window …………………
Gambar 4.2. MATLAB Common Window dengan File Program_Aplikasi …………
Gambar 4.3. Menu Utama Program Aplikasi ………………………………………
Gambar 4.4. Jendela Profil ………………………………………………………….
Gambar 4.5. Jendela Petunjuk ……………………………………………………..
Gambar 4.6. Jendela Keluar ……………………………………………………......
Gambar 4.7. Program Beda Hingga dan Tembakan Berbasis MATLAB ………......
Gambar 4.8. Jendela Hasil Penyelesaian …………………………………...………
Gambar 4.9. Jendela Simpan Input …………………………………………………
Gambar 4.10. Jendela Buka Input ………………………………………………….
Gambar 4.11. Jendela figure METODE BTM setelah direset ……………………….
Gambar 4.12. Jendela Help …………………………………………………………...
Gambar 4.13. Jendela Ketentuan Input Koefisien ……………………………………
Gambar 4.14. Jendela tentang Output ……………………………………………….
Gambar 4.15. Proses Penyelesaian MNB ……………………………………………
Gambar 4.16. Jendela Simpan Nilai ………………………………………………..
Gambar 4.17. Jendela Cetak Nilai …………………………………………………….
Gambar 4.18. Jendela Keluar ....................................................................................
Gambar 4.19. Figur Soal 4.1 ………………………………………………………..
Gambar 4.20. Grafik Soal 4.1 …………………………………………………….....
Gambar 4.21. Hasil Penyelesaian Soal 4.1 berbasis MATLAB (Modifikasi) ……….
140 141 142 142 143 143 144 146 147 147 148 149 150 151 151 152 153 153 156 156 157
xvi© 2008 Perpustakaan Digital UIN Sunan Kalijaga Yogyakarta
160 161 162 165 166 167
Gambar 4.22. Figur Soal 4.2 ……………………………………………………..
Gambar 4.23. Grafik Soal 4.2 …………………………………………………….
Gambar 4.24. Hasil Penyelesaian Soal 4.2 berbasis MATLAB ………………… Gambar 4.25. Figur Soal 4.3 ……………………………………………………..
Gambar 4.26. Grafik Soal 4.3 …………………………………………………….
Gambar 4.27. Hasil Penyelesaian Soal 4.3 berbasis MATLAB ………………….
xvii© 2008 Perpustakaan Digital UIN Sunan Kalijaga Yogyakarta
DAFTAR LAMPIRAN
1. Listing Program Aplikasi ………………………………………………………… 176 178 2. Listing Metode BTM ……………………………………………………………..
xviii© 2008 Perpustakaan Digital UIN Sunan Kalijaga Yogyakarta
PENYELESAIAN NUMERIS MASALAH NILAI BATAS PADA PERSAMAAN DIFERENSIAL BIASA ORDE DUA
BERBASIS KOMPUTASI (Studi Komparatif antara Metode Beda Hingga dan Metode Tembakan)
Oleh: M. Kamari
ABSTRAK
Dalam perkembangannya, persamaan diferensial mempunyai peranan yang sangat penting dalam kehidupan (alam). Banyak permasalahan dalam bidang ilmu pengetahuan dan teknik yang dapat diformulasikan ke dalam bentuk persamaan diferensial dalam mencari pemecahannya. Tetapi untuk menyelesaikan persamaan diferensial yang rumit dan besar terkadang sulit diselesaikan secara analitis. Oleh karena itu penggunaan metode numeris dalam hal ini sangat tepat.
Penelitian ini bermaksud memberikan penyelesaian masalah nilai batas (MNB) pada persamaan diferensial orde dua secara numeris dengan menggunakan metode Beda Hingga (Finite Difference Method) dan metode Tembakan (Shooting Method). Dalam menyelesaikan MNB dengan kedua metode tersebut dilengkapi dengan program aplikasi menggunakan MATLAB R2006a sehingga mempercepat dalam penyelesaiannya.
Hasil penelitian ini menunjukkan bahwa nilai keakuratan metode tembakan dalam penyelesaian numeris MNB lebih baik daripada metode beda hingga karena mempunyai nilai error lebih kecil terhadap nilai sebenarnya (eksak). Ditinjau dari efisiensi waktu, metode beda hingga lebih efisien daripada metode tembakan karena waktu yang diperlukan untuk menyelesaikan MNB secara numeris lebih sedikit daripada metode tembakan. Demikian juga penyelesaian berbasis komputasi MATLAB lebih efisien daripada penyelesaian secara manual. Ditinjau dari jumlah iterasi, semakin banyak iterasi yang digunakan maka nilai penyelesaian dengan metode beda hingga dan metode tembakan akan semakin mendekati nilai sebenarnya (eksak) atau dengan kata lain nilai error akan semakin kecil.
Kata kunci:MNB, metode beda hingga, metode tembakan, metode analitis.
xix© 2008 Perpustakaan Digital UIN Sunan Kalijaga Yogyakarta
1
BAB I
PENDAHULUAN
A. Latar Belakang Masalah
Persamaan diferensial adalah suatu persamaan yang memuat derivatif
dengan sekurang-kurangnya satu derivatif dari fungsi yang tidak diketahui
(Wardiman, 1981).1 Secara umum, persamaan diferensial dibagi menjadi dua,
yaitu persamaan diferensial biasa dan persamaan diferensial parsial.2 Untuk
selanjutnya, persamaan diferensial disingkat dengan PD. PD biasa adalah PD
yang hanya mengandung satu variabel bebas. Sedangkan PD parsial adalah PD
yang mengandung lebih dari satu variabel bebas. Dalam perkembangannya,
persamaan diferensial mempunyai peranan yang sangat penting dalam
kehidupan (alam). Banyak permasalahan dalam bidang ilmu pengetahuan dan
teknik yang dapat diformulasikan ke dalam bentuk persamaan diferensial
dalam mencari pemecahannya.3 Selain itu, persamaan diferensial juga sering
digunakan sebagai model matematika dalam berbagai bidang, antara lain:
bidang Ekonomi, Fisika, Biologi, Teknik, dan sebagainya.4
Sehingga dalam hal ini, persamaan diferensial memegang peranan
penting dalam kehidupan terutama bagi pengembangan ilmu pengetahuan dan
teknologi (IPTEK).
1 Wardiman, Diktat Kuliah Persamaan Diferensial Elementer, (Yogyakarta: JurusanFMIPA UGM, 1981).
2 Bambang Triatmojo, Metode Numerik, (Yogyakarta: Beta Offset, 2002), hal. 165.3 Ibid., hal. 165.4 Bambang Soedijono dan B. Susana, Model Matematik (Alat Penyusun Model), (Jakarta:
Karunia, 1993), hal. 2.
© 2008 Perpustakaan Digital UIN Sunan Kalijaga Yogyakarta
2
Terdapat dua macam cara dalam menyelesaikan persamaan
diferensial5. Pertama, secara analitis. Cara ini biasanya digunakan untuk
menyelesaikan persamaan diferensial yang mempunyai bentuk sederhana.
Kedua, secara numerik. Cara ini biasanya digunakan dalam menyelesaikan
persamaan diferensial yang sulit dikerjakan secara analitis.
Sejak akhir tahun 1940-an, ketersediaan yang meluas dari komputer
digital telah menuju kepada suatu ledakan dalam penggunaan dan
pengembangan metode numerik.6 Metode numerik merupakan alat pemecahan
masalah yang sangat ampuh yang dapat digunakan untuk menyelesaikan suatu
persamaan (diferensial) yang besar dan rumit, masalah ketidaklinieran, dan
geometri yang tidak dapat diselesaikan secara analitis.7
Solusi-solusi yang diberikan dalam metode numerik merupakan nilai
yang mendekati nilai eksak sehingga nilai-nilai tersebut disebut sebagai nilai
hampiran/pendekatan.8 Dalam penyelesaiannya, nilai kesalahan numerik harus
cukup kecil terhadap tingkat kesalahan yang ditetapkan.9
Penyelesaian persamaan diferensial dengan metode numerik ini
dibedakan menjadi dua, yaitu: metode numerik untuk penyelesaian masalah
nilai awal dan metode numerik untuk penyelesaian masalah nilai batas.
5 Bambang Triatmodjo, hal. 1.6 Steven C. Chapra dan Raymond P. Canale, Metode Numerik (terjemahan), ( Jakarta:
Penerbit Erlangga, 1996), hal. 3.7 Ibid., hal. 3.8 Bambang Triatmodjo, Metode Numerik (Yogyakarta: Beta Offset, 2002), hal. 1.9 Ibid., hal. 1.
© 2008 Perpustakaan Digital UIN Sunan Kalijaga Yogyakarta
3
a. Metode Numerik untuk Penyelesaian Masalah Nilai Awal
Penyelesaian masalah nilai awal merupakan penyelesaian
persamaan diferensial yang ditinjau dari keadaan awal yang diberikan
pada titik tunggal tertentu.10 Metode-metode yang sering digunakan
untuk menyelesaikan masalah nilai awal pada persamaan diferensial
biasa yaitu: Metode Euler, Metode Heun, Metode Deret Taylor, dan
Metode Runge Kutta.
Pertama, Metode Euler, adalah salah satu dari metode satu
langkah yang paling sederhana. Jika dibandingkan dengan metode lain,
metode ini mempunyai banyak kekurangan dalam penyelesaian
persamaan diferensial biasa, antara lain; kesalahan pemotongan dan
kesalahan pembulatan.11 Kedua, Metode Heun, merupakan modifikasi
dari Metode Euler. Modifikasi ini digunakan untuk memperkirakan
kemiringan dan dua turunan pada interval, yaitu pada ujung awal
dan akhir.12 Ketiga, Metode Deret Taylor, merupakan metode yang
dapat digunakan untuk memperbaiki Metode Euler dengan
memperhitungkan lebih banyak suku dari deret Taylor sendiri.
Kelemahan dari metode ini adalah dalam mencari penyelesaian akan
menjadi lebih sulit apabila fungsi sulit diturunkan. Keempat, Metode
Runge Kutta, merupakan metode yang memberikan ketelitian hasil
yang lebih baik dan tidak memerlukan turunan fungsi sebagaimana
10 Samuel D. Conte dan Carl De Boor,.Dasar-Dasar Analisis Numerik dengan SuatuPendekatan Algoritma, (Jakarta: Erlangga, 1993), hal. 366.
11 Bambang Triatmodjo, Metode Numerik, (Yogyakarta: Beta Offset, 2002), hal. 173.12 Ibid., hal. 176.
© 2008 Perpustakaan Digital UIN Sunan Kalijaga Yogyakarta
4
pada Deret Taylor. Metode ini dapat digunakan pada persamaan
diferensial orde dua, tiga dan empat.13 Selain itu juga ada metode lain
yang dapat digunakan dalam mencari penyelesaian masalah nilai awal
yaitu Metode Adams – Bashforth – Moulton.
b. Metode Numerik untuk Penyelesaian Masalah Nilai Batas
Penyelesaian masalah nilai batas merupakan penyelesaian
persamaan diferensial yang ditinjau dari keadaan awal yang diberikan
pada lebih dari satu titik.14 Metode-metode yang sering digunakan
untuk menyelesaikan masalah nilai batas pada persamaan diferensial
biasa adalah:
1) Metode Beda Hingga
Untuk menyelesaikan masalah nilai batas dengan metode
beda hingga, setiap turunan yang muncul dalam persamaannya
maupun dalam persyaratan batasnya diganti dengan suatu
aproksimasi diferensiasi yang tepat.15 Diferensiasi yang sering
digunakan adalah diferensi pusat (central differensi).
2) Metode Tembakan
Metode tembakan merupakan metode yang digunakan
untuk menyelesaikan masalah nilai batas dengan menggunakan
13 Ibid., hal. 182.14 Samuel D. Conte dan Carl De Boor,.Dasar-Dasar Analisis Numerik dengan Suatu
Pendekatan Algoritma, (Jakarta: Erlangga, 1993), hal. 366.15 Ibid., hal. 367.
© 2008 Perpustakaan Digital UIN Sunan Kalijaga Yogyakarta
5
metode iterasi numerik untuk mencapai kemiringan yang
sebenarnya.16
3) Metode Kolokasi
Metode kolokasi merupakan metode penyelesaian masalah
nilai batas dengan menggunakan fungsi polinomial sebagai dasar
penyelesaiannya.17
Masalah nilai batas pada persamaan diferensial biasa, pada umumnya
dapat diselesaikan secara analitik bukan secara numerik yang langkah akhir
penyelesaiannya menggunakan teknik integrasi. Namun demikian, tidak
semua nilai batas dapat diselesaikan secara analitik. Dalam hal ini
penyelesaian dapat diselesaikan dengan metode numerik.
Pada umumnya, metode numeris tidak mengutamakan diperolehnya
jawaban yang tepat (eksak) tetapi lebih pada mengusahakan perumusan
metode yang menghasilkan jawaban pendekatan yang berbeda (hampir sama)
dengan jawaban eksak sebesar suatu nilai yang dapat diterima berdasarkan
pertimbangan yang cukup dapat memberikan penyelesaian pada permasalahan
yang dihadapi.18
Dari uraian di atas, peneliti tertarik untuk meneliti penggunaan Metode
Beda Hingga (Finite Difference Method) dan Metode Tembakan (Shooting
Method) dalam pemecahan masalah nilai batas pada persamaan diferensial
biasa orde dua yang linier. Dari uraian tentang metode yang digunakan dalam
mencari penyelesaian masalah nilai awal, terdapat metode yang mempunyai
16 Ibid., hal. 371.17 Ibid., hal. 375.18 Harijono Djojodihardjo, Metode Numerik, (Jakarat: Erlangga, 1983), hal. 5.
© 2008 Perpustakaan Digital UIN Sunan Kalijaga Yogyakarta
6
tingkat ketelitian lebih dibandingkan metode lain. Oleh karena itu, peneliti
tertarik untuk mengetahui lebih dalam mengenai efisiensi, kelemahan dan
kelebihan metode beda hingga dan metode tembakan kemudian
membandingkannya.
Seiring perkembangan teknologi yang semakin pesat, keberadaan
komputer dengan berbagai macam bahasa pemrograman yang ditawarkan
semakin mempermudah seseorang memecahkan masalah dalam berbagai
bidang kehidupan, terutama bidang komputasi. Terdapat beberapa macam
bahasa pemrograman yang dapat digunakan dalam menyelesaikan persamaan
diferensial, antara lain: BASIC, PASCAL, MATLAB, FORTRAN, MAPLE,
C dan sebagainya.
Pada penyelesaian persamaan diferensial secara manual
memungkinkan sekali terjadi kesalahan yang lebih sering dilakukan oleh
pelaku sehingga dalam penyelesaian persamaan diferensial diperlukan sarana
pendukung yang berfungsi sebagai alat penguji kebenaran sehingga dengan ini
diharapkan akan memperkecil terjadinya kesalahan. Selain itu juga dengan
adanya suatu program akan lebih menghemat waktu.
Sebagai sarana pendukung, peneliti memilih MATLAB sebagai bahasa
pemrograman (komputasi) dalam membantu penyelesaian masalah nilai batas
dengan kedua metode di atas. Alasan pemilihannya dikarenakan MATLAB
merupakan bahasa pemrograman (komputasi) yang dapat digunakan untuk
mengerjakan operasi matematika yang memberi kemudahan dalam
© 2008 Perpustakaan Digital UIN Sunan Kalijaga Yogyakarta
7
mengimplementasikan penggunaan metode numeris.19 Selain itu, MATLAB
juga dilengkapi dengan berbagai fasilitas interaktif, visualisasi, pemodelan,
program aplikasi, pembuatan grafis, mendesain algoritma, analisis data,
simulasi dan pembuatan prototype.20
B. Identifikasi Masalah
Secara umum, persamaan differensial dibagi menjadi dua, yaitu
persamaan diferensial biasa dan persamaan diferensial parsial. 21
Persamaan diferensial biasa adalah persamaan diferensial yang hanya
mempunyai satu variabel bebas dan derivatif-derivatifnya adalah derivatif
biasa. Persamaan diferensial parsial adalah persamaan diferensial yang
mempunyai lebih dari satu variabel bebas dan derivatif-derivatifnya adalah
derivatif parsial.
Berdasarkan uraian latar belakang di atas, dalam menyelesaikan
persamaan diferensial biasa pada masalah nilai batas terdapat beberapa metode
yang dapat digunakan, yaitu; metode beda hingga, metode tembakan, dan
metode kolokasi.
Selain itu, dalam menyelesaikan kedua PD di atas biasanya digunakan
cara biasa secara manual dan analitis (tidak secara numeris). Penyelesaian
persamaan diferensial dengan cara manual akan membutuhkan banyak waktu
dalam menyelesaikannya. Selain itu juga diperlukan ketekunan dan ketelitian
19 Talib Hashim Hasan, Belajar Sendiri Dasar-Dasar Pemrograman MATLAB(Yogyakarta: Gava Media, 2005), hal. 1.
20 Ibid., hal. 2.21 Bambang Triatmojo, Metode Numerik (Yogyakarta: Beta Offset, 2002), hal. 165.
© 2008 Perpustakaan Digital UIN Sunan Kalijaga Yogyakarta
8
dalam penyelesaiannya. Berdasarkan latar belakang masalah tersebut di atas,
metode numerik (seiring perkembangan teknologi) memainkan peranan yang
sangat penting dalam penyelesaian persamaan diferensial dengan bantuan
komputer (MATLAB).
C. Batasan Masalah
Penelitian dan pengembangan sistem komputasi numerik ini
ditekankan pada:
1. Masalah nilai batas pada PD biasa orde dua yang linier dengan koefisien
konstan/variabel.
2. Perbandingan nilai error penyelesaian masalah nilai batas dengan
menggunakan metode beda hingga dan metode tembakan terhadap nilai
sebenarnya (eksak) dan efisiensi waktu yang diperlukan.
3. Penyelesaian masalah nilai batas yang dilengkapi dengan program berbasis
MATLAB.
D. Rumusan Masalah
Berdasarkan pemaparan latar belakang masalah, dapat dirumuskan
beberapa masalah antara lain:
1. Bagaimanakah perbandingan (kelebihan dan kekurangan) antara
metode analitik, metode beda hingga dan metode tembakan dalam
penyelesaian MNB?
© 2008 Perpustakaan Digital UIN Sunan Kalijaga Yogyakarta
9
2. Bagaimanakah nilai kesalahan mutlak dan relatif penyelesaian masalah
nilai batas persamaan diferensial orde dua dengan metode beda hingga
dan metode tembakan terhadap nilai sebenarnya?
3. Bagaimanakah program komputasi MATLAB dalam penyelesaian
masalah nilai batas persamaan diferensial biasa orde dua dengan
menggunakan metode analitis, metode beda hingga dan metode
tembakan?
E. Tujuan dan Kegunaan Penelitian
1. Tujuan penelitian
Tujuan dari penelitian ini antara lain:
a. Untuk mengetahui perbandingan (kelebihan dan kekurangan)
penggunaan antara metode analitik, metode beda hingga dan metode
tembakan dalam penyelesaian MNB baik secara manual maupun
berbasis MATLAB.
b. Untuk mengetahui nilai error dalam penggunaan metode beda hingga
dan metode tembakan dalam penyelesaian MNB persamaan diferensial
biasa orde dua dan efisiensi waktu yang diperlukan.
c. Menghasilkan program komputasi berbasis MATLAB dalam
penyelesaian Masalah Nilai Batas sehingga mempercepat dan
mempermudah proses penyelesaian.
© 2008 Perpustakaan Digital UIN Sunan Kalijaga Yogyakarta
10
2. Kegunaan penelitian
Kegunaan dari hasil penelitian ini antara lain:
a. Bagi peneliti
1) Mengetahui lebih mendalam tentang penggunaan Metode Beda
Hingga dan Metode Tembakan terutama dalam penyelesaian
Masalah Nilai Batas.
2) Menguasai bahasa pemrograman MATLAB dalam penggunaannya
terutama dalam membuat penyelesaian Masalah Nilai Batas
persamaan diferensial biasa orde dua.
b. Bagi perkembangan keilmuan
1) Memberikan sumbangan pemikiran khususnya dalam bidang
matematika dalam penyelesaian Masalah Nilai Batas persamaan
diferensial biasa orde dua.
2) Sebagai bahan referensi mahasiswa dalam bidang matematika pada
penyelesaian Masalah Nilai Batas.
3) Memperkaya khasanah keilmuan dalam bidang matematika.
F. Sistematika Pembahasan
Sistematika penulisan penelitian ini, terdiri dari:
Bab I Pendahuluan
Bab ini berisi tentang latar belakang masalah, identifikasi masalah,
batasan masalah, perumusahan masalah, tujuan dan kegunaan penelitian dan
sistematika pembahasan.
© 2008 Perpustakaan Digital UIN Sunan Kalijaga Yogyakarta
11
Bab II Tinjauan Pustaka dan Landasan Teori
Bab ini terdiri dari tinjauan pustaka dan landasan teori. Tinjauan
pustaka berisi hasil-hasil penelitian yang berhubungan dengan penelitian.
Sedangkan landasan teori berisi tentang tinjauan umum masalah persamaan
diferensial biasa, penyelesaian persamaan diferensial biasa, masalah nilai
awal, masalah nilai batas, metode beda hingga dan metode tembakan, serta
pengenalan perangkat lunak MATLAB.
Bab III Metode Penelitian
Meliputi jenis penelitian, sumber data, alat penelitian, teknik
pengumpulan dan analisis data serta algoritma metode beda hingga dan
metode tembakan.
Bab IV Hasil Penerapan dan Pembahasan
Pada bab ini berisi tentang penyelesaian numeris masalah nilai batas
pada persamaan diferensial biasa dengan metode beda hingga dan metode
tembakan, perbandingan metode beda hingga dan metode tembakan, serta
programnya berbasis MATLAB.
Bab V Penutup
Bab ini meliputi dua bagian, yaitu kesimpulan dan saran-saran peneliti
terhadap masalah yang berkaitan dengan penelitian yang telah dilakukan.
© 2008 Perpustakaan Digital UIN Sunan Kalijaga Yogyakarta
172
BAB V
PENUTUP
A. Kesimpulan
Berdasarkan contoh penyelesaian dan hasil pembahasan dapat ditarik
kesimpulan sebagai berikut:
1. Berdasarkan efisiensi waktu
a. Metode beda hingga lebih efisien daripada metode tembakan karena
algoritma yang digunakan lebih sedikit daripada metode tembakan,
sehingga secara tidak langsung waktu yang diperlukan untuk
penyelesaian MNB dengan metode beda hingga lebih sedikit daripada
metode tembakan.
b. Penyelesaian berbasis komputasi MATLAB lebih efisien daripada
penyelesaian secara manual.
2. Berdasarkan keakuratan hasil
Metode tembakan mempunyai hasil (nilai) penyelesaian lebih akurat
daripada metode beda hingga karena nilai error mutlak dan error relatifnya
lebih kecil daripada metode beda hingga.
3. Berdasarkan jumlah iterasi (N)
Semakin banyak jumlah iterasi yang digunakan maka nilai penyelesaian
beda hingga dan tembakan akan semakin mendekati nilai sebenarnya
(eksak) tetapi waktu yang diperlukan untuk menyelesaiakannya semakin
banyak.
© 2008 Perpustakaan Digital UIN Sunan Kalijaga Yogyakarta
173
4. Berdasarkan ada tidaknya penyelesaian
Penyelesaian numeris dapat digunakan untuk menyelesaikan MNB yang
tidak dapat diselesaikan secara analitis karena penyelesaian analitis
tergantung dari ketepatan dalam penggunaan syarat batas dan nilai batas
pada penyelesaian umum persamaan diferensialnya.
B. Saran-Saran
Dalam kesempatan ini, penulis ingin menyampaikan beberapa hal
terkait dengan penelitian ini, antara lain:
1. Pengembangan dan penyempurnaan penelitian ini dapat dilakukan dengan
membandingkan tiga metode yaitu; metode beda hingga, metode
tembakan, dan metode kolokasi dengan menggunakan program aplikasi
MATLAB.
2. Pengembangan dan penyempurnaan pada metode tembakan dalam
penelitian ini dapat dilakukan dengan membandingkan penggunaan
metode Runge-Kutta orde 2 dan orde 3, metode Euler, ataupun metode-
metode yang sering digunakan dalam penyelesaian masalah nilai awal.
© 2008 Perpustakaan Digital UIN Sunan Kalijaga Yogyakarta
174
DAFTAR PUSTAKA
Arhami, Muhammad dan Desiani, Anita. 2005. Pemrograman MATLAB.
Yogyakarta: Penerbit Andi.
Basuki A.R.1993. Persamaan Diferensial. Yogyakarta: FMIPA IKIP
Muhammadiyah.
Ayres, Frank. 1990. Persamaan Diferensial dalam Satuan SI metric (alih bahasa
Lily Ratna). Jakarta: Penerbit Erlangga.
Chapra, Steven C. dan Canale, Raymond P.. 1996. Metode Numerik (terjemahan).
Jakarta: Penerbit Erlangga.
Conte, Samuel D. dan Boor, Carl De. 1993. Dasar-Dasar Analisis Numerik
dengan Suatu Pendekatan Algoritma. Jakarta: Erlangga.
Djojodihardjo, Harijono.1983. Metode Numerik. Jakarat: Erlangga.
Finizio dan Ladas . 1988. Persamaan Diferensial Biasa dan Penerapan Modern.
(Terjemahan). Jakarta: Erlangga.
Hasan, Talib Hashim. 2005. Belajar Sendiri Dasar-Dasar Pemrograman
MATLAB. Yogyakarta: Gava Media.
Ibraheem, Kais Ismail dan Hisyam, Anwaruddin. 2003. Metode Numerik untuk
Sains dan Teknik dengan MATLAB. UAD Press.
Masyhur.2004. Penyelesaian Masalah Nilai Batas pada Persamaan Diferensial
Biasa Orde Dua dengan Menggunakan Metode Beda Hingga (Skripsi).
Yogyakarta: UAD Yogyakarta.
Mathews, John dan Fink, Kurtis. 2004. Numerical Methods Using MATLAB. New
Jersy: Pearson Education.
Mohamad, M. Nor. 1993. Pengenalan Persamaan Biasa. Selangor: Percetakan
Dewan Bahasa.
Muhadjir, Noeng.1996. Metodologi Penelitian Kualitatif. Yogyakarta: Rake
Sarasin.
Soedijono, Bambang dan B. Susana.1993. Model Matematik (Alat Penyusun
Model). Jakarta: Karunia.
© 2008 Perpustakaan Digital UIN Sunan Kalijaga Yogyakarta
175
Spiegel, Murray R.1983. Matematika Lanjutan untuk Lanjutan Para Insinyur dan
Ilmuwan (Terj. Koko Martono). Jakarta: Erlangga.
Sugiharto, Aris. 2006. Pemrograman GUI dengan MATLAB. Yogyakarta:
Penerbit Andi.
Triatmodjo, Bambang. 2002. Metode Numerik. Yogyakarta: Beta Offset.
Utami, Murni.2005. Penyelesaian Numeris Masalah Nilai Awal Menggunakan
Metode Runge Kutta Berbasis MATLAB (Skripsi).Yogyakarta: UIN Sunan
Kalijaga Yogyakarta.
Wardiman.1981. Diktat Kuliah Persamaan Diferensial Elementer. Yogyakarta:
Jurusan FMIPA UGM Yogyakarta.
© 2008 Perpustakaan Digital UIN Sunan Kalijaga Yogyakarta
176
LISTING PROGRAM APLIKASI
function varargout = PROGRAM_APLIKASI(varargin)% Edit the above text to modify the response to helpPROGRAM_APLIKASI% Last Modified by GUIDE v2.5 07-Aug-2007 11:38:03% Begin initialization code - DO NOT EDITgui_Singleton = 1;gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton', gui_Singleton, ...'gui_OpeningFcn', @PROGRAM_APLIKASI_OpeningFcn,
...'gui_OutputFcn', @PROGRAM_APLIKASI_OutputFcn,
...'gui_LayoutFcn', [] , ...'gui_Callback', []);
if nargin && ischar(varargin{1})gui_State.gui_Callback = str2func(varargin{1});
end
if nargout[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
elsegui_mainfcn(gui_State, varargin{:});
end% End initialization code - DO NOT EDIT
% --- Executes just before PROGRAM_APLIKASI is made visible.function PROGRAM_APLIKASI_OpeningFcn(hObject, eventdata, handles,varargin)
%function axes1_OpeningFcn(hObject, eventdata, handles, varargin)handles.data1=imread('iain.jpg');handles.current_data1=handles.data1;axes(handles.axes_iain);imshow(handles.current_data1);% Choose default command line output for PROGRAM_APLIKASIhandles.output = hObject;
% Update handles structureguidata(hObject, handles);
% --- Outputs from this function are returned to the command line.function varargout = PROGRAM_APLIKASI_OutputFcn(hObject,eventdata, handles)
% Get default command line output from handles structurevarargout{1} = handles.output;
% --- Executes on button press in push_profil.function push_profil_Callback(hObject, eventdata, handles)
© 2008 Perpustakaan Digital UIN Sunan Kalijaga Yogyakarta
177
fig2=openfig('profil.fig');handles=guihandles(fig2);guidata(fig2,handles);handles.data1=imread('Qomar.JPG');handles.current_data1=handles.data1;axes(handles.axes_profil);imshow(handles.current_data1);
% --- Executes on button press in push_ptnjk.function push_ptnjk_Callback(hObject, eventdata, handles)
fig3=openfig('petunjuk.fig');handles=guihandles(fig3);guidata(fig3,handles);handles.data1=imread('zim.jpg');handles.current_data1=handles.data1;axes(handles.axes_do);imshow(handles.current_data1);% --- Executes on button press in push_prog.function push_prog_Callback(hObject, eventdata, handles)
fig4=openfig('METODE_BTM.fig');handles=guihandles(fig4);guidata(fig4,handles);
% --- Executes on button press in push_exit.function push_exit_Callback(hObject, eventdata, handles)
pil=questdlg('Keluar ProgramAplikasi?','Keluar','Ya','Tidak','Ya');if strcmp(pil,'Tidak')
return;enddelete(handles.figure1)
© 2008 Perpustakaan Digital UIN Sunan Kalijaga Yogyakarta
178
LISTING METODE BTM
function varargout = METODE_BTM(varargin)% METODE_BTM M-file for METODE_BTM.fig% Last Modified by GUIDE v2.5 08-Nov-2007 05:38:49% Begin initialization code - DO NOT EDITgui_Singleton = 1;gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton', gui_Singleton, ...'gui_OpeningFcn', @METODE_BTM_OpeningFcn, ...'gui_OutputFcn', @METODE_BTM_OutputFcn, ...'gui_LayoutFcn', [] , ...'gui_Callback', []);
if nargin && ischar(varargin{1})gui_State.gui_Callback = str2func(varargin{1});
end
if nargout[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
elsegui_mainfcn(gui_State, varargin{:});
end% End initialization code - DO NOT EDIT% --- Executes just before METODE_BTM is made visible.function METODE_BTM_OpeningFcn(hObject, eventdata, handles,varargin)handles.output = hObject;% Update handles structureguidata(hObject, handles);% --- Outputs from this function are returned to the command line.function varargout = METODE_BTM_OutputFcn(hObject, eventdata,handles)varargout{1} = handles.output;
% ----------------INPUT KOEFISIEN TEMBAKAN-----------------------
function edit_px_Callback(hObject, eventdata, handles)get(hObject,'String')syms x;px=get(handles.edit_px,'String');handles.px=px;px1=char(px);delete px.m;fid1=fopen('px.m','w');fprintf(fid1,'function y= f(x,y); \n');fprintf(fid1,'y= %s; ',px1);fclose(fid1);guidata(hObject, handles);% --- Executes during object creation, after setting allproperties.function edit_px_CreateFcn(hObject, eventdata, handles)if ispc && isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))
© 2008 Perpustakaan Digital UIN Sunan Kalijaga Yogyakarta
179
set(hObject,'BackgroundColor','white');end
function edit_qx_Callback(hObject, eventdata, handles)get(hObject,'String')syms x;qx=get(handles.edit_qx,'String');handles.qx=qx;qx1=char(qx);delete qx.m;fid1=fopen('qx.m','w');fprintf(fid1,'function y= f(x,y); \n');fprintf(fid1,'y= %s; ',qx1);fclose(fid1);guidata(hObject, handles);% --- Executes during object creation, after setting allproperties.function edit_qx_CreateFcn(hObject, eventdata, handles)if ispc && isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');end
function edit_rx_Callback(hObject, eventdata, handles)get(hObject,'String')syms x;rx=get(handles.edit_rx,'String');handles.rx=rx;rx1=char(rx);delete rx.m;fid1=fopen('rx.m','w');fprintf(fid1,'function y= f(x,y); \n');fprintf(fid1,'y= %s; ',rx1);fclose(fid1);guidata(hObject, handles);
% --- Executes during object creation, after setting allproperties.function edit_rx_CreateFcn(hObject, eventdata, handles)if ispc && isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');end
% ----------------INPUT KOEFISIEN BEDA HINGGA-----------------------
function edit_pa_Callback(hObject, eventdata, handles)get(hObject,'String')syms x;pa=get(handles.edit_pa,'String');handles.pa=pa;pa1=char(pa);delete px.m;fid1=fopen('pa.m','w');
© 2008 Perpustakaan Digital UIN Sunan Kalijaga Yogyakarta
180
fprintf(fid1,'function y= f(x,y); \n');fprintf(fid1,'y= %s; ',pa1);fclose(fid1);guidata(hObject, handles);% --- Executes during object creation, after setting allproperties.function edit_pa_CreateFcn(hObject, eventdata, handles)if ispc && isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');end
function edit_qa_Callback(hObject, eventdata, handles)get(hObject,'String')syms x;qa=get(handles.edit_qa,'String');handles.qa=qa;qa1=char(qa);delete qa.m;fid1=fopen('qa.m','w');fprintf(fid1,'function y= f(x,y); \n');fprintf(fid1,'y= %s; ',qa1);fclose(fid1);guidata(hObject, handles);
% --- Executes during object creation, after setting allproperties.function edit_qa_CreateFcn(hObject, eventdata, handles)if ispc && isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');end
function edit_ra_Callback(hObject, eventdata, handles)get(hObject,'String')syms x;ra=get(handles.edit_ra,'String');handles.ra=ra;ra1=char(ra);delete ra.m;fid1=fopen('ra.m','w');fprintf(fid1,'function y= f(x,y); \n');fprintf(fid1,'y= %s; ',ra1);fclose(fid1);guidata(hObject, handles);% --- Executes during object creation, after setting allproperties.function edit_ra_CreateFcn(hObject, eventdata, handles)if ispc && isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');end
% ----------------INPUT SYARAT BATAS-----------------------
© 2008 Perpustakaan Digital UIN Sunan Kalijaga Yogyakarta
181
function edit_ya_Callback(hObject, eventdata, handles)get(hObject,'String')ya=str2num(get(handles.edit_ya,'String'));try
numeris=eval(get(hObject,'String'))if ~isnumeric(numeris)
%errordlg('Data bukan numeris','Salah');end
catcherrordlg('Salah mengisikan data, data harus numeris
!!!','Salah');endhandles.ya=ya;guidata(hObject, handles);
% --- Executes during object creation, after setting allproperties.function edit_ya_CreateFcn(hObject, eventdata, handles)if ispc && isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');end
function edit_yb_Callback(hObject, eventdata, handles)get(hObject,'String')yb=str2num(get(handles.edit_yb,'String'));try
numeris=eval(get(hObject,'String'))if ~isnumeric(numeris)
%errordlg('Data bukan numeris','Salah');end
catcherrordlg('Salah mengisikan data, data harus numeris
!!!','Salah');endhandles.yb=yb;guidata(hObject, handles);% --- Executes during object creation, after setting allproperties.function edit_yb_CreateFcn(hObject, eventdata, handles)if ispc && isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');end
% ----------------INPUT NILAI BATAS-----------------------
function edit_a_Callback(hObject, eventdata, handles)get(hObject,'String')a=str2num(get(handles.edit_a,'String'));try
numeris=eval(get(hObject,'String'))if ~isnumeric(numeris)
errordlg('Data bukan numeris','Salah');end
© 2008 Perpustakaan Digital UIN Sunan Kalijaga Yogyakarta
182
catcherrordlg('Salah mengisikan data, data harus numeris
!!!','Salah');end%if (a>=handles.b)
% errordlg(' Nilai a < b ','Awas !');%endhandles.a=a;
% --- Executes during object creation, after setting allproperties.function edit_a_CreateFcn(hObject, eventdata, handles)if ispc && isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');end
function edit_b_Callback(hObject, eventdata, handles)get(hObject,'String')b=str2num(get(handles.edit_b,'String'));try
numeris=eval(get(hObject,'String'))if ~isnumeric(numeris)
errordlg('Data bukan numeris','Salah');end
catcherrordlg('Salah mengisikan data, HARUS numeris !!!','Salah');
end%if (b<=handles.a)
% errordlg(' Nilai b > a ','Awas !');%endhandles.b=b;guidata(hObject, handles);% --- Executes during object creation, after setting allproperties.function edit_b_CreateFcn(hObject, eventdata, handles)if ispc && isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');end
% ----------------INPUT ITERASI-----------------------
function edit_n_Callback(hObject, eventdata, handles)get(hObject,'String')N=str2num(get(handles.edit_n,'String'));try
numeris=eval(get(hObject,'String'))if ~isnumeric(numeris)
%errordlg('Data bukan numeris','Salah');end
catcherrordlg('Salah mengisikan data, data harus numeris
!!!','Salah');end
© 2008 Perpustakaan Digital UIN Sunan Kalijaga Yogyakarta
183
if (N<=0)errordlg('Nilai N harus lebih besar dari 0 !!!','Salah');
endhandles.N=N;guidata(hObject, handles);
% --- Executes during object creation, after setting allproperties.function edit_n_CreateFcn(hObject, eventdata, handles)% Hint: edit controls usually have a white background on Windows.% See ISPC and COMPUTER.if ispc && isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');end
% --- Executes on button press in push_savei.function push_savei_Callback(hObject, eventdata, handles)clc;get(hObject,'String')syms x;px=get(handles.edit_px,'String');handles.px=px;px1=char(px);delete px.m;fid1=fopen('px.m','w');fprintf(fid1,'function y= f(x,y); \n');fprintf(fid1,'y= %s; ',px1);fclose(fid1);guidata(hObject, handles);
get(hObject,'String')syms x;qx=get(handles.edit_qx,'String');handles.qx=qx;qx1=char(qx);delete qx.m;fid1=fopen('qx.m','w');fprintf(fid1,'function y= f(x,y); \n');fprintf(fid1,'y= %s; ',qx1);fclose(fid1);guidata(hObject, handles);
get(hObject,'String')syms x;rx=get(handles.edit_rx,'String');handles.rx=rx;rx1=char(rx);delete rx.m;fid1=fopen('rx.m','w');fprintf(fid1,'function y= f(x,y); \n');fprintf(fid1,'y= %s; ',rx1);fclose(fid1);guidata(hObject, handles);
© 2008 Perpustakaan Digital UIN Sunan Kalijaga Yogyakarta
184
%----------------------------------------------------------Save iPP QQ RRget(hObject,'String')syms x;pa=get(handles.edit_pa,'String');handles.pa=pa;pa1=char(pa);delete pa.m;fid1=fopen('pa.m','w');fprintf(fid1,'function y= f(x,y); \n');fprintf(fid1,'y= %s; ',pa1);fclose(fid1);guidata(hObject, handles);
get(hObject,'String')syms x;qa=get(handles.edit_qa,'String');handles.qa=qa;qa1=char(qa);delete qa.m;fid1=fopen('qa.m','w');fprintf(fid1,'function y= f(x,y); \n');fprintf(fid1,'y= %s; ',qa1);fclose(fid1);guidata(hObject, handles);
get(hObject,'String')syms x;ra=get(handles.edit_ra,'String');handles.ra=ra;ra1=char(ra);delete ra.m;fid1=fopen('ra.m','w');fprintf(fid1,'function y= f(x,y); \n');fprintf(fid1,'y= %s; ',ra1);fclose(fid1);guidata(hObject, handles);
%------------------------------------------------------Save i YAYB A B Nget(hObject,'String')ya=num2str(get(handles.edit_ya,'String'));handles.ya=ya;get(hObject,'String')yb=num2str(get(handles.edit_yb,'String'));handles.yb=yb;get(hObject,'String')a=num2str(get(handles.edit_a,'String'));handles.a=a;get(hObject,'String')b=num2str(get(handles.edit_b,'String'));handles.b=b;get(hObject,'String')N=num2str(get(handles.edit_n,'String'));handles.N=N;
© 2008 Perpustakaan Digital UIN Sunan Kalijaga Yogyakarta
185
%---------------------------------------------------- Save iHandlesnyapx1=handles.px;qx1=handles.qx;rx1=handles.rx;pa1=handles.pa;qa1=handles.qa;ra1=handles.ra;ya=handles.ya;yb=handles.yb;a=handles.a;b=handles.b;N=handles.N;
jawab=inputdlg('Nama file:','Simpan');if~isempty(jawab)
namafile=char(jawab);fid=fopen(namafile);if fid~=-1
jawab=questdlg('File dengan nama tersebut sudahada!','Peringatan','Timpa','Batal','Batal');
if strcmp(jawab,'Batal')%Break
elseend
endfid=fopen(namafile,'w');fprintf(fid,'%s \n',px1);fprintf(fid,'%s \n',qx1);fprintf(fid,'%s \n',rx1);fprintf(fid,'%s \n',pa1);fprintf(fid,'%s \n',qa1);fprintf(fid,'%s \n',ra1);fprintf(fid,'%s \n',ya);fprintf(fid,'%s \n',yb);fprintf(fid,'%s \n',a);fprintf(fid,'%s \n',b);fprintf(fid,'%s \n',N);guidata(hObject, handles);fclose(fid);
end;
% --- Executes on button press in push_call.function push_call_Callback(hObject, eventdata, handles)jawab=inputdlg('Nama file:','Buka');if~isempty(jawab)
namafile=char(jawab);fid=fopen(namafile);if fid==-1
errordlg('File tidak ditemukan ...!','Error')%Break
endfclose(fid)
data=textread(namafile,'%s','whitespace','\n');
© 2008 Perpustakaan Digital UIN Sunan Kalijaga Yogyakarta
186
%-------------------------------------------------------Call PX QXRXget(hObject,'String')syms x;px=get(handles.edit_px,'String');handles.px=px;px1=char(px);delete px.m;fid1=fopen('px.m','w');fprintf(fid1,'function y= f(x,y); \n');fprintf(fid1,'y= %s; ',px1);fclose(fid1);guidata(hObject, handles);
get(hObject,'String')syms x;qx=get(handles.edit_qx,'String');handles.qx=qx;qx1=char(qx);delete qx.m;fid1=fopen('qx.m','w');fprintf(fid1,'function y= f(x,y); \n');fprintf(fid1,'y= %s; ',qx1);fclose(fid1);guidata(hObject, handles);
get(hObject,'String')syms x;rx=get(handles.edit_rx,'String');handles.rx=rx;rx1=char(rx);delete rx.m;fid1=fopen('rx.m','w');fprintf(fid1,'function y= f(x,y); \n');fprintf(fid1,'y= %s; ',rx1);fclose(fid1);guidata(hObject, handles);
%-------------------------------------------------------Call PP QQRRget(hObject,'String')syms x;pa=get(handles.edit_pa,'String');handles.pa=pa;pa1=char(pa);delete pa.m;fid1=fopen('pa.m','w');fprintf(fid1,'function y= f(x,y); \n');fprintf(fid1,'y= %s; ',pa1);fclose(fid1);guidata(hObject, handles);
get(hObject,'String')syms x;
© 2008 Perpustakaan Digital UIN Sunan Kalijaga Yogyakarta
187
qa=get(handles.edit_qa,'String');handles.qa=qa;qa1=char(qa);delete qa.m;fid1=fopen('qa.m','w');fprintf(fid1,'function y= f(x,y); \n');fprintf(fid1,'y= %s; ',qa1);fclose(fid1);guidata(hObject, handles);
get(hObject,'String')syms x;ra=get(handles.edit_ra,'String');handles.ra=ra;ra1=char(ra);delete ra.m;fid1=fopen('ra.m','w');fprintf(fid1,'function y= f(x,y); \n');fprintf(fid1,'y= %s; ',ra1);fclose(fid1);guidata(hObject, handles);
%-------------------------------------------------------CallhObject
get(hObject,'String')hObject=findobj(gcf,'Tag','edit_px');set(hObject,'String',data{1});guidata(hObject, handles);handles.px=px;
get(hObject,'String')hObject=findobj(gcf,'Tag','edit_qx');set(hObject,'String',data{2});guidata(hObject, handles);handles.qx=qx;
get(hObject,'String')hObject=findobj(gcf,'Tag','edit_rx');set(hObject,'String',data{3});guidata(hObject, handles);handles.rx=rx;
get(hObject,'String')hObject=findobj(gcf,'Tag','edit_pa');set(hObject,'String',data{4});guidata(hObject, handles);handles.pa=pa;
get(hObject,'String')hObject=findobj(gcf,'Tag','edit_qa');set(hObject,'String',data{5});guidata(hObject, handles);handles.qa=qa;
© 2008 Perpustakaan Digital UIN Sunan Kalijaga Yogyakarta
188
get(hObject,'String')hObject=findobj(gcf,'Tag','edit_ra');set(hObject,'String',data{6});guidata(hObject, handles);handles.ra=ra;
get(hObject,'String')ya=str2num(get(handles.edit_ya,'String'));hObject=findobj(gcf,'Tag','edit_ya');set(hObject,'String',data{7});guidata(hObject, handles);handles.ya=ya;
get(hObject,'String')yb=str2num(get(handles.edit_yb,'String'));hObject=findobj(gcf,'Tag','edit_yb');set(hObject,'String',data{8});guidata(hObject, handles);handles.yb=yb;
get(hObject,'String')a=str2num(get(handles.edit_a,'String'));hObject=findobj(gcf,'Tag','edit_a');set(hObject,'String',data{9});guidata(hObject, handles);handles.a=a;
get(hObject,'String')b=str2num(get(handles.edit_b,'String'));hObject=findobj(gcf,'Tag','edit_b');set(hObject,'String',data{10});guidata(hObject, handles);handles.b=b;
get(hObject,'String')N=str2num(get(handles.edit_n,'String'));hObject=findobj(gcf,'Tag','edit_n');set(hObject,'String',data{11});guidata(hObject, handles);handles.N=N;
end
% --- Executes on button press in push_reset.function push_reset_Callback(hObject, eventdata, handles)set(handles.edit_px,'String',' ');set(handles.edit_qx,'String',' ');set(handles.edit_rx,'String',' ');set(handles.edit_pa,'String',' ');set(handles.edit_qa,'String',' ');set(handles.edit_ra,'String',' ');set(handles.edit_ya,'String',' ');set(handles.edit_yb,'String',' ');set(handles.edit_a,'String',' ');set(handles.edit_b,'String',' ');set(handles.edit_n,'String',' ');
© 2008 Perpustakaan Digital UIN Sunan Kalijaga Yogyakarta
189
set(handles.listbox1,'String',' ');clear allclear px qx rx pa qa ra a b ya yb N;clc
% --- Executes on button press in push_grafek.function push_grafek_Callback(hObject, eventdata, handles)%--------------------------------------------------------------------------GRAFIK EKSAKclc;hbh = waitbar(0,'Grafik eksak sedang proses ...');warn=warndlg('Tunggu sebentar ... Jika GRAFIK EKSAK tidakmuncul,... lihat Command Window MATLAB. Jika di Command WindowMATLAB ada tulisan Error, (in dsolve/IC) The implicit option isnot available when giving Initial Conditions,berarti MNB tidakbisa diselesaikan secara eksak (grafik juga tidak ada), cobadengan grafik metode BedaHingga / Tembakan','Perhatian');
get(hObject,'String')syms x;px=get(handles.edit_px,'String');handles.px=px;px1=char(px);delete px.m;fid1=fopen('px.m','w');fprintf(fid1,'function y= f(x,y); \n');fprintf(fid1,'y= %s; ',px1);fclose(fid1);guidata(hObject, handles);
get(hObject,'String')syms x;qx=get(handles.edit_qx,'String');handles.qx=qx;qx1=char(qx);delete qx.m;fid1=fopen('qx.m','w');fprintf(fid1,'function y= f(x,y); \n');fprintf(fid1,'y= %s; ',qx1);fclose(fid1);guidata(hObject, handles);
get(hObject,'String')syms x;rx=get(handles.edit_rx,'String');handles.rx=rx;rx1=char(rx);delete rx.m;fid1=fopen('rx.m','w');fprintf(fid1,'function y= f(x,y); \n');fprintf(fid1,'y= %s; ',rx1);fclose(fid1);guidata(hObject, handles);
get(hObject,'String')
© 2008 Perpustakaan Digital UIN Sunan Kalijaga Yogyakarta
190
syms x;pa=get(handles.edit_pa,'String');handles.pa=pa;pa1=char(pa);delete pa.m;fid1=fopen('pa.m','w');fprintf(fid1,'function y= f(x,y); \n');fprintf(fid1,'y= %s; ',pa1);fclose(fid1);guidata(hObject, handles);
get(hObject,'String')syms x;qa=get(handles.edit_qa,'String');handles.qa=qa;qa1=char(qa);delete qa.m;fid1=fopen('qa.m','w');fprintf(fid1,'function y= f(x,y); \n');fprintf(fid1,'y= %s; ',qa1);fclose(fid1);guidata(hObject, handles);
get(hObject,'String')syms x;ra=get(handles.edit_ra,'String');handles.ra=ra;ra1=char(ra);delete ra.m;fid1=fopen('ra.m','w');fprintf(fid1,'function y= f(x,y); \n');fprintf(fid1,'y= %s; ',ra1);fclose(fid1);guidata(hObject, handles);
px=get(handles.edit_px,'String');handles.px=px;qx=get(handles.edit_qx,'String');handles.qx=qx;rx=get(handles.edit_rx,'String');handles.rx=rx;
pa=get(handles.edit_pa,'String');handles.pa=pa;qa=get(handles.edit_qa,'String');handles.qa=qa;ra=get(handles.edit_ra,'String');handles.ra=ra;
% Run dari Call untuk ya, yb, a, b, dan Nya=str2num(get(handles.edit_ya,'String'));handles.ya=ya;yb=str2num(get(handles.edit_yb,'String'));handles.yb=yb;a=str2num(get(handles.edit_a,'String'));
© 2008 Perpustakaan Digital UIN Sunan Kalijaga Yogyakarta
191
handles.a=a;b=str2num(get(handles.edit_b,'String'));handles.b=b;N=str2num(get(handles.edit_n,'String'));handles.N=N;
px1=handles.px;qx1=handles.qx;rx1=handles.rx;
pa1=handles.pa;qa1=handles.qa;ra1=handles.ra;
ya=handles.ya;yb=handles.yb;a=handles.a;b=handles.b;
if (a>=handles.b)errordlg(' Nilai a < b ','Awas !');
endN=handles.N;
t0=clock;
px=get(handles.edit_px,'String');handles.px=px;qx=get(handles.edit_qx,'String');handles.qx=qx;rx=get(handles.edit_rx,'String');handles.rx=rx;
ya=num2str(get(handles.edit_ya,'String'));handles.ya=ya;yb=num2str(get(handles.edit_yb,'String'));handles.yb=yb;a=num2str(get(handles.edit_a,'String'));handles.a=a;b=num2str(get(handles.edit_b,'String'));handles.b=b;
syms xdelete eks.m;fidl=fopen('eks.m','w');fprintf(fidl,'function vv = eks(x); \n');fprintf(fidl,'vv=dsolve(''D2y=%s*Dy%s*y%s,y(%s)=%s,y(%s)=%s'',''x''); \n',px,qx,rx,a,ya,b,yb);fclose(fidl);guidata(hObject, handles);
a=str2num(get(handles.edit_a,'String'));handles.a=a;b=str2num(get(handles.edit_b,'String'));
© 2008 Perpustakaan Digital UIN Sunan Kalijaga Yogyakarta
192
handles.b=b;
vv= eks(x );h = (b-a)/N;x=double(a+h:h:a+h*(N-1));eks1=vpa(feval('eks',x));eskuhasil=char(eks1);
syms xdelete eksku.m;fidl=fopen('eksku.m','w');fprintf(fidl,'function Zeksku = eksku(x); \n');fprintf(fidl,'Zeksku=%s; \n',eskuhasil);fclose(fidl);guidata(hObject, handles);
x2=double(a+h:h:a+h*(N-1));
for k=1:N-1eksak(k)=vpa(feval('eksku',x2(k)));waitbar(k/N-1)end%{Exc=double(eksak)xn=a:h:b;xe=a+h:h:h*(N-1);%}xn=a:h:b;Ex=[ya,eksak,yb]';Exc=double(Ex);
fig5=openfig('Grafik.fig');handles=guihandles(fig5);guidata(fig5,handles);plot(xn,Exc,'mp-'),title('Grafik Penyelesaian Masalah Nilai Batas');
grid;lg = legend('eksak',1);set(lg,'Interpreter','none')xlabel('Subinterval x(n)');ylabel('Hasil Penyelesaian y[x(n)]');
close(hbh);close(warn)% --- Executes on button press in push_grafbed.function push_grafbed_Callback(hObject, eventdata, handles)%--------------------------------------------------------------------------GRAFIK BEDA HINGGAclc;hbh = waitbar(0,'Grafik beda hingga sedang proses ...');warn=warndlg('Tunggu sebentar ... Jika GRAFIK BEDA HINGGA tidakmuncul,... lihat Command Window MATLAB untuk diagnosakesalahan','Perhatian');
© 2008 Perpustakaan Digital UIN Sunan Kalijaga Yogyakarta
193
get(hObject,'String')syms x;px=get(handles.edit_px,'String');handles.px=px;px1=char(px);delete px.m;fid1=fopen('px.m','w');fprintf(fid1,'function y= f(x,y); \n');fprintf(fid1,'y= %s; ',px1);fclose(fid1);guidata(hObject, handles);
get(hObject,'String')syms x;qx=get(handles.edit_qx,'String');handles.qx=qx;qx1=char(qx);delete qx.m;fid1=fopen('qx.m','w');fprintf(fid1,'function y= f(x,y); \n');fprintf(fid1,'y= %s; ',qx1);fclose(fid1);guidata(hObject, handles);
get(hObject,'String')syms x;rx=get(handles.edit_rx,'String');handles.rx=rx;rx1=char(rx);delete rx.m;fid1=fopen('rx.m','w');fprintf(fid1,'function y= f(x,y); \n');fprintf(fid1,'y= %s; ',rx1);fclose(fid1);guidata(hObject, handles);
get(hObject,'String')syms x;pa=get(handles.edit_pa,'String');handles.pa=pa;pa1=char(pa);delete pa.m;fid1=fopen('pa.m','w');fprintf(fid1,'function y= f(x,y); \n');fprintf(fid1,'y= %s; ',pa1);fclose(fid1);guidata(hObject, handles);
get(hObject,'String')syms x;qa=get(handles.edit_qa,'String');handles.qa=qa;qa1=char(qa);delete qa.m;fid1=fopen('qa.m','w');
© 2008 Perpustakaan Digital UIN Sunan Kalijaga Yogyakarta
194
fprintf(fid1,'function y= f(x,y); \n');fprintf(fid1,'y= %s; ',qa1);fclose(fid1);guidata(hObject, handles);
get(hObject,'String')syms x;ra=get(handles.edit_ra,'String');handles.ra=ra;ra1=char(ra);delete ra.m;fid1=fopen('ra.m','w');fprintf(fid1,'function y= f(x,y); \n');fprintf(fid1,'y= %s; ',ra1);fclose(fid1);guidata(hObject, handles);
px=get(handles.edit_px,'String');handles.px=px;qx=get(handles.edit_qx,'String');handles.qx=qx;rx=get(handles.edit_rx,'String');handles.rx=rx;
pa=get(handles.edit_pa,'String');handles.pa=pa;qa=get(handles.edit_qa,'String');handles.qa=qa;ra=get(handles.edit_ra,'String');handles.ra=ra;
% Run dari Call untuk ya, yb, a, b, dan Nya=str2num(get(handles.edit_ya,'String'));handles.ya=ya;yb=str2num(get(handles.edit_yb,'String'));handles.yb=yb;a=str2num(get(handles.edit_a,'String'));handles.a=a;b=str2num(get(handles.edit_b,'String'));handles.b=b;N=str2num(get(handles.edit_n,'String'));handles.N=N;
px1=handles.px;qx1=handles.qx;rx1=handles.rx;
pa1=handles.pa;qa1=handles.qa;ra1=handles.ra;
ya=handles.ya;yb=handles.yb;a=handles.a;b=handles.b;
© 2008 Perpustakaan Digital UIN Sunan Kalijaga Yogyakarta
195
if (a>=handles.b)errordlg(' Nilai a < b ','Awas !');
endN=handles.N;
t0=clock;
%{% ------------FINITE DIFFERENCE METHOD ALTERNATIF 2digits(7)
T = zeros(1,N+1);y = zeros(1,N-1);Va = zeros(1,N-2);Vb = zeros(1,N-1);Vc = zeros(1,N-2);Vd = zeros(1,N-1);% Sub-intervalh = (b-a)/N;% Partisi Interval%x1=a+h:h:a+h*(N-1);x2=a+h:h:a+h*(N-1);
% Vektor konstan b dalam Ay=bVb(2:N-2) = vpa(h^2*feval('ra',x2(2:N-2)))Vb(1) = vpa(h^2*feval('ra',x2(1))-(1+h/2*feval('pa',x2(1)))*ya)Vb(N-1)= vpa(h^2*feval('ra',x2(N-1))-(1-h/2*feval('pa',x2(N-1)))*yb)
% Main diagonal dalam vektor AVd(1:N-1) = vpa(-(2+h^2*feval('qa',x2(1:N-1))))
% Calculate the superdiagonal of Axa = x2(1,2:N-1);Va(2:N-1) = vpa(1-h/2*feval('pa',xa))
% Calculate the subdiagonal of Axc = x2(1,1:N-2);Vc(1:N-2) = vpa(1-h/2*feval('pa',xc(1:N-2)))
% Solve using trisysy= trisys(Va,Vd,Vc,Vb)T = [a,x2,b]y = [ya,y,yb]F = [T' y']
%}
% ------------FINITE DIFFERENCE METHOD ALTERNATIF 1h = (b-a)/N;x2=a+h:h:a+h*(N-1);p(1:N-1)=vpa(feval('pa',x2));q(1:N-1)=vpa(feval('qa',x2));
© 2008 Perpustakaan Digital UIN Sunan Kalijaga Yogyakarta
196
r(1:N-1)=vpa(feval('ra',x2));%Subdiagonal pada matrik Ada(1,2:N-1)=vpa(1+h/2*p(1,2:N-1));%Maindiagonalpada matrik Add(1:N-1)=vpa(-(2+h^2*q(1:N-1)));%Superdiagonal pada matrik Adc(1:N-2)=vpa(1-h/2*p(1:N-2));% bentuk matriknyaAa= diag(da(1,2:N-1),-1);Ad= diag(dd);Ac= diag(dc,1);% penjumlahan matrikA=Ad+Ac+Aa;% matrik bbb=zeros(N-1,1);bb(1)=h^2*r(1) - (1+h/2*p(1))*ya;bb(N-1)=h^2*r(N-1) - (1-h/2*p(N-1))*yb;bb(2:N-2)=h^2*r(2:N-2)';%hasil penyelesaian MNBs=A\bb;y=[ya;s;yb];beda=double(y);xn=a:h:b;
fig5=openfig('Grafik.fig');handles=guihandles(fig5);guidata(fig5,handles);plot(xn,beda,'b^-'),title('Grafik Penyelesaian Masalah Nilai Batas');
grid;lg = legend('beda_hingga',1);set(lg,'Interpreter','none')xlabel('Subinterval x(n)');ylabel('Hasil Penyelesaian y[x(n)]');close(hbh)close(warn)
% --- Executes on button press in push_graftemb.function push_graftemb_Callback(hObject, eventdata, handles)%--------------------------------------------------------------------------GRAFIK TEMBAKANclc;hbh = waitbar(0,'Grafik tembakan sedang proses ...');warn=warndlg('Tunggu sebentar ... Jika GRAFIK TEMBAKAN tidakmuncul,... lihat Command Window MATLAB untuk diagnosakesalahan','Perhatian');
get(hObject,'String')syms x;px=get(handles.edit_px,'String');handles.px=px;px1=char(px);delete px.m;fid1=fopen('px.m','w');
© 2008 Perpustakaan Digital UIN Sunan Kalijaga Yogyakarta
197
fprintf(fid1,'function y= f(x,y); \n');fprintf(fid1,'y= %s; ',px1);fclose(fid1);guidata(hObject, handles);
get(hObject,'String')syms x;qx=get(handles.edit_qx,'String');handles.qx=qx;qx1=char(qx);delete qx.m;fid1=fopen('qx.m','w');fprintf(fid1,'function y= f(x,y); \n');fprintf(fid1,'y= %s; ',qx1);fclose(fid1);guidata(hObject, handles);
get(hObject,'String')syms x;rx=get(handles.edit_rx,'String');handles.rx=rx;rx1=char(rx);delete rx.m;fid1=fopen('rx.m','w');fprintf(fid1,'function y= f(x,y); \n');fprintf(fid1,'y= %s; ',rx1);fclose(fid1);guidata(hObject, handles);
get(hObject,'String')syms x;pa=get(handles.edit_pa,'String');handles.pa=pa;pa1=char(pa);delete pa.m;fid1=fopen('pa.m','w');fprintf(fid1,'function y= f(x,y); \n');fprintf(fid1,'y= %s; ',pa1);fclose(fid1);guidata(hObject, handles);
get(hObject,'String')syms x;qa=get(handles.edit_qa,'String');handles.qa=qa;qa1=char(qa);delete qa.m;fid1=fopen('qa.m','w');fprintf(fid1,'function y= f(x,y); \n');fprintf(fid1,'y= %s; ',qa1);fclose(fid1);guidata(hObject, handles);
get(hObject,'String')syms x;
© 2008 Perpustakaan Digital UIN Sunan Kalijaga Yogyakarta
198
ra=get(handles.edit_ra,'String');handles.ra=ra;ra1=char(ra);delete ra.m;fid1=fopen('ra.m','w');fprintf(fid1,'function y= f(x,y); \n');fprintf(fid1,'y= %s; ',ra1);fclose(fid1);guidata(hObject, handles);
px=get(handles.edit_px,'String');handles.px=px;qx=get(handles.edit_qx,'String');handles.qx=qx;rx=get(handles.edit_rx,'String');handles.rx=rx;
pa=get(handles.edit_pa,'String');handles.pa=pa;qa=get(handles.edit_qa,'String');handles.qa=qa;ra=get(handles.edit_ra,'String');handles.ra=ra;
% Run dari Call untuk ya, yb, a, b, dan Nya=str2num(get(handles.edit_ya,'String'));handles.ya=ya;yb=str2num(get(handles.edit_yb,'String'));handles.yb=yb;a=str2num(get(handles.edit_a,'String'));handles.a=a;b=str2num(get(handles.edit_b,'String'));handles.b=b;N=str2num(get(handles.edit_n,'String'));handles.N=N;
px1=handles.px;qx1=handles.qx;rx1=handles.rx;
pa1=handles.pa;qa1=handles.qa;ra1=handles.ra;
ya=handles.ya;yb=handles.yb;a=handles.a;b=handles.b;
if (a>=handles.b)errordlg(' Nilai a < b ','Awas !');
endN=handles.N;
t0=clock;
© 2008 Perpustakaan Digital UIN Sunan Kalijaga Yogyakarta
199
%------- SHOOTING METHOD
get(hObject,'String')px2=char(handles.px);qx2=char(handles.qx);rx2=char(handles.rx);delete F1.m;fid1=fopen('F1.m','w');fprintf(fid1,'function Z= F1(x,Z); \n');fprintf(fid1,'X=Z(1);Y=Z(2); \n');fprintf(fid1,'Z=[ Y, %s*Y%s*X%s ]; \n',px2,qx2,rx2);fclose(fid1);delete F2.m;fid1=fopen('F2.m','w');fprintf(fid1,'function Z= F2(x,Z); \n');fprintf(fid1,'X=Z(1);Y=Z(2); \n');fprintf(fid1,'Z=[ Y, %s*Y%s*X ]; \n',px2,qx2);fclose(fid1);guidata(hObject, handles);
digits(7)% Menghitung F1Za = [ya,0];h = (b-a)/N;Ts = zeros(1,N+1);Z1 = zeros(N+1,length(Za));Ts = a:h:b;Z(1,:)=vpa(Za);
for j=1:Nwaitbar(j/N)k1=vpa(h*(feval('F1',Ts(j),Z(j,:))));k2=vpa(h*(feval('F1',Ts(j)+h/2,Z(j,:)+k1/2)));k3=vpa(h*(feval('F1',Ts(j)+h/2,Z(j,:)+k2/2)));k4=vpa(h*(feval('F1',Ts(j)+h,Z(j,:)+k3)));Z(j+1,:)=vpa(Z(j,:)+(k1+2*k2+2*k3+k4)/6);
endU = vpa(Z(:,1));
% Menghitung F2Zb = [0,1];h = (b-a)/N;Ts = zeros(1,N+1);Z2 = zeros(N+1,length(Zb));Ts = a:h:b;Z(1,:)=vpa(Zb);
for j=1:Nwaitbar(j/N)k1=vpa(h*(feval('F2',Ts(j),Z(j,:))));k2=vpa(h*(feval('F2',Ts(j)+h/2,Z(j,:)+k1/2)));k3=vpa(h*(feval('F2',Ts(j)+h/2,Z(j,:)+k2/2)));k4=vpa(h*(feval('F2',Ts(j)+h,Z(j,:)+k3)));Z(j+1,:)=vpa(Z(j,:)+(k1+2*k2+2*k3+k4)/6);
© 2008 Perpustakaan Digital UIN Sunan Kalijaga Yogyakarta
200
endV = vpa(Z(:,1));W =vpa((yb-U(N+1))*V/V(N+1));
% HASIL MNB DENGAN METODE TEMBAKANll = vpa(U+(yb-U(N+1))*V/V(N+1));L= [Ts' ll];temb=double(ll);xn=a:h:b;
fig5=openfig('Grafik.fig');handles=guihandles(fig5);guidata(fig5,handles);plot(xn,temb,'rs-'),title('Grafik Penyelesaian Masalah Nilai Batas');
grid;lg = legend('tembakan',1);set(lg,'Interpreter','none')xlabel('Subinterval x(n)');ylabel('Hasil Penyelesaian y[x(n)]');close(hbh)close(warn)
% --- Executes on button press in push_allgrafik.function push_allgrafik_Callback(hObject, eventdata, handles)%--------------------------------------------------------------------------GRAFIK ALL METHODSclc;hbh = waitbar(0,'Grafik all methods sedang proses ...');warn=warndlg('Sedang proses ... Jika grafik ALL METHODS tidakmuncul, lihat Command Window MATLAB. Jika di Command Window MATLABada tulisan Error, (in dsolve/IC) The implicit option is notavailable when giving Initial Conditions,berarti MNB tidak bisadiselesaikan secara eksak, coba dengan grafik metode BedaHingga /Tembakan','Perhatian');
get(hObject,'String')syms x;px=get(handles.edit_px,'String');handles.px=px;px1=char(px);delete px.m;fid1=fopen('px.m','w');fprintf(fid1,'function y= f(x,y); \n');fprintf(fid1,'y= %s; ',px1);fclose(fid1);guidata(hObject, handles);
get(hObject,'String')syms x;qx=get(handles.edit_qx,'String');handles.qx=qx;qx1=char(qx);delete qx.m;
© 2008 Perpustakaan Digital UIN Sunan Kalijaga Yogyakarta
201
fid1=fopen('qx.m','w');fprintf(fid1,'function y= f(x,y); \n');fprintf(fid1,'y= %s; ',qx1);fclose(fid1);guidata(hObject, handles);
get(hObject,'String')syms x;rx=get(handles.edit_rx,'String');handles.rx=rx;rx1=char(rx);delete rx.m;fid1=fopen('rx.m','w');fprintf(fid1,'function y= f(x,y); \n');fprintf(fid1,'y= %s; ',rx1);fclose(fid1);guidata(hObject, handles);
get(hObject,'String')syms x;pa=get(handles.edit_pa,'String');handles.pa=pa;pa1=char(pa);delete pa.m;fid1=fopen('pa.m','w');fprintf(fid1,'function y= f(x,y); \n');fprintf(fid1,'y= %s; ',pa1);fclose(fid1);guidata(hObject, handles);
get(hObject,'String')syms x;qa=get(handles.edit_qa,'String');handles.qa=qa;qa1=char(qa);delete qa.m;fid1=fopen('qa.m','w');fprintf(fid1,'function y= f(x,y); \n');fprintf(fid1,'y= %s; ',qa1);fclose(fid1);guidata(hObject, handles);
get(hObject,'String')syms x;ra=get(handles.edit_ra,'String');handles.ra=ra;ra1=char(ra);delete ra.m;fid1=fopen('ra.m','w');fprintf(fid1,'function y= f(x,y); \n');fprintf(fid1,'y= %s; ',ra1);fclose(fid1);guidata(hObject, handles);
px=get(handles.edit_px,'String');
© 2008 Perpustakaan Digital UIN Sunan Kalijaga Yogyakarta
202
handles.px=px;qx=get(handles.edit_qx,'String');handles.qx=qx;rx=get(handles.edit_rx,'String');handles.rx=rx;
pa=get(handles.edit_pa,'String');handles.pa=pa;qa=get(handles.edit_qa,'String');handles.qa=qa;ra=get(handles.edit_ra,'String');handles.ra=ra;
% Run dari Call untuk ya, yb, a, b, dan Nya=str2num(get(handles.edit_ya,'String'));handles.ya=ya;yb=str2num(get(handles.edit_yb,'String'));handles.yb=yb;a=str2num(get(handles.edit_a,'String'));handles.a=a;b=str2num(get(handles.edit_b,'String'));handles.b=b;N=str2num(get(handles.edit_n,'String'));handles.N=N;
px1=handles.px;qx1=handles.qx;rx1=handles.rx;
pa1=handles.pa;qa1=handles.qa;ra1=handles.ra;
ya=handles.ya;yb=handles.yb;a=handles.a;b=handles.b;
if (a>=handles.b)errordlg(' Nilai a < b ','Awas !');
endN=handles.N;
t0=clock;%{% ------------FINITE DIFFERENCE METHOD ALTERNATIF 2digits(7)
T = zeros(1,N+1);y = zeros(1,N-1);Va = zeros(1,N-2);Vb = zeros(1,N-1);Vc = zeros(1,N-2);Vd = zeros(1,N-1);% Sub-interval
© 2008 Perpustakaan Digital UIN Sunan Kalijaga Yogyakarta
203
h = (b-a)/N;% Partisi Interval%x1=a+h:h:a+h*(N-1);x2=a+h:h:a+h*(N-1);
% Vektor konstan b dalam Ay=bVb(2:N-2) = vpa(h^2*feval('ra',x2(2:N-2)))Vb(1) = vpa(h^2*feval('ra',x2(1))-(1+h/2*feval('pa',x2(1)))*ya)Vb(N-1)= vpa(h^2*feval('ra',x2(N-1))-(1-h/2*feval('pa',x2(N-1)))*yb)
% Main diagonal dalam vektor AVd(1:N-1) = vpa(-(2+h^2*feval('qa',x2(1:N-1))))
% Calculate the superdiagonal of Axa = x2(1,2:N-1);Va(2:N-1) = vpa(1-h/2*feval('pa',xa))
% Calculate the subdiagonal of Axc = x2(1,1:N-2);Vc(1:N-2) = vpa(1-h/2*feval('pa',xc(1:N-2)))
% Solve using trisysy= trisys(Va,Vd,Vc,Vb)T = [a,x2,b]y = [ya,y,yb]F = [T' y']
%}
% ------------FINITE DIFFERENCE METHOD ALTERNATIF 1
h = (b-a)/N;x2=a+h:h:a+h*(N-1);p(1:N-1)=vpa(feval('pa',x2));q(1:N-1)=vpa(feval('qa',x2));r(1:N-1)=vpa(feval('ra',x2));%Subdiagonal pada matrik Ada(1,2:N-1)=vpa(1+h/2*p(1,2:N-1));%Maindiagonalpada matrik Add(1:N-1)=vpa(-(2+h^2*q(1:N-1)));%Superdiagonal pada matrik Adc(1:N-2)=vpa(1-h/2*p(1:N-2));% bentuk matriknyaAa= diag(da(1,2:N-1),-1);Ad= diag(dd);Ac= diag(dc,1);% penjumlahan matrikA=Ad+Ac+Aa;% matrik bbb=zeros(N-1,1);bb(1)=h^2*r(1) - (1+h/2*p(1))*ya;bb(N-1)=h^2*r(N-1) - (1-h/2*p(N-1))*yb;bb(2:N-2)=h^2*r(2:N-2)';%hasil penyelesaian MNB
© 2008 Perpustakaan Digital UIN Sunan Kalijaga Yogyakarta
204
s=A\bb;y=[ya;s;yb];beda=double(y);xn=a:h:b;
%------- SHOOTING METHOD
get(hObject,'String')px2=char(handles.px);qx2=char(handles.qx);rx2=char(handles.rx);delete F1.m;fid1=fopen('F1.m','w');fprintf(fid1,'function Z= F1(x,Z); \n');fprintf(fid1,'X=Z(1);Y=Z(2); \n');fprintf(fid1,'Z=[ Y, %s*Y%s*X%s ]; \n',px2,qx2,rx2);fclose(fid1);delete F2.m;fid1=fopen('F2.m','w');fprintf(fid1,'function Z= F2(x,Z); \n');fprintf(fid1,'X=Z(1);Y=Z(2); \n');fprintf(fid1,'Z=[ Y, %s*Y%s*X ]; \n',px2,qx2);fclose(fid1);guidata(hObject, handles);
digits(7)% Menghitung F1Za = [ya,0];h = (b-a)/N;Ts = zeros(1,N+1);Z1 = zeros(N+1,length(Za));Ts = a:h:b;Z(1,:)=vpa(Za);
for j=1:Nwaitbar(j/N)k1=vpa(h*(feval('F1',Ts(j),Z(j,:))));k2=vpa(h*(feval('F1',Ts(j)+h/2,Z(j,:)+k1/2)));k3=vpa(h*(feval('F1',Ts(j)+h/2,Z(j,:)+k2/2)));k4=vpa(h*(feval('F1',Ts(j)+h,Z(j,:)+k3)));Z(j+1,:)=vpa(Z(j,:)+(k1+2*k2+2*k3+k4)/6);
endU = vpa(Z(:,1));
% Menghitung F2Zb = [0,1];h = (b-a)/N;Ts = zeros(1,N+1);Z2 = zeros(N+1,length(Zb));Ts = a:h:b;Z(1,:)=vpa(Zb);
for j=1:Nwaitbar(j/N)k1=vpa(h*(feval('F2',Ts(j),Z(j,:))));
© 2008 Perpustakaan Digital UIN Sunan Kalijaga Yogyakarta
205
k2=vpa(h*(feval('F2',Ts(j)+h/2,Z(j,:)+k1/2)));k3=vpa(h*(feval('F2',Ts(j)+h/2,Z(j,:)+k2/2)));k4=vpa(h*(feval('F2',Ts(j)+h,Z(j,:)+k3)));Z(j+1,:)=vpa(Z(j,:)+(k1+2*k2+2*k3+k4)/6);
endV = vpa(Z(:,1));W =vpa((yb-U(N+1))*V/V(N+1));
% HASIL MNB DENGAN METODE TEMBAKANll = vpa(U+(yb-U(N+1))*V/V(N+1));L= [Ts' ll];temb=double(ll);
%-------------------METODE EKSAKpx=get(handles.edit_px,'String');handles.px=px;qx=get(handles.edit_qx,'String');handles.qx=qx;rx=get(handles.edit_rx,'String');handles.rx=rx;
ya=num2str(get(handles.edit_ya,'String'));handles.ya=ya;yb=num2str(get(handles.edit_yb,'String'));handles.yb=yb;a=num2str(get(handles.edit_a,'String'));handles.a=a;b=num2str(get(handles.edit_b,'String'));handles.b=b;
syms xdelete eks.m;fidl=fopen('eks.m','w');fprintf(fidl,'function vv = eks(x); \n');fprintf(fidl,'vv=dsolve(''D2y=%s*Dy%s*y%s,y(%s)=%s,y(%s)=%s'',''x''); \n',px,qx,rx,a,ya,b,yb);fclose(fidl);guidata(hObject, handles);
a=str2num(get(handles.edit_a,'String'));handles.a=a;b=str2num(get(handles.edit_b,'String'));handles.b=b;
vv= eks(x)h = (b-a)/N;x=double(a+h:h:a+h*(N-1));eks1=vpa(feval('eks',x));eskuhasil=char(eks1);
syms xdelete eksku.m;fidl=fopen('eksku.m','w');fprintf(fidl,'function Zeksku = eksku(x); \n');fprintf(fidl,'Zeksku=%s; \n',eskuhasil);
© 2008 Perpustakaan Digital UIN Sunan Kalijaga Yogyakarta
206
fclose(fidl);guidata(hObject, handles);
x2=double(a+h:h:a+h*(N-1));
for k=1:N-1eksak(k)=vpa(feval('eksku',x2(k)));waitbar(k/N-1)end%{Exc=double(eksak)xn=a:h:b;xe=a+h:h:h*(N-1);%}xn=a:h:b;Ex=[ya,eksak,yb]';Exc=double(Ex);
fig5=openfig('Grafik.fig');handles=guihandles(fig5);guidata(fig5,handles);plot(xn,Exc,'mp-',xn,beda,'b^-',xn,temb,'rs-'),title('GrafikPenyelesaian Masalah Nilai Batas ');
grid;lg = legend('eksak','beda_hingga','tembakan',3);set(lg,'Interpreter','none')xlabel('Subinterval x(n)');ylabel('Hasil Penyelesaian y[x(n)]');close(hbh)close(warn)%}% --- Executes on button press in push_saveo.function push_saveo_Callback(hObject, eventdata, handles)get(hObject,'String')teks=get(handles.listbox1,'String');nteks=size(teks,1);
jawab=inputdlg('Nama file:','Simpan Hasil');if~isempty(jawab)
namafile=char(jawab);fid=fopen(namafile);if fid~=-1
jawab=questdlg('File dengan nama tersebut sudahada!','Peringatan','Timpa','Batal','Batal');
if strcmp(jawab,'Batal')%Break
elseend
endfid=fopen(namafile,'wt');k=0;for k=k+1:nteks;
fprintf(fid,'%s \n',teks{k});
© 2008 Perpustakaan Digital UIN Sunan Kalijaga Yogyakarta
207
endguidata(hObject, handles);fclose(fid);
end;
% --- Executes on button press in push_print.function push_print_Callback(hObject, eventdata, handles)jawab=inputdlg('Nama file:','Cetak');if~isempty(jawab)
namafile=char(jawab);fid=fopen(namafile);if fid~=-1
jawab=questdlg('File dengan nama tersebut sudahada!','Peringatan','Cetak','Batal','Batal');
if strcmp(jawab,'Batal')%Break
elseend
endfid=fopen('run.bat','wt');
fprintf(fid,' copy /b %s lpt1: \n',namafile); % Lx-800(Dot metrik)% fprintf(fid,' copy /b %s USB001: \n',namafile); (USB)% fprintf(fid,' copy /b %s File: \n',namafile);
% endguidata(hObject, handles);fclose(fid);
!run% print -f2 -dps 'Figure2.ps'% print -dps 'Hasil2'%namafile
%printdlg('-crossplatform',namafile);
end;
printdlg('-setup',namafile);
% --- Executes on button press in push_eksak.function push_eksak_Callback(hObject, eventdata, handles)%--------------------------------------------------------------------------RUN METODE EKSAKclc;hc1 = waitbar(0,'Proses penyelesaian secara eksak ...');warn=warndlg('Tunggu sebentar ... Jika penyelesaian EKSAK tidakmuncul di Figur METODE_BTM,... lihat Command Window MATLAB. Jikadi Command Window MATLAB ada tulisan Error, (in dsolve/IC) Theimplicit option is not available when giving InitialConditions,berarti MNB tidak bisa diselesaikan secara eksak, cobadengan metode BedaHingga / Tembakan','Perhatian');
get(hObject,'String')syms x;px=get(handles.edit_px,'String');handles.px=px;
© 2008 Perpustakaan Digital UIN Sunan Kalijaga Yogyakarta
208
px1=char(px);delete px.m;fid1=fopen('px.m','w');fprintf(fid1,'function y= f(x,y); \n');fprintf(fid1,'y= %s; ',px1);fclose(fid1);guidata(hObject, handles);
get(hObject,'String')syms x;qx=get(handles.edit_qx,'String');handles.qx=qx;qx1=char(qx);delete qx.m;fid1=fopen('qx.m','w');fprintf(fid1,'function y= f(x,y); \n');fprintf(fid1,'y= %s; ',qx1);fclose(fid1);guidata(hObject, handles);
get(hObject,'String')syms x;rx=get(handles.edit_rx,'String');handles.rx=rx;rx1=char(rx);delete rx.m;fid1=fopen('rx.m','w');fprintf(fid1,'function y= f(x,y); \n');fprintf(fid1,'y= %s; ',rx1);fclose(fid1);guidata(hObject, handles);
get(hObject,'String')syms x;pa=get(handles.edit_pa,'String');handles.pa=pa;pa1=char(pa);delete pa.m;fid1=fopen('pa.m','w');fprintf(fid1,'function y= f(x,y); \n');fprintf(fid1,'y= %s; ',pa1);fclose(fid1);guidata(hObject, handles);
get(hObject,'String')syms x;qa=get(handles.edit_qa,'String');handles.qa=qa;qa1=char(qa);delete qa.m;fid1=fopen('qa.m','w');fprintf(fid1,'function y= f(x,y); \n');fprintf(fid1,'y= %s; ',qa1);fclose(fid1);guidata(hObject, handles);
© 2008 Perpustakaan Digital UIN Sunan Kalijaga Yogyakarta
209
get(hObject,'String')syms x;ra=get(handles.edit_ra,'String');handles.ra=ra;ra1=char(ra);delete ra.m;fid1=fopen('ra.m','w');fprintf(fid1,'function y= f(x,y); \n');fprintf(fid1,'y= %s; ',ra1);fclose(fid1);guidata(hObject, handles);
px=get(handles.edit_px,'String');handles.px=px;qx=get(handles.edit_qx,'String');handles.qx=qx;rx=get(handles.edit_rx,'String');handles.rx=rx;
pa=get(handles.edit_pa,'String');handles.pa=pa;qa=get(handles.edit_qa,'String');handles.qa=qa;ra=get(handles.edit_ra,'String');handles.ra=ra;
% Run dari Call untuk ya, yb, a, b, dan Nya=str2num(get(handles.edit_ya,'String'));handles.ya=ya;yb=str2num(get(handles.edit_yb,'String'));handles.yb=yb;a=str2num(get(handles.edit_a,'String'));handles.a=a;b=str2num(get(handles.edit_b,'String'));handles.b=b;N=str2num(get(handles.edit_n,'String'));handles.N=N;
px1=handles.px;qx1=handles.qx;rx1=handles.rx;
pa1=handles.pa;qa1=handles.qa;ra1=handles.ra;
ya=handles.ya;yb=handles.yb;a=handles.a;b=handles.b;
if (a>=handles.b)errordlg(' Nilai a < b ','Awas !');
end
© 2008 Perpustakaan Digital UIN Sunan Kalijaga Yogyakarta
210
N=handles.N;
t0=clock;%------------------METODE EKSAKpx=get(handles.edit_px,'String');handles.px=px;qx=get(handles.edit_qx,'String');handles.qx=qx;rx=get(handles.edit_rx,'String');handles.rx=rx;
ya=num2str(get(handles.edit_ya,'String'));handles.ya=ya;yb=num2str(get(handles.edit_yb,'String'));handles.yb=yb;a=num2str(get(handles.edit_a,'String'));handles.a=a;b=num2str(get(handles.edit_b,'String'));handles.b=b;
syms xdelete eks.m;fidl=fopen('eks.m','w');fprintf(fidl,'function vv = eks(x); \n');fprintf(fidl,'vv=dsolve(''D2y=%s*Dy%s*y%s,y(%s)=%s,y(%s)=%s'',''x''); \n',px,qx,rx,a,ya,b,yb);fclose(fidl);guidata(hObject, handles);
a=str2num(get(handles.edit_a,'String'));handles.a=a;b=str2num(get(handles.edit_b,'String'));handles.b=b;
vv= eks(x );
h = (b-a)/N;x=a+h:h:a+h*(N-1);eks1=vpa(feval('eks',x));eskuhasil=char(eks1);
syms xdelete eksku.m;
fidl=fopen('eksku.m','w');fprintf(fidl,'function Zeksku = eksku(x); \n');fprintf(fidl,'Zeksku=%s; \n',eskuhasil);fclose(fidl);guidata(hObject, handles);
x2=a+h:h:a+h*(N-1);
for k=1:N-1
© 2008 Perpustakaan Digital UIN Sunan Kalijaga Yogyakarta
211
eksak(k)=vpa(feval('eksku',x2(k)));waitbar(k/N-1)end
Ex=[ya,eksak,yb]';Exc=double(Ex)
ya=str2num(get(handles.edit_ya,'String'));handles.ya=ya;yb=str2num(get(handles.edit_yb,'String'));handles.yb=yb;a=str2num(get(handles.edit_a,'String'));handles.a=a;b=str2num(get(handles.edit_b,'String'));handles.b=b;N=str2num(get(handles.edit_n,'String'));handles.N=N;
xn=[a,x2,b];
teks=[];teks{1}=sprintf('');teks{2}=sprintf('
Penyelesaian Numeris Masalah Nilai Batas');teks{3}=sprintf(' Pada
Persamaan Diferensial Orde Dua Berbasis Komputasi');teks{4}=sprintf(' Studi
Komparatif antara Metode Beda Hingga dan Metode Tembakan');
teks{5}=sprintf('**********************************************************************************************************************');teks{6}=sprintf('Persamaan : ');teks{7}=sprintf(' D2y = %s*Dy
%s*y %s',px1,qx1,rx1);teks{8}=sprintf('dengan');teks{9}=sprintf(' Koefisien p(x) = %s ',px1);
teks{10}=sprintf(' Koefisien q(x) = %s ',qx1);teks{11}=sprintf(' Koefisien r(x) = %s ',rx1);teks{12}=sprintf(' Syarat batas : ');teks{13}=sprintf(' y(a) = %5.2f ',ya);teks{14}=sprintf(' y(b) = %5.2f ',yb);teks{15}=sprintf(' Interval [a,b] :');teks{16}=sprintf(' a = %5.2f ',a);teks{17}=sprintf(' b = %5.2f ',b);teks{18}=sprintf(' Iterasi (N) = %5.2f ',N);teks{19}=sprintf(' Size (h) = %5.5f ',h);
teks{20}=sprintf(' ');% Tabel perbandingan eksak, beda hingga, tembakanteks{21}=sprintf(' ');teks{22}=sprintf(' Hasil penyelesaian secara analitis/ eksakadalah : ');
© 2008 Perpustakaan Digital UIN Sunan Kalijaga Yogyakarta
212
teks{23}=sprintf(' ------------------------------------------------------------------------------');teks{24}=sprintf(' | Iterasi | x(n) | yeksak | waktu |');teks{25}=sprintf(' ------------------------------------------------------------------------------');
k=0;for k=k+1:(N+1);
waitbar(k/N+1)tim=etime(clock,t0);
teks{25+k}=sprintf(' | %2.0f | %4.2f |%4.6f | %4.6f |' ,k-1,xn(k),Exc(k),tim);endteks{25+(N+2)}=sprintf(' ');close(hc1)close(warn)set(handles.listbox1,'String',teks);
% --- Executes on button press in push_bh.function push_bh_Callback(hObject, eventdata, handles)%--------------------------------------------------------------------------RUN METODE BEDA HINGGA%---------------------------------------Run dari Call untukkoefisienclc;get(hObject,'String')syms x;px=get(handles.edit_px,'String');handles.px=px;px1=char(px);delete px.m;fid1=fopen('px.m','w');fprintf(fid1,'function y= f(x,y); \n');fprintf(fid1,'y= %s; ',px1);fclose(fid1);guidata(hObject, handles);
get(hObject,'String')syms x;qx=get(handles.edit_qx,'String');handles.qx=qx;qx1=char(qx);delete qx.m;fid1=fopen('qx.m','w');fprintf(fid1,'function y= f(x,y); \n');fprintf(fid1,'y= %s; ',qx1);fclose(fid1);guidata(hObject, handles);
get(hObject,'String')syms x;rx=get(handles.edit_rx,'String');handles.rx=rx;rx1=char(rx);
© 2008 Perpustakaan Digital UIN Sunan Kalijaga Yogyakarta
213
delete rx.m;fid1=fopen('rx.m','w');fprintf(fid1,'function y= f(x,y); \n');fprintf(fid1,'y= %s; ',rx1);fclose(fid1);guidata(hObject, handles);
get(hObject,'String')syms x;pa=get(handles.edit_pa,'String');handles.pa=pa;pa1=char(pa);delete pa.m;fid1=fopen('pa.m','w');fprintf(fid1,'function y= f(x,y); \n');fprintf(fid1,'y= %s; ',pa1);fclose(fid1);guidata(hObject, handles);
get(hObject,'String')syms x;qa=get(handles.edit_qa,'String');handles.qa=qa;qa1=char(qa);delete qa.m;fid1=fopen('qa.m','w');fprintf(fid1,'function y= f(x,y); \n');fprintf(fid1,'y= %s; ',qa1);fclose(fid1);guidata(hObject, handles);
get(hObject,'String')syms x;ra=get(handles.edit_ra,'String');handles.ra=ra;ra1=char(ra);delete ra.m;fid1=fopen('ra.m','w');fprintf(fid1,'function y= f(x,y); \n');fprintf(fid1,'y= %s; ',ra1);fclose(fid1);guidata(hObject, handles);
px=get(handles.edit_px,'String');handles.px=px;qx=get(handles.edit_qx,'String');handles.qx=qx;rx=get(handles.edit_rx,'String');handles.rx=rx;
pa=get(handles.edit_pa,'String');handles.pa=pa;qa=get(handles.edit_qa,'String');handles.qa=qa;ra=get(handles.edit_ra,'String');
© 2008 Perpustakaan Digital UIN Sunan Kalijaga Yogyakarta
214
handles.ra=ra;
% Run dari Call untuk ya, yb, a, b, dan Nya=str2num(get(handles.edit_ya,'String'));handles.ya=ya;yb=str2num(get(handles.edit_yb,'String'));handles.yb=yb;a=str2num(get(handles.edit_a,'String'));handles.a=a;b=str2num(get(handles.edit_b,'String'));handles.b=b;N=str2num(get(handles.edit_n,'String'));handles.N=N;
px1=handles.px;qx1=handles.qx;rx1=handles.rx;
pa1=handles.pa;qa1=handles.qa;ra1=handles.ra;
ya=handles.ya;yb=handles.yb;a=handles.a;b=handles.b;
if (a>=handles.b)errordlg(' Nilai a < b ','Awas !');
endN=handles.N;
t0=clock;%{
% ------------FINITE DIFFERENCE METHOD ALTERNATIF 2digits(7)
T = zeros(1,N+1);y = zeros(1,N-1);Va = zeros(1,N-2);Vb = zeros(1,N-1);Vc = zeros(1,N-2);Vd = zeros(1,N-1);% Sub-intervalh = (b-a)/N;% Partisi Interval%x1=a+h:h:a+h*(N-1);x2=a+h:h:a+h*(N-1);
% Vektor konstan b dalam Ay=bVb(2:N-2) = vpa(h^2*feval('ra',x2(2:N-2)))Vb(1) = vpa(h^2*feval('ra',x2(1))-(1+h/2*feval('pa',x2(1)))*ya)
© 2008 Perpustakaan Digital UIN Sunan Kalijaga Yogyakarta
215
Vb(N-1)= vpa(h^2*feval('ra',x2(N-1))-(1-h/2*feval('pa',x2(N-1)))*yb)
% Main diagonal dalam vektor AVd(1:N-1) = vpa(-(2+h^2*feval('qa',x2(1:N-1))))
% Calculate the superdiagonal of Axa = x2(1,2:N-1);Va(2:N-1) = vpa(1-h/2*feval('pa',xa))
% Calculate the subdiagonal of Axc = x2(1,1:N-2);Vc(1:N-2) = vpa(1-h/2*feval('pa',xc(1:N-2)))
% Solve using trisysy= trisys(Va,Vd,Vc,Vb)T = [a,x2,b]y = [ya,y,yb]F = [T' y']
%}
% ------------FINITE DIFFERENCE METHOD ALTERNATIF 1
hbh = waitbar(0,'Proses penyelesaian metode beda hingga...');warn=warndlg('Tunggu sebentar ... Jika penyelesaian METODE BEDAHINGGA tidak muncul di Figur METODE_BTM,... lihat Command WindowMATLAB untuk diagnosa kesalahan. ','Perhatian');
h = (b-a)/N;x2=a+h:h:a+h*(N-1);p(1:N-1)=vpa(feval('pa',x2));q(1:N-1)=vpa(feval('qa',x2));r(1:N-1)=vpa(feval('ra',x2));%Subdiagonal pada matrik Ada(1,2:N-1)=vpa(1+h/2*p(1,2:N-1));%Maindiagonalpada matrik Add(1:N-1)=vpa(-(2+h^2*q(1:N-1)));%Superdiagonal pada matrik Adc(1:N-2)=vpa(1-h/2*p(1:N-2));% bentuk matriknyaAa= diag(da(1,2:N-1),-1);Ad= diag(dd);Ac= diag(dc,1);% penjumlahan matrikA=Ad+Ac+Aa;% matrik bbb=zeros(N-1,1);bb(1)=h^2*r(1) - (1+h/2*p(1))*ya;bb(N-1)=h^2*r(N-1) - (1-h/2*p(N-1))*yb;bb(2:N-2)=h^2*r(2:N-2)';%hasil penyelesaian MNBs=A\bb;y=[ya;s;yb];beda=double(y)
© 2008 Perpustakaan Digital UIN Sunan Kalijaga Yogyakarta
216
ya=str2num(get(handles.edit_ya,'String'));handles.ya=ya;yb=str2num(get(handles.edit_yb,'String'));handles.yb=yb;a=str2num(get(handles.edit_a,'String'));handles.a=a;b=str2num(get(handles.edit_b,'String'));handles.b=b;N=str2num(get(handles.edit_n,'String'));handles.N=N;
xn=[a,x2,b];
teks=[];teks{1}=sprintf('');teks{2}=sprintf('
Penyelesaian Numeris Masalah Nilai Batas');teks{3}=sprintf(' Pada
Persamaan Diferensial Orde Dua Berbasis Komputasi');teks{4}=sprintf(' Studi
Komparatif antara Metode Beda Hingga dan Metode Tembakan');
teks{5}=sprintf('**********************************************************************************************************************');teks{6}=sprintf('Persamaan : ');teks{7}=sprintf(' D2y = %s*Dy
%s*y %s',px1,qx1,rx1);teks{8}=sprintf('dengan');teks{9}=sprintf(' Koefisien p(x) = %s ',px1);
teks{10}=sprintf(' Koefisien q(x) = %s ',qx1);teks{11}=sprintf(' Koefisien r(x) = %s ',rx1);teks{12}=sprintf(' Syarat batas : ');teks{13}=sprintf(' y(a) = %5.2f ',ya);teks{14}=sprintf(' y(b) = %5.2f ',yb);teks{15}=sprintf(' Interval [a,b] :');teks{16}=sprintf(' a = %5.2f ',a);teks{17}=sprintf(' b = %5.2f ',b);teks{18}=sprintf(' Iterasi (N) = %5.2f ',N);teks{19}=sprintf(' Size (h) = %5.5f ',h);
teks{20}=sprintf(' ');% Tabel perbandingan eksak, beda hingga, tembakanteks{21}=sprintf(' ');teks{22}=sprintf(' Hasil penyelesaian metode beda hinggaadalah : ');teks{23}=sprintf(' ------------------------------------------------------------------------------');teks{24}=sprintf(' | Iterasi | x(n) | y bedahingga | waktu |');teks{25}=sprintf(' ------------------------------------------------------------------------------');
© 2008 Perpustakaan Digital UIN Sunan Kalijaga Yogyakarta
217
k=0;for k=k+1:(N+1);
waitbar(k/N+1)tim=etime(clock,t0);
teks{25+k}=sprintf(' | %2.0f | %4.2f |%4.6f | %4.6f |' ,k-1,xn(k),beda(k),tim);endteks{25+(N+2)}=sprintf(' ');close(hbh)close(warn)set(handles.listbox1,'String',teks);
% --- Executes on button press in push_temb.function push_temb_Callback(hObject, eventdata, handles)%--------------------------------------------------------------------------RUN METODE TEMBAKAN%---------------------------------------Run dari Call untukkoefisienclc;ht = waitbar(0,'Proses penyelesaian metode tembakan...');warn=warndlg('Tunggu sebentar ... Jika penyelesaian METODE BEDAHINGGA tidak muncul di Figur METODE_BTM,... lihat Command WindowMATLAB untuk diagnosa kesalahan. ','Perhatian');
get(hObject,'String')syms x;px=get(handles.edit_px,'String');handles.px=px;px1=char(px);delete px.m;fid1=fopen('px.m','w');fprintf(fid1,'function y= f(x,y); \n');fprintf(fid1,'y= %s; ',px1);fclose(fid1);guidata(hObject, handles);
get(hObject,'String')syms x;qx=get(handles.edit_qx,'String');handles.qx=qx;qx1=char(qx);delete qx.m;fid1=fopen('qx.m','w');fprintf(fid1,'function y= f(x,y); \n');fprintf(fid1,'y= %s; ',qx1);fclose(fid1);guidata(hObject, handles);
get(hObject,'String')syms x;rx=get(handles.edit_rx,'String');handles.rx=rx;rx1=char(rx);delete rx.m;
© 2008 Perpustakaan Digital UIN Sunan Kalijaga Yogyakarta
218
fid1=fopen('rx.m','w');fprintf(fid1,'function y= f(x,y); \n');fprintf(fid1,'y= %s; ',rx1);fclose(fid1);guidata(hObject, handles);
get(hObject,'String')syms x;pa=get(handles.edit_pa,'String');handles.pa=pa;pa1=char(pa);delete pa.m;fid1=fopen('pa.m','w');fprintf(fid1,'function y= f(x,y); \n');fprintf(fid1,'y= %s; ',pa1);fclose(fid1);guidata(hObject, handles);
get(hObject,'String')syms x;qa=get(handles.edit_qa,'String');handles.qa=qa;qa1=char(qa);delete qa.m;fid1=fopen('qa.m','w');fprintf(fid1,'function y= f(x,y); \n');fprintf(fid1,'y= %s; ',qa1);fclose(fid1);guidata(hObject, handles);
get(hObject,'String')syms x;ra=get(handles.edit_ra,'String');handles.ra=ra;ra1=char(ra);delete ra.m;fid1=fopen('ra.m','w');fprintf(fid1,'function y= f(x,y); \n');fprintf(fid1,'y= %s; ',ra1);fclose(fid1);guidata(hObject, handles);
px=get(handles.edit_px,'String');handles.px=px;qx=get(handles.edit_qx,'String');handles.qx=qx;rx=get(handles.edit_rx,'String');handles.rx=rx;
pa=get(handles.edit_pa,'String');handles.pa=pa;qa=get(handles.edit_qa,'String');handles.qa=qa;ra=get(handles.edit_ra,'String');handles.ra=ra;
© 2008 Perpustakaan Digital UIN Sunan Kalijaga Yogyakarta
219
% Run dari Call untuk ya, yb, a, b, dan Nya=str2num(get(handles.edit_ya,'String'));handles.ya=ya;yb=str2num(get(handles.edit_yb,'String'));handles.yb=yb;a=str2num(get(handles.edit_a,'String'));handles.a=a;b=str2num(get(handles.edit_b,'String'));handles.b=b;N=str2num(get(handles.edit_n,'String'));handles.N=N;
px1=handles.px;qx1=handles.qx;rx1=handles.rx;
pa1=handles.pa;qa1=handles.qa;ra1=handles.ra;
ya=handles.ya;yb=handles.yb;a=handles.a;b=handles.b;
if (a>=handles.b)errordlg(' Nilai a < b ','Awas !');
endN=handles.N;
t0=clock;%--------------- SHOOTING METHOD
get(hObject,'String')px2=char(handles.px);qx2=char(handles.qx);rx2=char(handles.rx);delete F1.m;fid1=fopen('F1.m','w');fprintf(fid1,'function Z= F1(x,Z); \n');fprintf(fid1,'X=Z(1);Y=Z(2); \n');fprintf(fid1,'Z=[ Y, %s*Y%s*X%s ]; \n',px2,qx2,rx2);fclose(fid1);delete F2.m;fid1=fopen('F2.m','w');fprintf(fid1,'function Z= F2(x,Z); \n');fprintf(fid1,'X=Z(1);Y=Z(2); \n');fprintf(fid1,'Z=[ Y, %s*Y%s*X ]; \n',px2,qx2);fclose(fid1);guidata(hObject, handles);
digits(7)% Menghitung F1Za = [ya,0];
© 2008 Perpustakaan Digital UIN Sunan Kalijaga Yogyakarta
220
h = (b-a)/NTs = zeros(1,N+1);Z1 = zeros(N+1,length(Za));Ts = a:h:b;Z(1,:)=vpa(Za);
for j=1:Nwaitbar(j/N);
k1=vpa(h*(feval('F1',Ts(j),Z(j,:))));k2=vpa(h*(feval('F1',Ts(j)+h/2,Z(j,:)+k1/2)));k3=vpa(h*(feval('F1',Ts(j)+h/2,Z(j,:)+k2/2)));k4=vpa(h*(feval('F1',Ts(j)+h,Z(j,:)+k3)));Z(j+1,:)=vpa(Z(j,:)+(k1+2*k2+2*k3+k4)/6);
endU = vpa(Z(:,1));
% Menghitung F2Zb = [0,1];h = (b-a)/N;Ts = zeros(1,N+1);Z2 = zeros(N+1,length(Zb));Ts = a:h:b;Z(1,:)=vpa(Zb);
for j=1:Nwaitbar(j/N)
k1=vpa(h*(feval('F2',Ts(j),Z(j,:))));k2=vpa(h*(feval('F2',Ts(j)+h/2,Z(j,:)+k1/2)));k3=vpa(h*(feval('F2',Ts(j)+h/2,Z(j,:)+k2/2)));k4=vpa(h*(feval('F2',Ts(j)+h,Z(j,:)+k3)));Z(j+1,:)=vpa(Z(j,:)+(k1+2*k2+2*k3+k4)/6);
endV = vpa(Z(:,1));W =vpa((yb-U(N+1))*V/V(N+1));
% HASIL MNB DENGAN METODE TEMBAKANll = vpa(U+(yb-U(N+1))*V/V(N+1));L= [Ts' ll];temb=double(ll)
ya=str2num(get(handles.edit_ya,'String'));handles.ya=ya;yb=str2num(get(handles.edit_yb,'String'));handles.yb=yb;a=str2num(get(handles.edit_a,'String'));handles.a=a;b=str2num(get(handles.edit_b,'String'));handles.b=b;N=str2num(get(handles.edit_n,'String'));handles.N=N;x2=a+h:h:a+h*(N-1);xn=[a,x2,b];
© 2008 Perpustakaan Digital UIN Sunan Kalijaga Yogyakarta
221
teks=[];teks{1}=sprintf('');teks{2}=sprintf('
Penyelesaian Numeris Masalah Nilai Batas');teks{3}=sprintf(' Pada
Persamaan Diferensial Orde Dua Berbasis Komputasi');teks{4}=sprintf(' Studi
Komparatif antara Metode Beda Hingga dan Metode Tembakan');
teks{5}=sprintf('**********************************************************************************************************************');teks{6}=sprintf('Persamaan : ');teks{7}=sprintf(' D2y = %s*Dy
%s*y %s',px1,qx1,rx1);teks{8}=sprintf('dengan');teks{9}=sprintf(' Koefisien p(x) = %s ',px1);
teks{10}=sprintf(' Koefisien q(x) = %s ',qx1);teks{11}=sprintf(' Koefisien r(x) = %s ',rx1);teks{12}=sprintf(' Syarat batas : ');teks{13}=sprintf(' y(a) = %5.2f ',ya);teks{14}=sprintf(' y(b) = %5.2f ',yb);teks{15}=sprintf(' Interval [a,b] :');teks{16}=sprintf(' a = %5.2f ',a);teks{17}=sprintf(' b = %5.2f ',b);teks{18}=sprintf(' Iterasi (N) = %5.2f ',N);teks{19}=sprintf(' Size (h) = %5.5f ',h);
teks{20}=sprintf(' ');% Tabel perbandingan eksak, beda hingga, tembakanteks{21}=sprintf(' ');teks{22}=sprintf(' Hasil penyelesaian metode tembakan adalah: ');teks{23}=sprintf(' -------------------------------------------------------------------------------');teks{24}=sprintf(' | Iterasi | x(n) | ytembakan | waktu |');teks{25}=sprintf(' -------------------------------------------------------------------------------');
k=0;for k=k+1:(N+1);
waitbar(k/N+1)tim=etime(clock,t0);
teks{25+k}=sprintf(' | %2.0f | %4.2f |%4.6f | %4.6f |' ,k-1,xn(k),temb(k),tim);endteks{25+(N+2)}=sprintf(' ');
close(ht)close(warn)set(handles.listbox1,'String',teks);
% --- Executes on button press in push_allmethod.
© 2008 Perpustakaan Digital UIN Sunan Kalijaga Yogyakarta
222
function push_allmethod_Callback(hObject, eventdata, handles)clc;%--------------------------------------------------------------------------RUN ALL METHODS%---------------------------------------Run dari Call untukkoefisienwarn=warndlg('Tunggu sebentar ... Jika penyelesaian ALL METHODStidak muncul di Figur METODE_BTM,... lihat Command Window MATLAB.Jika di Command Window MATLAB ada tulisan Error, (in dsolve/IC)The implicit option is not available when giving InitialConditions,berarti MNB tidak bisa diselesaikan secara eksak, cobadengan metode BedaHingga / Tembakan','Perhatian');
get(hObject,'String')syms x;px=get(handles.edit_px,'String');handles.px=px;px1=char(px);delete px.m;fid1=fopen('px.m','w');fprintf(fid1,'function y= f(x,y); \n');fprintf(fid1,'y= %s; ',px1);fclose(fid1);guidata(hObject, handles);
get(hObject,'String')syms x;qx=get(handles.edit_qx,'String');handles.qx=qx;qx1=char(qx);delete qx.m;fid1=fopen('qx.m','w');fprintf(fid1,'function y= f(x,y); \n');fprintf(fid1,'y= %s; ',qx1);fclose(fid1);guidata(hObject, handles);
get(hObject,'String')syms x;rx=get(handles.edit_rx,'String');handles.rx=rx;rx1=char(rx);delete rx.m;fid1=fopen('rx.m','w');fprintf(fid1,'function y= f(x,y); \n');fprintf(fid1,'y= %s; ',rx1);fclose(fid1);guidata(hObject, handles);
get(hObject,'String')syms x;pa=get(handles.edit_pa,'String');handles.pa=pa;pa1=char(pa);
© 2008 Perpustakaan Digital UIN Sunan Kalijaga Yogyakarta
223
delete pa.m;fid1=fopen('pa.m','w');fprintf(fid1,'function y= f(x,y); \n');fprintf(fid1,'y= %s; ',pa1);fclose(fid1);guidata(hObject, handles);
get(hObject,'String')syms x;qa=get(handles.edit_qa,'String');handles.qa=qa;qa1=char(qa);delete qa.m;fid1=fopen('qa.m','w');fprintf(fid1,'function y= f(x,y); \n');fprintf(fid1,'y= %s; ',qa1);fclose(fid1);guidata(hObject, handles);
get(hObject,'String')syms x;ra=get(handles.edit_ra,'String');handles.ra=ra;ra1=char(ra);delete ra.m;fid1=fopen('ra.m','w');fprintf(fid1,'function y= f(x,y); \n');fprintf(fid1,'y= %s; ',ra1);fclose(fid1);guidata(hObject, handles);
px=get(handles.edit_px,'String');handles.px=px;qx=get(handles.edit_qx,'String');handles.qx=qx;rx=get(handles.edit_rx,'String');handles.rx=rx;
pa=get(handles.edit_pa,'String');handles.pa=pa;qa=get(handles.edit_qa,'String');handles.qa=qa;ra=get(handles.edit_ra,'String');handles.ra=ra;
% Run dari Call untuk ya, yb, a, b, dan Nya=str2num(get(handles.edit_ya,'String'));handles.ya=ya;yb=str2num(get(handles.edit_yb,'String'));handles.yb=yb;a=str2num(get(handles.edit_a,'String'));handles.a=a;b=str2num(get(handles.edit_b,'String'));handles.b=b;N=str2num(get(handles.edit_n,'String'));
© 2008 Perpustakaan Digital UIN Sunan Kalijaga Yogyakarta
224
handles.N=N;
px1=handles.px;qx1=handles.qx;rx1=handles.rx;
pa1=handles.pa;qa1=handles.qa;ra1=handles.ra;
ya=handles.ya;yb=handles.yb;a=handles.a;b=handles.b;
if (a>=handles.b)errordlg(' Nilai a < b ','Awas !');
endN=handles.N;
t0=clock;%{
% ------------FINITE DIFFERENCE METHOD ALTERNATIF 2digits(7)
T = zeros(1,N+1);y = zeros(1,N-1);Va = zeros(1,N-2);Vb = zeros(1,N-1);Vc = zeros(1,N-2);Vd = zeros(1,N-1);% Sub-intervalh = (b-a)/N;% Partisi Interval%x1=a+h:h:a+h*(N-1);x2=a+h:h:a+h*(N-1);
% Vektor konstan b dalam Ay=bVb(2:N-2) = vpa(h^2*feval('ra',x2(2:N-2)))Vb(1) = vpa(h^2*feval('ra',x2(1))-(1+h/2*feval('pa',x2(1)))*ya)Vb(N-1)= vpa(h^2*feval('ra',x2(N-1))-(1-h/2*feval('pa',x2(N-1)))*yb)
% Main diagonal dalam vektor AVd(1:N-1) = vpa(-(2+h^2*feval('qa',x2(1:N-1))))
% Calculate the superdiagonal of Axa = x2(1,2:N-1);Va(2:N-1) = vpa(1-h/2*feval('pa',xa))
% Calculate the subdiagonal of Axc = x2(1,1:N-2);Vc(1:N-2) = vpa(1-h/2*feval('pa',xc(1:N-2)))
© 2008 Perpustakaan Digital UIN Sunan Kalijaga Yogyakarta
225
% Solve using trisysy= trisys(Va,Vd,Vc,Vb)T = [a,x2,b]y = [ya,y,yb]F = [T' y']
%}
% ------------FINITE DIFFERENCE METHOD ALTERNATIF 1
hbh = waitbar(0,'Proses penyelesaian metode beda hingga...');
h = (b-a)/N;x2=a+h:h:a+h*(N-1);p(1:N-1)=vpa(feval('pa',x2));q(1:N-1)=vpa(feval('qa',x2));r(1:N-1)=vpa(feval('ra',x2));%Subdiagonal pada matrik Ada(1,2:N-1)=vpa(1+h/2*p(1,2:N-1));%Maindiagonalpada matrik Add(1:N-1)=vpa(-(2+h^2*q(1:N-1)));%Superdiagonal pada matrik Adc(1:N-2)=vpa(1-h/2*p(1:N-2));% bentuk matriknyaAa= diag(da(1,2:N-1),-1);Ad= diag(dd);Ac= diag(dc,1);% penjumlahan matrikA=Ad+Ac+Aa;% matrik bbb=zeros(N-1,1);bb(1)=h^2*r(1) - (1+h/2*p(1))*ya;bb(N-1)=h^2*r(N-1) - (1-h/2*p(N-1))*yb;bb(2:N-2)=h^2*r(2:N-2)';%hasil penyelesaian MNBs=A\bb;y=[ya;s;yb];beda=double(y)
%--------------- SHOOTING METHOD
get(hObject,'String')px2=char(handles.px);qx2=char(handles.qx);rx2=char(handles.rx);delete F1.m;fid1=fopen('F1.m','w');fprintf(fid1,'function Z= F1(x,Z); \n');fprintf(fid1,'X=Z(1);Y=Z(2); \n');fprintf(fid1,'Z=[ Y, %s*Y%s*X%s ]; \n',px2,qx2,rx2);fclose(fid1);delete F2.m;fid1=fopen('F2.m','w');fprintf(fid1,'function Z= F2(x,Z); \n');
© 2008 Perpustakaan Digital UIN Sunan Kalijaga Yogyakarta
226
fprintf(fid1,'X=Z(1);Y=Z(2); \n');fprintf(fid1,'Z=[ Y, %s*Y%s*X ]; \n',px2,qx2);fclose(fid1);guidata(hObject, handles);
digits(7)% Menghitung F1Za = [ya,0];h = (b-a)/N;Ts = zeros(1,N+1);Z1 = zeros(N+1,length(Za));Ts = a:h:b;Z(1,:)=vpa(Za);
for j=1:Nwaitbar(j/N);
k1=vpa(h*(feval('F1',Ts(j),Z(j,:))));k2=vpa(h*(feval('F1',Ts(j)+h/2,Z(j,:)+k1/2)));k3=vpa(h*(feval('F1',Ts(j)+h/2,Z(j,:)+k2/2)));k4=vpa(h*(feval('F1',Ts(j)+h,Z(j,:)+k3)));Z(j+1,:)=vpa(Z(j,:)+(k1+2*k2+2*k3+k4)/6);
endU = vpa(Z(:,1));close(hbh);
% Menghitung F2Zb = [0,1];h = (b-a)/N;Ts = zeros(1,N+1);Z2 = zeros(N+1,length(Zb));Ts = a:h:b;Z(1,:)=vpa(Zb);
ht = waitbar(0,'Proses penyelesaian metode tembakan...');for j=1:Nwaitbar(j/N)
k1=vpa(h*(feval('F2',Ts(j),Z(j,:))));k2=vpa(h*(feval('F2',Ts(j)+h/2,Z(j,:)+k1/2)));k3=vpa(h*(feval('F2',Ts(j)+h/2,Z(j,:)+k2/2)));k4=vpa(h*(feval('F2',Ts(j)+h,Z(j,:)+k3)));Z(j+1,:)=vpa(Z(j,:)+(k1+2*k2+2*k3+k4)/6);
endV = vpa(Z(:,1));W =vpa((yb-U(N+1))*V/V(N+1));
% HASIL MNB DENGAN METODE TEMBAKANll = vpa(U+(yb-U(N+1))*V/V(N+1));L= [Ts' ll];temb=double(ll)close(ht)
banding=[beda,temb]
he = waitbar(0,'Proses penyelesaian secara analitis ...');
© 2008 Perpustakaan Digital UIN Sunan Kalijaga Yogyakarta
227
px=get(handles.edit_px,'String');handles.px=px;qx=get(handles.edit_qx,'String');handles.qx=qx;rx=get(handles.edit_rx,'String');handles.rx=rx;
ya=num2str(get(handles.edit_ya,'String'));handles.ya=ya;yb=num2str(get(handles.edit_yb,'String'));handles.yb=yb;a=num2str(get(handles.edit_a,'String'));handles.a=a;b=num2str(get(handles.edit_b,'String'));handles.b=b;
%------------------METODE EKSAK
syms xdelete eks.m;fidl=fopen('eks.m','w');fprintf(fidl,'function vv = eks(x); \n');fprintf(fidl,'vv=dsolve(''D2y=%s*Dy%s*y%s,y(%s)=%s,y(%s)=%s'',''x''); \n',px,qx,rx,a,ya,b,yb);fclose(fidl);guidata(hObject, handles);
a=str2num(get(handles.edit_a,'String'));handles.a=a;b=str2num(get(handles.edit_b,'String'));handles.b=b;
vv= eks(x )h = (b-a)/Nx=a+h:h:a+h*(N-1)eks1=vpa(feval('eks',x))eskuhasil=char(eks1)
syms xdelete eksku.m;fidl=fopen('eksku.m','w');fprintf(fidl,'function Zeksku = eksku(x); \n');fprintf(fidl,'Zeksku=%s; \n',eskuhasil);fclose(fidl);guidata(hObject, handles);
x2=a+h:h:a+h*(N-1)
for k=1:N-1eksak(k)=vpa(feval('eksku',x2(k)))waitbar(k/N-1)end
Ex=[ya,eksak,yb]'
© 2008 Perpustakaan Digital UIN Sunan Kalijaga Yogyakarta
228
Exc=double(Ex)close(he)
ya=str2num(get(handles.edit_ya,'String'));handles.ya=ya;yb=str2num(get(handles.edit_yb,'String'));handles.yb=yb;a=str2num(get(handles.edit_a,'String'));handles.a=a;b=str2num(get(handles.edit_b,'String'));handles.b=b;N=str2num(get(handles.edit_n,'String'));handles.N=N;
xn=[a,x2,b]
teks=[];teks{1}=sprintf('');teks{2}=sprintf('
Penyelesaian Numeris Masalah Nilai Batas');teks{3}=sprintf(' Pada
Persamaan Diferensial Orde Dua Berbasis Komputasi');teks{4}=sprintf(' Studi
Komparatif antara Metode Beda Hingga dan Metode Tembakan');
teks{5}=sprintf('**********************************************************************************************************************');teks{6}=sprintf('Persamaan : ');teks{7}=sprintf(' D2y = %s*Dy
%s*y %s',px1,qx1,rx1);teks{8}=sprintf('dengan');teks{9}=sprintf(' Koefisien p(x) = %s ',px1);
teks{10}=sprintf(' Koefisien q(x) = %s ',qx1);teks{11}=sprintf(' Koefisien r(x) = %s ',rx1);teks{12}=sprintf(' Syarat batas : ');teks{13}=sprintf(' y(a) = %5.2f ',ya);teks{14}=sprintf(' y(b) = %5.2f ',yb);teks{15}=sprintf(' Interval [a,b] :');teks{16}=sprintf(' a = %5.2f ',a);teks{17}=sprintf(' b = %5.2f ',b);teks{18}=sprintf(' Iterasi (N) = %5.2f ',N);teks{19}=sprintf(' Size (h) = %5.5f ',h);
teks{20}=sprintf(' ');% Tabel perbandingan eksak, beda hingga, tembakanteks{21}=sprintf(' ');teks{22}=sprintf(' a. Tabel nilai eksak, beda hingga dantembakan : ');teks{23}=sprintf(' -------------------------------------------------------------------------------------------------------------------------------');
© 2008 Perpustakaan Digital UIN Sunan Kalijaga Yogyakarta
229
teks{24}=sprintf(' | Iterasi | x(n) | yeksak | y beda hingga | y tembakan |waktu |');teks{25}=sprintf(' -------------------------------------------------------------------------------------------------------------------------------');
k=0;hc1 = waitbar(0,'Proses penyelesaian secara analitis ...');for k=k+1:(N+1);
waitbar(k/N+1)tim=etime(clock,t0);
teks{25+k}=sprintf(' | %2.0f | %4.2f |%4.6f | %4.6f | %4.6f |%4.6f | ' ,k-1,xn(k),Exc(k),beda(k),temb(k),tim);endteks{25+(N+2)}=sprintf(' ');
% Tabel perbandingan error beda hingga dan tembakanteks{25+(N+3)}=sprintf(' ');teks{25+(N+4)}=sprintf(' b. Tabel nilai error mutlak dan errorrelatif terhadap nilai eksak : ');teks{25+(N+5)}=sprintf(' -----------------------------------------------------------------------------------------------------------------------------------------------------------------------');teks{25+(N+6)}=sprintf(' | || Error mutlak |Error relatif ||');teks{25+(N+7)}=sprintf(' | Iterasi | x(n) |beda hingga | tembakan | beda hingga| tembakan | waktu |');teks{25+(N+8)}=sprintf(' -----------------------------------------------------------------------------------------------------------------------------------------------------------------------');
close(hc1)
k=0;
hc2 = waitbar(0,'Proses penyelesaian secara analitis ...');for k=k+1:(N+1);waitbar(k/N+1)tim=etime(clock,t0);
teks{25+(N+8)+k}=sprintf(' | %2.0f | %4.2f| %4.6f | %4.6f | %4.6f| %4.6f | %4.6f |' ,(k-1),xn(k),abs(Exc(k)-beda(k)),abs(Exc(k)-temb(k)),abs(Exc(k)-beda(k))/abs(Exc(k)),abs(Exc(k)-temb(k))/abs(Exc(k)),tim);end
teks{25+(N+8)+k+1}=sprintf(' ');close(hc2)close(warn)
© 2008 Perpustakaan Digital UIN Sunan Kalijaga Yogyakarta
230
set(handles.listbox1,'String',teks);%}
% --- Executes on button press in push_help.function push_help_Callback(hObject, eventdata, handles)fig_help=openfig('Help.fig');handles=guihandles(fig_help);guidata(fig_help,handles);
% --- Executes on button press in push_exit.function push_exit_Callback(hObject, eventdata, handles)pilih=questdlg('Keluar Program BHT?','Keluar','Ya','Tidak','Ya');if strcmp(pilih,'Tidak')
return;enddelete(handles.figure1)
% --- Executes on selection change in listbox1.function listbox1_Callback(hObject, eventdata, handles)
% --- Executes during object creation, after setting allproperties.function listbox1_CreateFcn(hObject, eventdata, handles)if ispc && isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');end
© 2008 Perpustakaan Digital UIN Sunan Kalijaga Yogyakarta
231
CURRICULUM VITAE
A. Data Diri
a. Nama Lengkap : M. Kamari
b. Jenis Kelamin : Laki-laki
c. Tempat/Tgl. Lahir : Jepara, 8 Mei 1984
d. Kewarganegaraan : Indonesia
e. Agama : Islam
f. Anak ke : Dua
g. Status dalam keluarga : Anak Kandung
h. Golongan darah : B
i. Alamat asal : Bawu Ngemplak RT 18/04 Batealit Jepara
j. Alamat Yogyakarta : Jl. Nyi Pembayun 21 Karang Prenggan Kotegede
k. No.HP : 085292076084
B. Data Keluarga
a. Nama Orang Tua
- Ayah : Sarito (alm)
- Ibu : Suratmi
b. Pekerjaan Orang Tua
- Ayah : -
- Ibu : Ibu rumah tangga
C. Riwayat Pendidikan
a. SDN Bawu IV Batealit Jepara : Lulus tahun 1997
b. MTsN Bawu Batealit Jepara : Lulus tahun 2000
c. MAN Bawu Jepara : Lulus tahun 2003
d. S1 Pend. Matematika UIN Sunan Kalijaga Yogyakarta : Lulus tahun 2008
© 2008 Perpustakaan Digital UIN Sunan Kalijaga Yogyakarta