ANALISA DAN PERANCANGAN PROGRAM
3.1 Algoritma Penyelesaian
Pada umumnya suatu persamaan tak linier sukar diselesaikan secara analitis sehingga diperlukan perhitungan secara numerik untuk mencari penyelesaian persamaan-persamaan tak linier ini. Dalam menentukan penyelesaian suatu persamaan secara numerik ini dapat timbul suatu masalah yaitu masalah konvergensi dan ketunggalan solusi yang diperoleh. Bila kita menggunakan suatu metode tertentu akan menyelesaikan suatu persamaan integral tak linier secara numerik, apakah hasilnya memang penyelesaian yang diharapkan. Bila tidak, syarat apakah yang harus dipenuhi agar dapat dihasilkan solusi yang diharapkan.
Pada bab II telah dibahas bahwa persamaan integral Volterra nonlinier:
∫
+ = x dt t y t x K x g x y 0 )) ( ; , ( ) ( ) ( (3.1)mempunyai solusi dan ternyata solusinya tunggal. Sehingga dengan memperhatikan syarat-syarat dan teori-teori yang telah ditinjau pada bab-bab sebelumnya, penyelesaian secara numerik untuk persamaan integral (3.1) dapat dilakukan dan penyelesaian yang diperoleh memang benar penyelesaian yang diinginkan persamaan integral (3.2.1)
Metode yang akan dipergunakan dalam menyelesaikan persamaan integral (3.1) adalah metode iterasi dan metode Volterra-Runge-Kutta.
3.1.1 Metode Iterasi
∫
+ = x dt t y t x K x g x y 0 )) ( ; , ( ) ( ) ( (3.2)dengan fungsi K(x,t ; y(t)) mempunyai turunan pertama.
Misalkan Y(x) adalah hampiran untuk y(x) pada titik x. Bila kita bagi selang di atas menjadi selang bagian yang panjangnya h, maka pada (3.2) dapat dilakukan perhitungan solusi dengan metode Euler, yaitu dengan memberi nilai awal: y0 = Y0 = g(0) Y1 = g1 + h K(x1,x0 ; Y0) Y2 = g2 + h K(x2,x0 ; Y0) + h K(x2,x1 ; Y1) Bentuk umumnya:
∑
= + + + = + r s s s r r r g h K x x Y Y 0 1 1 1 ( , ; ) (3.3) dengan:Yr adalah hampiran untuk y(xr) gr = g(xr)
xr = x0 + r h
Metode Euler (3.3) di atas dapat dimodifikasikan lagi, tentunya dengan harapan galat yang akan terjadi lebih kecil. Mula-mula kita mempunyai persamaan integral:
∫
+ + + + = + 1 0 1 1 1 ( , ; ( )) r x r r r g K x x y x dx y (3.4)Perhitungan nilai integral dilakukan dengan metode trapesium yaitu:
1 2 1 0 1 0 2 1 1 ) ( + =
∫
+ = +∑
+ r x r s s h f f h f h dt t f r (3.5) Nilai hampiran untuk (3.4) adalah:) ; , ( 1 1 1 2 1 1 1 1 + + + + + + = r + r + r r r r g U hK x x Y Y (3.6) dengan: ⎭ ⎬ ⎫ ⎩ ⎨ ⎧ + =
∑
= + + + r s s s r r r h K x x Y K x x Y U 1 1 0 0 1 2 1 1 ( , ; ) ( , ; ) (3.7)Metode (3.6) dapat dimodifikasikan lagi menjadi metode iterasi, yaitu dengan cara menghampiri nilai Yr+1 beberapa kali sampai memenuhi persyaratan yang ditentukan sebelumnya.
Nilai Yr+1 pada (3.6) dapat didekati secara eksplisit dengan menggunakan iterasi, yaitu: ) ; , ( ( ) 1 1 1 2 1 1 1 ) 1 ( 1 p r r r r r p r g U hK x x Y Y++ = + + + + + + + (p=0, 1, ..., n) (3.8)
dengan terkaan awalnya:
) ; , ( ( ) 1 2 1 1 1 ) 0 ( 1 n r r r r r r g U hK x x Y Y+ = + + + + + (3.9)
Nilai Y1(0) diperoleh dari metode Euler, yaitu: ) ; , ( 1 0 0 1 ) 0 ( 1 g hK x x Y Y = + (3.10)
Agar diperoleh hasil yang lebih baik pada metode iterasi (3.8) ini, diperlukan nilai h yang kecil dan banyak kali iterasi diperbanyak. Pada metode iterasi ini kekonvergenannya relatif lambat, sehingga diperlukan suatu
ekstrapolasi yang berfungsi untuk mempercepat kekonvergenan, agar biaya penggunaan komputer dapat dikurangi.
Ekstrapolasi yang akan digunakan pada tulisan ini adalah ekstrapolasi Aitken yang memerlukan 3 nilai pemulai Yr+1, yaitu:
Yr+1(0), Yr+1(1), dan Yr+1(2) Kemudian dihitung:
(
)
) 0 ( 1 ) 1 ( 1 ) 2 ( 1 2 ) 1 ( 1 ) 2 ( 1 ) 2 ( 1 1 2 + + + + + + + + − − − = r r r r r r r Y Y Y Y Y Y Y (3.11)Nilai Yr+1 yang diperoleh ini akan menjadi nilai Yr+1(0) pada iterasi berikutnya.
Algoritma penyelesaian dengan metode iterasi: 1. Tentukan nilai x0, x dan Y0 = g(x0)
2. Bagi selang pengintegralan atas N subselang yang sama, sehingga
N x x h= − 0
3. Tentukan terkaan awal: Y1(0) = g1 + h K(x1,x0;Y0) 4. Untuk r = 1, 2, ..., N; xr = x0 + r h, lalu:
(i) Jika r = 1, hitung: ) ; , ( 1 0 0 2 1 1 hK x x Y U =
Kemudian lanjutkan ke langkah 5. (ii) Jika r ≠ 1, hitung:
⎭ ⎬ ⎫ ⎩ ⎨ ⎧ + =
∑
− = 1 1 0 0 2 1 ( , ; ) ( , ; ) r s s s r r r h K x x Y K x x Yakhir U 5. Untuk p = 0, 1, ...,n hitung: (i) ( , ; ( )) 2 1 ) 1 ( p r r r r r p r g U hK x x Y Y + = + +(ii) Periksa apakah ( +1) − (p) <ε?
r p
r Y
Y
Bila ‘Ya’, beri nama Yr(p+1) menjadi Yrakhir, kemudian lanjutkan ke langkah 6.
Bila ‘Tidak’, kembali ke langkah 5.(i) untuk p selanjutnya. 6. Lakukan ekstrapolasi Aitken:
(
)
) 2 ( ) 1 ( ) ( 2 ) 1 ( ) ( ) ( 2 − − − + − − − = p r p r p r p r p r p r r Y Y Y Y Y Y Y7. Kembali ke langkah 4 untuk r selanjutnya. 3.1.2 Metode Volterra-Runge-Kutta
Tinjau kembali persamaan integral Volterra nonlinier:
∫
+ = x a dt t y t x K x g x y( ) ( ) ( , ; ( )) (3.12) Untuk: x ∈ I : [a,b]K kontinu pada S x Rn, S={(x,s)|a ≤ s ≤ x ≤ b} ditetapkan:
xn = a + n.h n = 0, 1, ..., N h = (b-a)/N
yn = y(xn)
Sehingga persamaan (3.12) dapat kita tuliskan:
∫
+ = x x ds s y s x K x g x y 0 )) ( ; , ( ) ( ) ( * 0 Dimana:)) ( ; , ( ) ( ) ( )) ( ; , ( 0 0 * s y s x K x x x g x g s y s x K + − − =
Tinjau kembali metode Bel’tyukov (metode BRK):
∑
= + + + + = m j n j j n j n ij i n n n i F x ch h a K x e h x c h Y Y 1 ) ( * ) ( ( ) ( , ; ) (i = 1, 2, ..., m)∑
= + + = = + + + + m i n i i n i n i n n n m n Y F x h h bK x eh x ch Y y 1 ) ( * ) ( 1 1 ( ) ( , ; ) (3.13)Metode Runge-Kutta untuk (3.13) dituliskan dalam bentuk:
∑
= + + + = m j j j ij ij i g x h a K x d h x c h Y Y 1 0 0 * 0) ( , ; ) ( (i = 1, 2, ..., m)∑
= + + + = m i i i i i i g x h bK x eh x ch Y y 1 0 0 * 0) ( , ; ) ( (3.14)Dengan mengasumsikan dij ≠ 0, ei ≠ 0, maka (3.14) dapat dituliskan dalam:
∑
∑
= = + + + − + + = m j j j ij ij m j ij ij ij i g x d h g x h a K x d h x c h Y d a x g Y 1 0 0 0 1 0 0) ( ) ( ) ( , ; ) ( (i = 1, 2, ..., m)∑
∑
= = + + + − + + = m i i i i i m i i i i i g x eh g x h bK x eh x ch Y e b x g y 1 0 0 0 1 0 0) ( ) ( ) ( , ; ) (Bila dipilih dij = eij (tipe Bel’tyukov), akan diperoleh:
⎟ ⎟ ⎠ ⎞ ⎜ ⎜ ⎝ ⎛ + + + + − + =
∑
= m j j j ij i i i i i L e a x g h c x h e x K e h x g h e x g L 1 0 0 0 0 0 ) ( ) , ; ( ) ( (i = 1, 2, ..., m)∑
= + = m i i i i i L e b x g y 1 0) (Sebagai contoh adalah metode BRK untuk m=3:
(
, ; ( ))
) ( ) ( 0 0 0 0 0 1 g x h g x hK x h x g x L = + − + +(
21 1)
0 2 1 0 2 1 0 2 1 0 2 1 0 2 g(x h) g(x ) hK x h,x h;g(x ) L L = + − + + + +(
0 0 32 0 92 1 94 2)
0 0 3 g(x h) g(x ) hK x h,x h;g(x ) L L L = + − + + + + + ) 3 ( ) ( 14 1 3 0 L L x g yi = + +Metode BRK dengan m = 3 di atas yang akan dipergunakan dalam tulisan ini.
Algoritma penyelesaian dengan metode Volterra-Runge-Kutta:
1. Tentukan titik x0, x kemudian bagi selang itu menjadi N subselang sehingga diperoleh: h = (x – x0)/N xi = x0 + i.h 2. Tentukan Y0 = g(x0) 3. Untuk i = 0, 1, ..., N-1 Hitung:
(
i i i)
i i h g x hK x h x Y x g L1 = ( + )− ( )+ + , ;(
21 1)
2 1 2 1 2 1 2 1 2 g(x h) g(x ) hK x h,x h;Y L L = i + − i + i + i + i +(
32 92 1 94 2)
3 g(x h) g(x ) hK x h,x h;Y L L L = i + − i + i + i + i + + ) 3 ( 1 3 4 1 1 Y L L Yi+ = i + + 3.2 Perancangan Program 3.2.1 Tahapan-Tahapan ProgramProgram ini terdiri dari tiga bagian utama, yaitu tahap input, tahap proses, dan tahap output. Tahap input dapat dibagi lagi menjadi dua jenis, yaitu input persamaan dan input nilai x, x0, N dan ε (untuk metode iterasi). Tahap proses
juga dapat dibagi lagi menjadi dua jenis, yaitu proses iterasi dan proses VRK. Pada tahap output, hasilnya adalah solusi numerik yang berupa angka, dan lamanya tahap proses.
3.2.1.1 Tahap Input
Pada tahap ini, user diminta untuk memasukkan persamaan integral Volterra nonlinier yang akan dihitung. Sesuai dengan bentuk umum persamaan integral Volterra nonlinier, maka input persamaan dibagi menjadi input persamaan g(x) dan input persamaan K(x,t;y(t)). Input persamaan terbatas pada lima jenis, yaitu trigonometri (fungsi sinus, cosinus, tangen, cosinus, secan, dan cosecan), polinomial, logaritma berbasis 10 (log n), eksponensial (en), dan operasi matematika dasar (penjumlahan, pengurangan, pembagian, perkalian, dan perpangkatan). Agar persamaan ini dapat diproses, maka diperlukan juga
input nilai x, x0, N dan nilai ε. Nilai x adalah nilai fungsi yang ingin dicari. Nilai x0 adalah nilai x awal. Nilai N adalah banyaknya perulangan yang dilakukan dalam menghitung nilai fungsi yang diinginkan. Nilai ε adalah nilai selisih maksimum antara Yr(p+1) dan Yr(p) sebagai syarat penghenti iterasi.
3.2.1.2 Tahap Proses
Tahap proses terbagi menjadi dua, yaitu proses iterasi dan proses VRK. Proses iterasi adalah proses penghitungan fungsi dengan menggunakan metode iterasi. Dan proses VRK adalah proses penghitungan fungsi dengan menggunakan metode Volterra-Runge-Kutta.
3.2.1.3 Tahap Output
Output yang dihasilkan dari tahap proses adalah berupa angka dan waktu. Angka yang dihasilkan merupakan nilai dari fungsi yang dicari. Sedangkan,
waktu merupakan lamanya proses penghitungan itu dilakukan. Pada modul perbandingan, juga dihasilkan perbedaan waktu di antara proses VRK dan proses iterasi.
3.2.2 Diagram Alir Modul
Berikut ini adalah diagram alir dari program aplikasi yang dibuat oleh penulis.
3.2.2.1 Diagram Alir Modul Proses Iterasi
Gambar 3.1 Gambar Diagram Alir Modul Proses Iterasi Input x0, x, N, ε START N x x h= − 0 , r = 1, Y0 = g(x0) Y1(0) = g1 + hK(x1,x0;Y0) r <= N Ya r = 1 Tidak Ya ; , ( 1 0 0 2 1 1 hK x x Y U = ⎭ ⎬ ⎫ ⎩ ⎨ ⎧ + =
∑
− = 1 1 0 0 2 1 ( , ; ) ( , ; ) r s s s r r r h K x x Y K x x Y akhir U ) 0 ( ) 1 ( ) 2 ( ) 1 ( ) 2 ( ) 2 ( ) 0 ( 1 2 − − − − − − + + − − − = p r p r p r p r p r p r r Y Y Y Y Y Y Y Tidak STOP Print ‘y(x) = ‘, Yr-1 ) ; , ( ( ) 2 1 ) 1 ( p r r r r r p r g U hK x x Y Y + = + + , p=0 p = p + 1 ε < − +1) ( ) ( p r p r Y Y Tidak Yrakhir = Yr(p+1) Ya r = r + 1 xr = x0 + r.h3.2.2.2 Diagram Alir Modul Proses VRK
Gambar 3.2 Diagram Alir Modul Proses VRK 3.2.3 Struktur Menu
Gambar 3.3 Struktur Menu dari program Input x0, x, N START N x x h= − 0 , i = 0, Y0 = g(x0) i < N
(
i i i)
i i h g x hK x h x Y x g L1 = ( + )− ( )+ + , ;(
21 21 21 1)
2 1 2 1 2 g(x h) g(x ) hK x h,x h;Y L L = i + − i + i + i + i +(
32 92 1 94 2)
3 g(x h) g(x) hK x h,x h;Y L L L = i + − i + i + i + i + + ) 3 ( 1 3 4 1 1 Y L L Yi+ = i + + STOP Tidak Ya i = i + 1 Print “y(x) = “, yN-1 Menu UtamaInput Output Keluar
Metode Iterasi Metode VRK Perbandingan
Keterangan
Aturan Penulisan Rumus About
3.2.4 Diagram STD (State Transition Diagram) 3.2.4.1 Diagram STD Form Main
Gambar 3.4 Diagram STD Form Main FormMain
Lingkungan Windows
Klik Menu “Keluar” Tutup aplikasi FormInput
Form About Klik Menu “About”
Tampilkan FormAbout Klik tombol “Kembali”
Tampilkan FormMain
Form Aturan
Klik Menu “Aturan Penulisan Rumus” Tampilkan FormRules
Klik tombol “OK” Tampilkan FormMain
Klik Menu “Input” Tampilkan FormInput
Klik submenu “Metode Iterasi” Tampilkan FormOutput Klik submenu “Perbandingan”
Tampilkan FormOutput Klik button “Kembali”
Tampilkan FormMain
Klik submenu “Metode VRK” Tampilkan FormOutput
Form Output
Klik tombol “OK” Tampilkan FormMain Run ‘volterra.exe’ Tampilkan FormMain
3.2.4.2 Diagram STD Form Input
Gambar 3.5 Diagram STD Form Input
3.2.4.3 Diagram STD Form Output
Gambar 3.6 Diagram STD Form Output FormOutput
Klik tombol “Hapus Layar” Hapus semua textbox dan memo FormMain
Klik tombol “Kembali” Tampilkan FormMain
Klik tombol “Hitung” Hitung persamaan dan
tampilkan di layar
Klik submenu “Metode Iterasi” Tampilkan FormOutput
Klik tombol “Hapus Output” Hapus memo
Klik submenu “Perbandingan” Tampilkan FormOutput Klik submenu “Metode VRK”
Tampilkan FormOutput
FormInput
Klik tombol “Hapus Layar” Hapus semua textbox FormMain
Klik tombol “Kembali” Tampilkan FormMain
Klik Tombol “OK” Masukkan persamaan dan
tampilkan FormMain
Klik Menu “Input” Tampilkan FormInput
3.2.4.4 Diagram STD Form Rules
Gambar 3.7 Diagram STD Form Rules
3.2.4.5 Diagram STD Form About
Gambar 3.8 Diagram STD Form About FormAbout
FormMain
Klik tombol “OK” Tampilkan FormMain Klik submenu “About”
Tampilkan FormAbout
FormRules FormMain
Klik tombol “OK” Tampilkan FormMain Klik submenu “Aturan Penulisan Rumus”
3.3 Rancangan Layar Tampilan 3.3.1 Rancangan Layar Form Main
Gambar 3.9 Rancangan Layar FormMain dengan tampilan submenu Output
Pada form ini terdapat sebuah menu bar untuk mengakses ke seluruh form yang terdapat dalam program ini. Form-form tersebut antara lain form input, form output,
form rules, dan form about. Pada awal program, menu output belum dapat diakses
karena belum ada persamaan yang dimasukkan. Pada menu input, user membuka form
Gambar 3.10 Rancangan Layar FormMain dengan tampilan submenu Keterangan
Pada menu output terdapat 3 pilihan submenu. Submenu manapun yang dipilih
user akan membuka form output untuk melihat hasil perhitungan dari proses iterasi atau
proses VRK.
Pada menu keterangan terdapat submenu “Aturan Penulisan Rumus” dan
submenu “About”. Submenu “Aturan Penulisan Rumus” akan membuka form rules yang
memberikan informasi mengenai rumus-rumus yang dapat diproses pada program ini.
Submenu “About” akan membuka form about yang memberikan informasi mengenai
3.3.2 Rancangan Layar Form Input
Gambar 3.11 Rancangan Layar form Input
Pada form ini, user memasukkan persamaan integral Volterra. Sesuai dengan bentuk umum persamaan integral Volterra nonlinier, maka input persamaan dibagi menjadi dua bagian, yaitu g(x) dan K(x,t ; y(t)). Pada form ini terdapat tombol “OK”, tombol “Hapus Layar”, tombol “Kembali ke Menu Utama”, textbox g(x), dan textbox K(x,t ; y(t)). Tombol “OK” digunakan untuk memasukkan persamaan yang tertulis pada textbox g(x) dan textbox K(x,t ; y(t)) agar dapat digunakan dalam program ini. Tombol “Hapus Layar” berfungsi menghapus text pada textbox g(x) dan textbox K(x,t ; y(t)). Tombol “Kembali ke Menu Utama” berfungsi untuk kembali ke layar menu utama.
3.3.3 Rancangan Layar Form Output
Pada menu output terdapat submenu “Metode VRK”, submenu “Metode Iterasi”, dan submenu “Perbandingan”. Ketiga submenu tersebut membuka form
output yang sama, bedanya terletak pada judul form dan input yang diminta.
Gambar 3.12 Rancangan Layar Form Output
Judul default untuk form ini adalah “Solusi dengan Metode Volterra-Runge-Kutta”. Judul form ini akan berubah sesuai dengan submenu output yang dipilih. Apabila dipilih submenu “Metode Iterasi”, maka judulnya akan berubah menjadi “Solusi dengan Metode Iterasi”. Apabila dipilih submenu “Perbandingan”, maka judulnya akan berubah menjadi “Perbandingan Metode
VRK dengan Metode Iterasi”. Apabila dipilih submenu “Metode VRK”, maka judulnya akan berubah menjadi “Solusi dengan Metode Volterra-Runge-Kutta”.
Pada form ini, user diminta untuk memasukkan nilai x0, x dan N. Hal ini berlaku untuk submenu “Metode VRK”. Untuk submenu “Metode Iterasi” dan
submenu “Perbandingan” ditambahkan permintaan input e. x0 adalah nilai awal
persamaan. x adalah nilai fungsi yang akan dihitung. Nilai N adalah banyaknya perulangan yang akan dilakukan dalam menghitung fungsi yang diinginkan. Nilai e adalah selisih nilai fungsi yang berdekatan agar dapat diterima. Pada form ini terdapat tombol “Hitung”, tombol “Hapus Output”, tombol “Hapus Layar”, dan tombol “Kembali”. Tombol “Hitung” berfungsi memasukkan semua input-an, kemudian melakukan kalkulasi fungsi dengan proses sesuai dengan submenu yang dipilih. Hasil kalkulasi akan ditampilkan pada memo. Kalkulasi yang dihasilkan adalah nilai fungsi hasil proses dan waktu yang diperlukan untuk menyelesaikan proses tersebut. Tombol “Hapus Output” berfungsi menghapus
memo tampilan output. Tombol “Hapus Layar” berfungsi menghapus layar,
termasuk semua textbox dan memo. Tombol “Kembali” berfungsi untuk kembali ke menu utama.
3.3.4 Rancangan Layar Menu Keterangan
Pada menu keterangan terdapat submenu “Aturan Penulisan Rumus” yang akan menampilkan form rules dan submenu “About” yang akan menampilkan
3.3.4.1 Rancangan Layar Form Rules
Gambar 3.13 Rancangan Layar Form Rules
Pada form ini ditampilkan penjelasan singkat mengenai rumus-rumus apa saja yang dapat diproses dalam program ini, yaitu trignonometri, polinomial, logaritma, eksponen, dan operasi lainnya, seperti perpangkatan, pembagian, perkalian, pertambahan, dan pengurangan.
3.3.4.2 Rancangan Layar Form About
Gambar 3.11 Rancangan Layar Form About
Pada form ini ditampilkan keterangan singkat dari program seperti judul, mahasiswa yang membuat, dosen yang membimbing, dan sebagainya.