90
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

PENYELESAIAN NUMERIS MASALAH NILAI BATAS

  • Upload
    others

  • View
    17

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 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

SAINTEK UIN 2008
Assalamu'alaikum ... Ikhwah fillah Hadaniyallahu waiyyakum Rahimanii warahimakumullah ... Semoga penelitian sederhana ini bermanfaat bagi Antum yang seneng ma otak-atik angka sejak SD ato malah sejak TK (he..he..apa g bosan?). Tapi jangan lupa, Matematika q-ta bela-belain sejak TK bahkan g kebayang ketika UAN ato UAS q-ta bela-belain sampai g tidur semalaman hanya untuk sebuah nilai buatan manusia tetapi al-Qur'an sebagai pegangan q-ta yang mengaku muslim, q-ta nomor sekiankan, baca bentar capek, males, ngantuk, udah gtu bacanya gratul-gratul dsb...(capek dech...). Q-ta hafal bener rumus luas dan volume berbagai benda bahkan sampai 'pahlawan' Matematikanya juga, tapi berapa juz-kah hafalan "Surat Cinta Sepanjang Masa" Q-ta?jangan salah paham lho... maksudnya tu al-Qur'an bukan surat cinta penuh tipu daya dan muslihat untuk menjerat lawan jenisnya dengan dalih cinta sejati bahkan dalih islami sekalipun. wallahu a'lam bishshowab astagfirullahal'adhiim wal afwu minkum wa ma'akum an-najah Wassalamu'alaikum ... kritik/saran: [email protected]
Microsoft
Sticky Note
MigrationPending set by Microsoft
SAINTEK UIN
Page 2: PENYELESAIAN NUMERIS MASALAH NILAI BATAS

© 2008 Perpustakaan Digital UIN Sunan Kalijaga Yogyakarta

Page 3: PENYELESAIAN NUMERIS MASALAH NILAI BATAS

© 2008 Perpustakaan Digital UIN Sunan Kalijaga Yogyakarta

Page 4: PENYELESAIAN NUMERIS MASALAH NILAI BATAS

© 2008 Perpustakaan Digital UIN Sunan Kalijaga Yogyakarta

Page 5: PENYELESAIAN NUMERIS MASALAH NILAI BATAS

© 2008 Perpustakaan Digital UIN Sunan Kalijaga Yogyakarta

Page 6: PENYELESAIAN NUMERIS MASALAH NILAI BATAS

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

Page 7: PENYELESAIAN NUMERIS MASALAH NILAI BATAS

PERSEMBAHAN

Karya ini kupersembahkan kepada

Kampus Tercinta Universitas Islam Negeri Sunan Kalijaga Yogyakarta

vii© 2008 Perpustakaan Digital UIN Sunan Kalijaga Yogyakarta

Page 8: PENYELESAIAN NUMERIS MASALAH NILAI BATAS

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

Page 9: PENYELESAIAN NUMERIS MASALAH NILAI BATAS

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

Page 10: PENYELESAIAN NUMERIS MASALAH NILAI BATAS

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

Page 11: PENYELESAIAN NUMERIS MASALAH NILAI BATAS

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

Page 12: PENYELESAIAN NUMERIS MASALAH NILAI BATAS

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

Page 13: PENYELESAIAN NUMERIS MASALAH NILAI BATAS

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

Page 14: PENYELESAIAN NUMERIS MASALAH NILAI BATAS

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

Page 15: PENYELESAIAN NUMERIS MASALAH NILAI BATAS

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

Page 16: PENYELESAIAN NUMERIS MASALAH NILAI BATAS

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

Page 17: PENYELESAIAN NUMERIS MASALAH NILAI BATAS

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

Page 18: PENYELESAIAN NUMERIS MASALAH NILAI BATAS

DAFTAR LAMPIRAN

1. Listing Program Aplikasi ………………………………………………………… 176 178 2. Listing Metode BTM ……………………………………………………………..

xviii© 2008 Perpustakaan Digital UIN Sunan Kalijaga Yogyakarta

Page 19: 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)

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

Page 20: PENYELESAIAN NUMERIS MASALAH NILAI BATAS

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

Page 21: PENYELESAIAN NUMERIS MASALAH NILAI BATAS

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

Page 22: PENYELESAIAN NUMERIS MASALAH NILAI BATAS

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

Page 23: PENYELESAIAN NUMERIS MASALAH NILAI BATAS

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

Page 24: PENYELESAIAN NUMERIS MASALAH NILAI BATAS

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

Page 25: PENYELESAIAN NUMERIS MASALAH NILAI BATAS

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

Page 26: PENYELESAIAN NUMERIS MASALAH NILAI BATAS

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

Page 27: PENYELESAIAN NUMERIS MASALAH NILAI BATAS

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

Page 28: PENYELESAIAN NUMERIS MASALAH NILAI BATAS

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

Page 29: PENYELESAIAN NUMERIS MASALAH NILAI BATAS

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

Page 30: PENYELESAIAN NUMERIS MASALAH NILAI BATAS

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

Page 31: PENYELESAIAN NUMERIS MASALAH NILAI BATAS

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

Page 32: PENYELESAIAN NUMERIS MASALAH NILAI BATAS

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

Page 33: PENYELESAIAN NUMERIS MASALAH NILAI BATAS

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

Page 34: PENYELESAIAN NUMERIS MASALAH NILAI BATAS

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

Page 35: PENYELESAIAN NUMERIS MASALAH NILAI BATAS

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

Page 36: PENYELESAIAN NUMERIS MASALAH NILAI BATAS

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

Page 37: PENYELESAIAN NUMERIS MASALAH NILAI BATAS

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

Page 38: PENYELESAIAN NUMERIS MASALAH NILAI BATAS

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

Page 39: PENYELESAIAN NUMERIS MASALAH NILAI BATAS

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

Page 40: PENYELESAIAN NUMERIS MASALAH NILAI BATAS

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

Page 41: PENYELESAIAN NUMERIS MASALAH NILAI BATAS

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

Page 42: PENYELESAIAN NUMERIS MASALAH NILAI BATAS

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

Page 43: PENYELESAIAN NUMERIS MASALAH NILAI BATAS

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

Page 44: PENYELESAIAN NUMERIS MASALAH NILAI BATAS

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

Page 45: PENYELESAIAN NUMERIS MASALAH NILAI BATAS

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

Page 46: PENYELESAIAN NUMERIS MASALAH NILAI BATAS

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

Page 47: PENYELESAIAN NUMERIS MASALAH NILAI BATAS

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

Page 48: PENYELESAIAN NUMERIS MASALAH NILAI BATAS

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

Page 49: PENYELESAIAN NUMERIS MASALAH NILAI BATAS

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

Page 50: PENYELESAIAN NUMERIS MASALAH NILAI BATAS

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

Page 51: PENYELESAIAN NUMERIS MASALAH NILAI BATAS

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

Page 52: PENYELESAIAN NUMERIS MASALAH NILAI BATAS

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

Page 53: PENYELESAIAN NUMERIS MASALAH NILAI BATAS

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

Page 54: PENYELESAIAN NUMERIS MASALAH NILAI BATAS

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

Page 55: PENYELESAIAN NUMERIS MASALAH NILAI BATAS

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

Page 56: PENYELESAIAN NUMERIS MASALAH NILAI BATAS

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

Page 57: PENYELESAIAN NUMERIS MASALAH NILAI BATAS

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

Page 58: PENYELESAIAN NUMERIS MASALAH NILAI BATAS

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

Page 59: PENYELESAIAN NUMERIS MASALAH NILAI BATAS

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

Page 60: PENYELESAIAN NUMERIS MASALAH NILAI BATAS

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

Page 61: PENYELESAIAN NUMERIS MASALAH NILAI BATAS

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

Page 62: PENYELESAIAN NUMERIS MASALAH NILAI BATAS

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

Page 63: PENYELESAIAN NUMERIS MASALAH NILAI BATAS

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

Page 64: PENYELESAIAN NUMERIS MASALAH NILAI BATAS

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

Page 65: PENYELESAIAN NUMERIS MASALAH NILAI BATAS

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

Page 66: PENYELESAIAN NUMERIS MASALAH NILAI BATAS

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

Page 67: PENYELESAIAN NUMERIS MASALAH NILAI BATAS

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

Page 68: PENYELESAIAN NUMERIS MASALAH NILAI BATAS

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

Page 69: PENYELESAIAN NUMERIS MASALAH NILAI BATAS

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

Page 70: PENYELESAIAN NUMERIS MASALAH NILAI BATAS

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

Page 71: PENYELESAIAN NUMERIS MASALAH NILAI BATAS

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

Page 72: PENYELESAIAN NUMERIS MASALAH NILAI BATAS

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

Page 73: PENYELESAIAN NUMERIS MASALAH NILAI BATAS

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

Page 74: PENYELESAIAN NUMERIS MASALAH NILAI BATAS

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

Page 75: PENYELESAIAN NUMERIS MASALAH NILAI BATAS

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

Page 76: PENYELESAIAN NUMERIS MASALAH NILAI BATAS

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

Page 77: PENYELESAIAN NUMERIS MASALAH NILAI BATAS

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

Page 78: PENYELESAIAN NUMERIS MASALAH NILAI BATAS

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

Page 79: PENYELESAIAN NUMERIS MASALAH NILAI BATAS

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

Page 80: PENYELESAIAN NUMERIS MASALAH NILAI BATAS

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

Page 81: PENYELESAIAN NUMERIS MASALAH NILAI BATAS

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

Page 82: PENYELESAIAN NUMERIS MASALAH NILAI BATAS

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

Page 83: PENYELESAIAN NUMERIS MASALAH NILAI BATAS

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

Page 84: PENYELESAIAN NUMERIS MASALAH NILAI BATAS

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

Page 85: PENYELESAIAN NUMERIS MASALAH NILAI BATAS

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

Page 86: PENYELESAIAN NUMERIS MASALAH NILAI BATAS

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

Page 87: PENYELESAIAN NUMERIS MASALAH NILAI BATAS

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

Page 88: PENYELESAIAN NUMERIS MASALAH NILAI BATAS

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

Page 89: PENYELESAIAN NUMERIS MASALAH NILAI BATAS

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

Page 90: PENYELESAIAN NUMERIS MASALAH NILAI BATAS

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