• Tidak ada hasil yang ditemukan

PENGOPTIMUMAN FUNGSI KUADRATIK DENGAN METODE CONJUGATE GRADIENT DAN PENERAPANNYA MENGGUNAKAN APLIKASI ANDROID IMAM SHALAHUDDIN

N/A
N/A
Protected

Academic year: 2021

Membagikan "PENGOPTIMUMAN FUNGSI KUADRATIK DENGAN METODE CONJUGATE GRADIENT DAN PENERAPANNYA MENGGUNAKAN APLIKASI ANDROID IMAM SHALAHUDDIN"

Copied!
49
0
0

Teks penuh

(1)

PENGOPTIMUMAN FUNGSI KUADRATIK DENGAN METODE CONJUGATE GRADIENT DAN

PENERAPANNYA MENGGUNAKAN APLIKASI ANDROID

IMAM SHALAHUDDIN

DEPARTEMEN MATEMATIKA

FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM INSTITUT PERTANIAN BOGOR

BOGOR 2016

(2)
(3)

PERNYATAAN MENGENAI SKRIPSI DAN

SUMBER INFORMASI SERTA PELIMPAHAN HAK CIPTA

Dengan ini saya menyatakan bahwa skripsi berjudul Pengoptimuman Fungsi Kuadratik dengan Metode Conjugate Gradient dan Penerapannya Menggunakan Aplikasi Android adalah benar karya saya dengan arahan dari komisi pembimbing dan belum diajukan dalam bentuk apa pun kepada perguruan tinggi mana pun.

Sumber informasi yang berasal atau dikutip dari karya yang diterbitkan maupun tidak diterbitkan dari penulis lain telah disebutkan dalam teks dan dicantumkan dalam Daftar Pustaka di bagian akhir skripsi ini.

Dengan ini saya melimpahkan hak cipta dari karya tulis saya kepada Institut Pertanian Bogor.

Bogor, Januari 2016

Imam Shalahuddin NIM G54110053

(4)

ABSTRAK

IMAM SHALAHUDDIN. Pengoptimuman Fungsi Kuadratik dengan Metode Conjugate Gradient dan Penerapannya Menggunakan Aplikasi Android.

Dibimbing oleh BIB PARUHUM SILALAHI dan SISWANDI.

Pengoptimuman tanpa kendala adalah pencarian nilai terbaik (maksimum atau minimum) dari suatu fungsi tanpa ada batasan terhadap variabel keputusan.

Salah satu metode numerik yang digunakan untuk menyelesaikan masalah pengoptimuman tanpa kendala adalah metode conjugate gradient. Keistimewaan dari metode ini adalah arah pencarian yang saling conjugate. Modifikasi metode ini terdapat pada pendefinisian arah pencarian yang berbeda-beda seperti pada metode Hestenes-Stiefel, Polak-Ribiere-Polyak, Dai-Yuan, dan Fletcher-Reeves.

Karya ilmiah ini merekonstruksi modifikasi arah pencarian metode conjugate gradient kemudian melakukan perbandingan banyaknya iterasi untuk semua modifikasi dengan mengunakan aplikasi android. Perangkat lunak yang digunakan untuk membuat aplikasi android adalah Android Studio. Salah satu hasil komputasi yang diperoleh menunjukkan bahwa modifikasi metode conjugate gradient Hestenes-Stiefel memiliki iterasi lebih sedikit dibandingkan dengan modifikasi lainnya.

Kata kunci: Android Studio, Conjugate gradient, Pengoptimuman

ABSTRACT

IMAM SHALAHUDDIN. Optimization of the Quadratic Function Using Conjugate Gradient Method and Its Application Based on Android Platform.

Supervised by BIB PARUHUM SILALAHI and SISWANDI.

Unconstrained optimization is a search for the best value of a function, either maximum or minimun, without any constraints on decision variables. One of the methods that used for solving the unconstrained optimization numerically is the so-called conjugate gradient method. The important characteristic of this method is the search direction that conjugates each other. The modification of this method lies in the differences of the definition of the search direction, as employed by Hestenes-Stiefel, Polak-Ribiere-Polyak, Dai-Yuan, and Fletcher- Reeves methods. This work reconstructs the search direction modifications of conjugate gradient method and compares the number of iterations for all modified methods by using android application. The software that is utilized to create the applications on android based operating system is Android Studio. One of the results indicated that Hestenes-Stiefel method provides less iterations compared to the other methods.

Keywords: Android Studio, Conjugate gradient, Optimization

(5)

Skripsi

sebagai salah satu syarat untuk memperoleh gelar Sarjana Sains

pada

Departemen Matematika

DEPARTEMEN MATEMATIKA

FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM INSTITUT PERTANIAN BOGOR

BOGOR 2016

PENGOPTIMUMAN FUNGSI KUADRATIK DENGAN METODE CONJUGATE GRADIENT DAN

PENERAPANNYA MENGGUNAKAN APLIKASI ANDROID

IMAM SHALAHUDDIN

(6)
(7)

Judul Skripsi : Pengoptimuman Fungsi Kuadratik dengan Metode Conjugate Gradient dan Penerapannya Menggunakan Aplikasi Android Nama : Imam Shalahuddin

NIM : G54110053

Disetujui oleh

Dr Ir Bib Paruhum Silalahi, MKom Pembimbing I

Drs Siswandi, MSi Pembimbing II

Diketahui oleh

Dr Toni Bakhtiar, MSc Ketua Departemen

Tanggal Lulus:

(8)

PRAKATA

Puji dan syukur penulis panjatkan ke hadirat Allah SWT atas segala nikmat, rahmat, dan karunia-Nya sehingga penulis dapat menyelesaikan karya ilmiah ini. Tema yang dipilih adalah Riset Operasi dengan judul Pengoptimuman Fungsi Kuadratik dengan Metode Conjugate Gradient dan Penerapannya Menggunakan Aplikasi Android.

Terima kasih penulis ucapkan kepada Dr Ir Bib Paruhum Silalahi, MKom selaku dosen pembimbing I, Drs Siswandi, MSi selaku dosen pembimbing II, dan Dra Farida Hanum, MSi selaku dosen penguji yang telah memberikan saran dan masukan demi kesempurnaan karya ilmiah ini. Ungkapan terima kasih juga kepada Abi, Ummi, Ica, Ayu dan Syifa atas support dalam keluarga, serta terima kasih kepada Tikah, Faza, Dinar, Aisyah, Ria, Yaya, Intan, Baim, Niken, Alfi, Firi, Deva, Fakhri, seluruh mahasiswa Departemen Matematika angkatan 47, 48, 49, dan 50 serta teman-teman sekalian di luar Departemen Matematika baik di dalam Institut Pertanian Bogor maupun di luar Institut Pertanian Bogor atas kritik, saran dan doanya selama pembuatan karya ilmiah ini.

Semoga karya ilmiah ini dapat bermanfaat bagi dunia ilmu pengetahuan khususnya Matematika dan dapat menjadi inspirasi bagi penelitian selanjutnya.

Bogor, Januari 2016

Imam Shalahuddin

(9)

DAFTAR ISI

DAFTAR TABEL viii

DAFTAR GAMBAR viii

DAFTAR LAMPIRAN viii

PENDAHULUAN 1

Latar Belakang 1

Tujuan Penelitian 2

TINJAUAN PUSTAKA 2

HASIL DAN PEMBAHASAN 2

Metode Conjugate Gradient 6

Contoh Pembuatan Aplikasi Penyelesaian Metode

Conjugate Gradient HS 3 variabel Berbasiskan Android 10

Algoritme Conjugate Gradient 15

Hasil Komputasi Modifikasi Metode Conjugate Gradient

dengan Aplikasi Android 16

Contoh Perhitungan Metode Conjugate Gradient

Hestenes-Stiefel (HS) 2 Variabel 18

SIMPULAN DAN SARAN 21

Simpulan 21

Saran 22

DAFTAR PUSTAKA 22

LAMPIRAN 23

RIWAYAT HIDUP 39

(10)

DAFTAR TABEL

1 Kasus untuk fungsi dua variabel menggunakan aplikasi android 16

2 Kasus untuk fungsi tiga variabel menggunakan aplikasi android 16

3 Kasus untuk fungsi empat variabel menggunakan aplikasi android 17

4 Kasus untuk fungsi lima variabel menggunakan aplikasi android 17

DAFTAR GAMBAR

1 Jendela nama aplikasi android 10

2 Jendela minimum Software Development Kit (SDK) android studio 11

3 Jendela Activity to Mobile 11

4 Penamaan file aplikasi android 12

5 Jendela utama android studio 12

6 Jendela kodingan layout aplikasi android 13 7 Jendela kodingan java aplikasi android 13 8 Pemilihan device running aplikasi android 14

9 Tampilan aplikasi android di device 14 10 Hasil iterasi lima variabel 18 11 Hasil metode HS 21

DAFTAR LAMPIRAN

1 Pembuktian arah pencarian yang meminimumkansuatu fungsi 23

2 Tampilan aplikasi android metode conjugate gradient 23

3 Kode layout android studio tiga variabel metode HS 25

4 Kode java android studio tiga variabel metode HS 32

5 Kode Gambar 11 dengan Matlab 37

(11)

PENDAHULUAN

Latar Belakang

Perkembangan teknologi saat ini menjadikan telepon genggam (handphone) sebagai salah satu perangkat elektronik yang sederhana dan mudah dibawa oleh penggunanya. Salah satu sistem operasi pada telepon genggam adalah sistem operasi android.

Pengoptimuman adalah pencarian nilai terbaik (minimum atau maksimum) dari suatu fungsi yang diberikan pada suatu konteks. Masalah pengoptimuman secara garis besar dibedakan menjadi dua yaitu masalah pengoptimuman dengan kendala dan masalah pengoptimuman tanpa kendala. Masalah pengoptimuman dengan kendala merupakan masalah pengoptimuman fungsi objektif yang memenuhi kendala-kendalanya.

Penyelesaian pengoptimuman fungsi dapat dilakukan dengan dua pendekatan yaitu secara analitik (contohnya penggunaan teorema-teorema dalam kalkulus) dan secara numerik. Metode numerik adalah teknik ketika masalah matematika diformulasikan sedemikian rupa sehingga dapat diselesaikan oleh pengoperasian aritmatika (Capra dan Canale 1991). Penyelesaian secara numerik umumnya melibatkan proses iterasi, perhitungan berulang dari data numerik yang ada. Jika proses iterasi dilakukan dengan cara manual, akan membutuhkan waktu yang sangat lama dan memungkinkan timbulnya kesalahan akibat manusia itu sendiri. Misalnya untuk menyelesaikan persamaan nonlinear, membutuhkan waktu yang sangat lama apabila dikerjakan secara manual. Pada kenyataannya sering terjadi proses iterasi ratusan kali, pada keadaan demikian ini komputer sangat dibutuhkan untuk mengurangi waktu penyelesaian (Munif dan Hidayatullah 1995).

Pendekatan numerik dibagi menjadi dua yaitu pendekatan tanpa gradien dan pendekatan dengan menggunakan gradien. Metode pendekatan tanpa gradien antara lain: metode pencarian pola dan metode pencarian acak, sedangkan metode pendekatan dengan gradien antara lain: metode steepest descent, metode conjugate gradient dan metode Newton. Terdapat modifikasi arah pencarian pada metode conjugate gradient antara lain Fletcher-Reeves, Polak-Ribiere-Polyak, Hestenes-Stiefel, Dai-Yuan, Conjugate-Descent, dan Liu-Storey.

Pembahasan karya ilmiah ini difokuskan pada salah satu bentuk pengoptimuman tanpa kendala khususnya untuk menyelesaikan fungsi kuadratik dengan metode conjugate gradient menggunakan arah pencarian Fletcher-Reeves, Polak-Ribiere-Polyak, Hestenes-Stiefel, dan Dai-Yuan serta penerapannya menggunakan aplikasi android. Algoritme yang digunakan untuk mencari nilai optimum ini bersifat iteratif, yaitu dimulai dari suatu nilai awal kemudian bergerak ke nilai kemudian dan selanjutnya sampai , dengan adalah nilai yang mendekati titik optimal.

(12)

2

Tujuan Penelitian Tujuan dari penelitian ini ialah sebagai berikut:

1. merekonstruksi modifikasi arah pencarian metode conjugate gradient Fletcher- Reeves, Polak-Ribiere-Polyak, Hestenes-Stiefel, dan Dai-Yuan,

2. membangun aplikasi pengoptimuman sederhana berbasiskan android,

3. membandingkan iterasi penyelesaian untuk semua modifikasi arah pencarian metode conjugate gradient Fletcher-Reeves, Polak-Ribiere-Polyak, Hestenes- Stiefel, dan Dai-Yuan dengan menggunakan aplikasi android.

TINJAUAN PUSTAKA

Definisi Fungsi Kuadratik

Suatu fungsi dinamakan fungsi kuadratik dalam variabel jika dapat dituliskan sebagai

( ) (1)

dengan , dan vektor real berukuran , dan matriks real berukuran (Luenberger dan Ye 2008).

Kondisi Keoptimuman

Definisi 1 (Keoptimuman)

Misalkan ( ) adalah suatu fungsi dengan , kemudian ambil ̅ . Jika ( ̅) ( ) maka ̅ disebut minimum global. Jika , sehingga ( ̅) ( ) ( ̅) maka ̅ disebut minimum lokal. Dan jika ( ̅) ( ) ( ̅) ̅ maka ̅ disebut minimum lokal sejati, dengan

( ̅) * ‖ ̅‖ + (Bazzara et al. 1993).

Definisi 2 (Vektor Gradien)

Misalkan adalah fungsi kuadratik (1), vektor gradien dari fungsi didefinisikan sebagai

( ̅)

(

)

̅

(Bazzara et al. 1993).

(13)

3 Definisi 3 (Keterturunan/Differentiable)

Misalkan fungsi . Fungsi dikatakan terturunkan (differentiable) di ̅, jika terdapat suatu vektor gradien ( ̅), dan suatu fungsi sedemikian sehingga

( ) ( ̅) ( ̅) ( ̅) ‖ ̅‖ ( ̅ ̅) dan ̅ ( ̅ ̅) (Bazzara et al. 1993).

Syarat Perlu Keoptimuman

Syarat perlu orde pertama agar ̅ minimum lokal diberikan pada akibat Teorema 1 berikut:

Teorema 1

Misalkan fungsi terturunkan di ̅. Jika terdapat vektor sedemikian sehingga ( ̅) maka terdapat sedemikian sehingga ( ) ( ̅) ( ) jadi disebut arah menurun dari di ̅ (Bazzara et al. 1993).

Akibat Teorema 1

Misalkan fungsi terturunkan di ̅. Jika ̅ minimum lokal maka ( ̅) (Bazzara et al. 1993).

Definisi 4 (Keterturunan Dua Kali/Twice Differentiable)

Misalkan fungsi . Fungsi dikatakan terturunkan dua kali (twice differentiable) di ̅, jika terdapat suatu vektor gradien ( ̅), dan matriks ( ̅) berukuran yang disebut matriks Hesse serta suatu fungsi sedemikian sehingga

( ) ( ̅) ( ̅) ( ̅) ( ̅) ( ̅)( ̅) ‖ ̅‖ ( ̅ ̅)

dan ̅ ( ̅ ̅) (Bazzara et al. 1993).

Definisi 5 (Matriks Hesse)

Misalkan fungsi dan terturunkan dua kali. Matriks Hesse ( ̅) adalah matriks turunan parsial kedua dari , dinyatakan sebagai ( ̅) ( ( ̅)) untuk dan (Bazzara et al. 1993).

Definisi 6 (Kedefinitan Matriks)

Misalkan adalah suatu matriks simetrik berukuran Matriks disebut semidefinit positif jika dan hanya jika ; , dan disebut definit positif jika dan hanya jika ; di (Bazzara et al. 1993).

(14)

4

Contoh 1 Misalkan

. / ( ) ; . Karena

( ) . / . / ( )

untuk maka disebut definit positif.

Teorema 2

Misalkan fungsi terturunkan dua kali di ̅. Jika ̅ adalah minimum lokal maka ( ̅) dan ( ̅) semidefinit positif (Bazzara et al.

1993).

Syarat Cukup Keoptimuman Teorema 3

Misalkan fungsi terturunkan dua kali di ̅ Jika ( ̅) dan ( ̅) semidefinit positif maka ̅ adalah minimum lokal (Bazzara et al. 1993).

Contoh 2

Minimumkan ( )

1. Berdasarkan Teorema 3 maka kandidat titik optimal dapat dicari sebagai berikut:

Hitung vektor gradien dari ( ) kemudian sama dengankan nol, diperoleh

( ) (

) . /.

Dari diperoleh sehingga diperoleh . Karena maka diperoleh Jadi

. / adalah titik kandidat optimum.

2. Selanjutnya periksa titik kandidat yang memenuhi syarat optimum Hitung matriks Hesse dari ( ), diperoleh

( ) .

/

Kemudian hitung

( ) ( ) .

/ . / Karena ( ) maka ( ) adalah semidefinit positif, sehingga . / adalah minimum lokal.

(15)

5 Definisi 7 (Fungsi Konveks)

Misalkan fungsi . Fungsi disebut fungsi konveks jika ( ( ) ) ( ) ( ) ( ), dan , - (Bazzara et al. 1993).

Teorema 4

Misalkan fungsi konveks di ̅. Titik ̅ disebut minimum global jika dan hanya jika ( ̅) (Bazzara et al. 1993).

Definisi 8 (Vektor-vektor yang conjugate)

Misalkan adalah matriks simetrik berukuran dan definit positif sedangkan vektor dengan adalah vektor-vektor taknol.

Vektor-vektor disebut conjugate terhadap jika

, (2)

(Sun dan Yuan 2006).

Metode Conjugate Gradient

Metode conjugate gradient adalah metode pengoptimuman untuk fungsi nonlinear

( ) (3)

dengan adalah fungsi kontinu terturunkan. Metode ini bersifat iteratif dengan formula sebagai berikut:

( ) (4)

dengan , dan menunjukkan banyaknya iterasi untuk memperoleh pendekatan solusi optimal dari persamaan (3). Didefinisikan adalah panjang langkah pada iterasi ke dan adalah arah pencarian pada iterasi ke . Panjang langkah (stepsize) dapat diperoleh dengan pencarian:

{ ( ( ))} (5)

Berdasarkan Chen (2012), karena kemudahan dari iterasi dan kebutuhan memori yang kecil, metode conjugate gradient adalah salah satu metode yang terkenal untuk menyelesaikan masalah pengoptimuman tak berkendala (3), khususnya dalam kasus dengan dimensi dari ( ) besar, . Arah pencarian didefinisikan sebagai:

{

(6)

dengan adalah skalar dan

(16)

6

( ) ( ). (7)

Pada metode conjugate gradient terdapat pendefinisian skalar yang berbeda-beda. Jika diambil

( )

( ) (8)

maka metode tersebut disebut conjugate gradient Hestenes-Stiefel (HS).

Jika diambil

( )

(9)

maka metode tersebut disebut conjugate gradient Polak-Ribiere-Polyak (PRP).

Jika diambil

( ) (10)

maka metode tersebut disebut conjugate gradient Dai-Yuan (DY).

Jika diambil

(11)

maka metode tersebut disebut conjugate gradient Fletcher-Reeves (FR).

Perbedaan skalar pada metode conjugate gradient disebabkan karena adanya pendefinisian persamaan dan teorema baru. Secara teori metode ini tidak akan berhenti atau akan terus melakukan iterasi sampai kriteria penghentian terpenuhi (Chen 2012).

HASIL DAN PEMBAHASAN

Metode Conjugate Gradient

Metode conjugate gradient adalah salah satu metode yang digunakan untuk menyelesaikan masalah pengoptimuman tanpa kendala. Penggunaan metode ini dapat digunakan untuk masalah pengoptimuman skala besar. Metode ini pertama kali ditemukan oleh Hestenes and Stiefel pada tahun 1950-an unutk memecahkan sistem persamaan linear. Pemecahan masalah sistem persamaan linear pada metode ini setara dengan pemecahan masalah minimisasi fungsi kuadratik yang definit positif dengan membuat turunan pertamanya sama dengan nol. Fletcher dan Reeves pada tahun 1964 menggunakan metode ini untuk menyelesaikan sistem persamaan nonlinear dan masalah umum minimalisasi tak berkendala (Capra dan Canale 1991).

(17)

7 Misalkan adalah fungsi kuadratik (1) dan nilai diperoleh setelah langkah ke ketika meminimumkan fungsi . Berdasarkan Definisi 2 diperoleh

( ) . (12) Dari persamaan (4) diperoleh

( ) ( )

( ) ( ) (13)

Berdasarkan Definisi 2 diperoleh

( ) ( ) (14) ( ) ( )

( ) ( )

(15)

Salah satu sifat utama metode conjugate gradient adalah vektor-arah pencarian yang saling conjugate. Arah pencarian pada metode ini didefinisikan pada persamaan (6). Modifikasi metode conjugate gradient terletak pada pendefinisian skalar . Berdasarkan Definisi 8 dengan memisalkan dan diperoleh

(16)

Persamaan (6) dan (7) disubstitusikan ke persamaan (16) diperoleh ( ( ) ) ( )

( ( ) ( ) ( ) ( )

( ) ( ) ( ( ) ( )

( ) ( ) ( ) ( )

( ) ( ) (17) dengan ( ) ( ) adalah ( ) dengan dimulai pada iterasi kedua, dan

( ) adalah dengan dimulai pada iterasi pertama. Persamaan (15) disubstitusikan ke persamaan (17) diperoleh

( ) ( ) ( ) ( ) ( )( )

( ) ( ) ( )( )

(18)

8

( ) ( )( ( ) ( ))( )

( )( ( ) ( ))( )

Berdasarkan persamaan (7), ( )( ) ( )( ) dan ( )( ) ( )( ) maka diperoleh

( ) ( )( )( )

( )( )( ) ( )

( ) (18)

Berdasarkan persamaan (8) modifikasi ini disebut modifikasi metode conjugate gradient Hestenes-Stiefel (HS).

Berikut ini adalah teorema arah pencarian conjugate untuk fungsi kuadratik dengan matriks Hesse definit positif:

Teorema 5:

Misalkan titik diperoleh setelah langkah ke ketika meminimumkan fungsi kuadratik ( ) ⁄ , dengan , dan . Jika vektor adalah arah pencarian yang saling conjugate terhadap matriks A berukuran dan definit positif, maka

( ) untuk (Rao 1984).

Bukti:

Dari persamaan (14) dan dengan mengalikan kedua ruas dengan diperoleh ( ) ( )

Untuk membuktikan ( ) diperlukan dua permisalan yaitu saat dan dengan

Saat didapat

( ) ( )

Karena adalah panjang langkah sepanjang arah yang meminimumkan nilai maka ( ) (bukti Lampiran 1) dan karena vektor adalah arah pencarian yang saling conjugate terhadap matriks A berukuran dan definit positif maka , sehingga diperoleh

( )

(19)

9 untuk Sedangkan saat , ( ) karena sama dengan ( ) saat (Rao 1984).

Dari persamaan (18) dan berdasarkan Teorema 5 ( )

( ) diperoleh

( )

( ) (19)

dari persamaan (6), persamaan (19) dapat ditulis ( ) ( )

( )

( ) ( )

Berdasarkan persamaan (7) ( ) ( ) maka diperoleh

( )

( ) ( ( ) ) Berdasarkan Teorema 5 diperoleh

( )

Berdasarkan persamaan (9) modifikasi ini disebut modifikasi metode conjugate gradient Polak-Ribiere-Polyak (PRP).

Selanjutnya berdasarkan persamaan (7), misalkan ( )( ) ( )( )

( ( ) ( ))( ) (20) Dari persamaan (6), persamaan (20) dapat ditulis

( ) ( ) ( ) ( ) Berdasarkan Teorema 5 diperoleh

( ) (21) Dari persamaan (14), persamaan (21) dapat ditulis

( ( ) )

(20)

10

Berdasarkan Teorema 5 dan Definisi 8 diperoleh

( ) (22) Dari persamaan (18) dan berdasarkan persamaan (22) diperoleh

( ) ( )

( )

Berdasarkan persamaan (10) modifikasi ini disebut modifikasi metode conjugate gradient Dai-Yuan (DY).

Dari persamaan (18), berdasarkan Teorema 5 dan persamaan (22), maka diperoleh pendefinisian baru untuk nilai skalar yaitu

Berdasarkan persamaan (11) modifikasi ini disebut modifikasi metode conjugate gradient Fletcher-Reeves (FR).

Pembuatan Aplikasi Pengoptimuman Penyelesaian Metode Conjugate Gradient Hestenes-Stiefel (HS) Tiga Variabel

Berbasiskan Android

1. Buka Android Studio, lalu pilih Start a New Android Studio project.

2. Setelah itu akan tampil jendela seperti di bawah ini.

Gambar 1 Jendela nama aplikasi android

(21)

11 Isikan Application name dengan Conjugate Gradient, dan Company Domain dengan conjugategradient.com. Pilih Project location kemudian klik Next.

3. Selanjutnya akan tampil jendela seperti di bawah ini.

Gambar 2 Jendela minimum Software Development Kit (SDK) android studio Pilih minimum Software Development Kit (SDK) pada Phone and Tablet, kemudian klik Next.

4. Selanjutnya akan tampil jendela seperti di bawah ini.

Gambar 3 Jendela Activity to Mobile Pilih Blank Activity, kemudian klik Next.

(22)

12

5. Selanjutnya akan tampil jendela seperti di bawah ini.

Gambar 4 Penamaan file aplikasi android Terakhir, klik Finish untuk memulai proses pembuatan aplikasi.

Selanjutnya Android Studio akan tampil jendela seperti di bawah ini.

Gambar 5 Jendela utama android studio

Terdapat 3 page pada tampilan jendela utama android studio yaitu activity_conjugate_gradient.xml, ConjugateGradient.java, AndroidManifest.xml.

6. Selanjutnya klik Text pada activity_conjugate_gradient.xml, kemudian akan tampil jendela seperti di bawah ini.

(23)

13

Gambar 6 Jendela kodingan layout aplikasi android

Masukkan kodingan pada Lampiran 3 ke activity_conjugate_gradient.xml.

7. Selanjutnya klik ConjugateGradient.java maka akan muncul tampilan seperti di bawah ini.

Gambar 7 Jendela kodingan java aplikasi android

Masukkan kodingan pada Lampiran 4 ke ConjugateGradient.java, kemudian klik Run.

8. Selanjutnya akan tampil jendela seperti di bawah ini.

(24)

14

Gambar 8 Pemilihan device running aplikasi android

Pilih choose a running device, kemudian pilih device yang telah disambungkan ke komputer, kemudian Klik OK. Setelah itu akan muncul tampilan seperti di bawah ini.

Gambar 9 Tampilan aplikasi android di device

(25)

15 Algoritme Conjugate Gradient

Langkah 1. Masukkan nilai awal tentukan dan , jika maka berhenti;

Langkah 2.` Hitung panjang langkah

{ ( ( ))}

Tetapkan

dengan

{

Untuk metode conjugate gradient Fletcher-Reeves digunakan:

Untuk metode conjugate gradient Polak-Ribiere-Powel digunakan:

( )

Untuk metode conjugate gradient Hestenes-Stiefel digunakan:

( ) ( ) Untuk metode conjugate gradient Dai-Yuan digunakan:

( ) Langkah 3. Jika ‖ ( )‖ maka proses berhenti;

Langkah 4. , kembali ke langkah 2;

(Sun dan Yuan 2006).

(26)

16

Hasil Komputasi Modifikasi Metode Conjugate Gradient dengan Aplikasi Android

Fungsi yang digunakan adalah fungsi kuadratik diagonal, yaitu fungsi yang dibangkitkan secara acak dengan ketentuan sebagai berikut:

( ) ( ) ( )

dengan adalah matriks diagonal berukuran dengan setiap nilai diagonalnya adalah random integer dengan batas [0,100]. Banyak variabel yang digunakan adalah N = 2,3,4,5. Vektor adalah random integer dengan batas [10,10]. Diberikan titik awal adalah vektor nol dan setiap kasus memiliki kriteria perhentian = Tol = .

Misalkan:

( ) diperoleh

Tabel 1 Kasus untuk fungsi dua variabel menggunakan aplikasi android

N Tol FR PRP HS DY

Iterasi Iterasi Iterasi Iterasi

2 2 2 2 2

2 2 2 2

2 2 2 2

2 2 2 2

2 2 2 2

2 2 2 2

Misalkan:

( ) diperoleh

Tabel 2 Kasus untuk fungsi tiga variabel menggunakan aplikasi android

N Tol FR PRP HS DY

Iterasi Iterasi Iterasi Iterasi

3 5 5 5 5

7 7 7 7

9 8 8 9

4 4 4 4

7 6 6 7

9 8 8 9

(27)

17

Misalkan:

( )

diperoleh

Tabel 3 Kasus untuk fungsi empat variabel menggunakan aplikasi android

N Tol FR PRP HS DY

Iterasi Iterasi Iterasi Iterasi

4 8 21 8 8

16 25 14 15

24 28 19 23

7 19 7 7

14 25 12 14

22 28 18 21

Misalkan:

( ) diperoleh

Tabel 4 Kasus untuk fungsi lima variabel menggunakan aplikasi android

N Tol FR PRP HS DY

Iterasi Iterasi Iterasi Iterasi

5 30 27 21 26

45 37 30 44

65 46 41 61

23 27 20 22

44 37 27 40

64 44 38 57

Pada Tabel 1 dan Tabel 2 menunjukkan bahwa keempat modifikasi metode conjugate gradient mempunyai nilai iterasi yang tidak jauh berbeda. Hal ini dikarenakan jumlah variabel yang terlalu kecil sehingga sulit untuk menentukan modifikasi yang terbaik. Pada kasus berikutnya dengan menambahkan jumlah variabel Tabel 3 dan Tabel 4 menunjukkan bahwa modifikasi metode conjugate gradient HS mempunyai iterasi yang paling sedikit dibandingkan dengan modifikasi lainnya.

(28)

18

Gambar 10 Hasil iterasi lima variabel

Contoh Perhitungan Metode Conjugate Gradient Hestenes-Stiefel (HS) 2 Variabel

Minimumkan ( ) menggunakan metode conjugate gradient HS, dengan nilai awal 0 1 , dan toleransi . Langkah 1 Iterasi ,

Tentukan gradien dari

( ) [

]

[ ]

Substitusikan nilai awal pada saat ke gradien dari , diperoleh

0

1 , lanjut ke langkah 2.

Tetapkan  0

 1 Langkah 2 Hitung panjang langkah

{ ( ( ))}

* ( )+

2 .0 1 0 1/3

* ( ) ( ) ( ) ( ) + * +

0 20 40 60 80

0.1 0.001 0.00001 0.25 0.0025 0.000025

iterasi

toleransi

FR PRP DY HS

(29)

19

Nilai diperoleh dari turunan pertama ( ) Misalkan ( ) ( )

( )

Tetapkan

0 1 0

1 0 1 Substitusikan nilai ke ( )

Hitung

( ) 0 1 [ ( )

( ) ] 0 1 Langkah 3 Periksa

‖ ( )‖ √( ) ( )

Karena ‖ ( )‖ lebih besar dari toleransi maka iterasi berlanjut;

Langkah 4 Iterasi , kembali ke langkah 2;

Langkah 2 Iterasi , 0 1 Tetapkan ,

berdasarkan algoritme

0 1 0 1 0 1 Nilai diperoleh dari

( ) ( )

(30)

20

0

1 .0 1 0

1/

.0 1 0 1/ 0 1

Hitung panjang langkah

{ ( ( ))}

* ( )+

2 .0 1 0 1/3

* ( ) ( ) ( ) ( ) + * +

Nilai diperoleh dari turunan pertama ( ) Misalkan ( ) ( )

( )

Tetapkan

0

1 0 1 0

1 Substitusikan nilai ke ( )

(31)

21 Hitung

( ) 0 1 [ ( )

( ) ] 0 1 Langkah 3 Periksa

‖ ( )‖ √( ) ( )

Karena ‖ ( )‖ lebih kecil dari toleransi maka iterasi berhenti;

Langkah 4 Iterasi = , berhenti;

Jadi nilai minimum dari ( ) adalah

0 1

Gambar 11 Hasil metode HS

SIMPULAN DAN SARAN

Simpulan

Pada tugas akhir ini berhasil dibuat aplikasi optimasi sederhana berbasiskan android untuk semua modifikasi metode conjugate gradient. Dengan adanya aplikasi ini perhitungan jumlah iterasi yang panjang dan rumit bisa dihilangkan dan diganti dengan sangat mudah dan praktis.

Metode conjugate gradient merupakan salah satu metode yang digunakan untuk menyelesaikan pengoptimuman tak berkendala. Perbedaan modifikasi arah pencarian metode conjugate gradient terletak pada pendefinisian skalar. Hasil komputasi menunjukkan bahwa modifikasi metode conjugate gradient HS memberikan iterasi yang lebih sedikit dibandingkan dengan modifikasi lainnya

(32)

22

terutama terlihat jelas pada kasus empat dan lima variabel untuk semua toleransi yang diberikan.

Saran

Karya ilmiah ini bisa dilakukan dengan metode yang lain atau dibandingkan dengan metode yang lain, membuat tampilan android yang lebih menarik, dan membuat fungsi utama bukan fungsi kuadratik.

DAFTAR PUSTAKA

Bazzara MS, Sherali HD, Shetty CM. 1993. Nonlinear Programming: Theory and Algorithms. Singapore (SG): John Willey and Sons, Inc.

Capra SC, Canale RP. 1991. Numerical Methods for Engineers with Personal Computer Applications. Ed ke-2. New York (NY): MacGraw-Hill, Inc.

Chen Y. 2012. Global convergence of a new conjugate gradient with wolfe type line search. Journal of Information and Computing Science. 7(1): 67-71.

Luenberger DG, Ye Y. 2008. Linear and Nonlinear Programming. Ed ke-3. New York (US): Springer.

Munif A, Hidayatullah P. 1995. Cara Praktis Penguasaan dan Penggunaan Metode Numerik. Surabaya (ID): Guna Widya.

Rao SS. 1984. Optimization: Theory and Applications. United States (US): Wiley Eastern.

Sun W, Yuan Y. 2006. Optimization Theory and Methods: Nonlinear Programming. New York (US): Springer.

(33)

23 Lampiran 1 Pembuktian arah pencarian yang meminimumkansuatu fungsi

Misalkan minimumkan fungsi ( ) dengan . Definisikan

diberikan ( )

Subtitusikan , sehingga ( ). Akibat teorema 1 jika adalah meminimumkan maka ( )

karena , maka

( ) sehingga

( ) ( )

: :

( )

(terbukti).

Lampiran 2 Tampilan aplikasi android metode conjugate gradient

Gambar 13 Menu Utama CG (apk)

Gambar 14 Menu Pemilihan variabel CG

(34)

24

Gambar 15 Tampilan masukan CG Gambar 16 Tampilan keluaran CG

(35)

25 Lampiran 3 Kode layout android studio tiga variabel metode HS

<RelativeLayout

xmlns:android="http://schemas.android.com/apk/res/android"

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:paddingLeft="@dimen/activity_horizontal_margin"

android:paddingRight="@dimen/activity_horizontal_margin"

android:paddingTop="@dimen/activity_vertical_margin"

android:paddingBottom="@dimen/activity_vertical_margin"

tools:context="com.conjugategradient.conjugategradient.HS">

<ScrollView

android:layout_width="fill_parent"

android:layout_height="fill_parent">

<RelativeLayout

android:layout_width="fill_parent"

android:layout_height="match_parent">

<TextView

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:textAppearance="?android:attr/textAppearanceMedium"

android:text=" Fungsi Utama : "

android:id="@+id/textView2"

android:layout_alignParentLeft="true"

android:layout_alignParentStart="true" />

<TextView

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:textAppearance="?android:attr/textAppearanceMedium"

android:text="x2 ="

android:id="@+id/textView24"

android:layout_below="@+id/editText6"

android:layout_alignParentLeft="true"

android:layout_alignParentStart="true" />

<EditText

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="0"

android:id="@+id/editText7"

android:layout_alignTop="@+id/textView24"

android:layout_toRightOf="@+id/textView24"

android:layout_alignRight="@+id/hitung"

android:layout_alignEnd="@+id/hitung" />

<TextView

android:layout_width="wrap_content"

android:layout_height="wrap_content"

(36)

26

android:textAppearance="?android:attr/textAppearanceMedium"

android:text="x3 ="

android:id="@+id/textView25"

android:layout_below="@+id/editText7"

android:layout_alignParentLeft="true"

android:layout_alignParentStart="true" />

<EditText

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="0"

android:id="@+id/editText8"

android:layout_below="@+id/editText7"

android:layout_alignLeft="@+id/editText7"

android:layout_alignStart="@+id/editText7"

android:layout_alignRight="@+id/hitung"

android:layout_alignEnd="@+id/hitung" />

<EditText

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:id="@+id/masukan1"

android:inputType="numberSigned"

android:ems="2"

android:onClick="clearinput1"

android:layout_below="@+id/textView2"

android:layout_alignParentLeft="true"

android:layout_alignParentStart="true" />

<TextView

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:textAppearance="?android:attr/textAppearanceMedium"

android:text="x1^2 +"

android:id="@+id/textView3"

android:layout_below="@+id/textView2"

android:layout_toRightOf="@+id/masukan1"

android:layout_toEndOf="@+id/masukan1" />

<EditText

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:ems="2"

android:inputType="numberSigned"

android:id="@+id/masukan2"

android:onClick="clearinput2"

android:layout_below="@+id/textView2"

android:layout_toRightOf="@+id/textView3"

android:layout_alignRight="@+id/textView2"

android:layout_alignEnd="@+id/textView2" />

<TextView

android:layout_width="wrap_content"

(37)

27 android:layout_height="wrap_content"

android:textAppearance="?android:attr/textAppearanceMedium"

android:text="x2^2 +"

android:id="@+id/textView4"

android:layout_below="@+id/textView2"

android:layout_toRightOf="@+id/textView2"

android:layout_toEndOf="@+id/textView2" />

<EditText

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:id="@+id/masukan3"

android:onClick="clearinput3"

android:inputType="numberSigned"

android:ems="2"

android:layout_alignTop="@+id/textView5"

android:layout_toRightOf="@+id/textView4" />

<TextView

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:textAppearance="?android:attr/textAppearanceMedium"

android:text="x3^2 +"

android:id="@+id/textView5"

android:layout_below="@+id/textView2"

android:layout_toRightOf="@+id/masukan3"

android:layout_toEndOf="@+id/masukan3" />

<EditText

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:id="@+id/masukan4"

android:inputType="numberSigned"

android:ems="2"

android:onClick="clearinput4"

android:layout_alignParentLeft="true"

android:layout_alignParentStart="true"

android:layout_below="@+id/masukan1" />

<TextView

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:textAppearance="?android:attr/textAppearanceMedium"

android:text=" x1 +"

android:id="@+id/textView6"

android:layout_toRightOf="@+id/masukan1"

android:layout_toEndOf="@+id/masukan1"

android:layout_alignTop="@+id/masukan4" />

<EditText

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:id="@+id/masukan5"

(38)

28

android:onClick="clearinput5"

android:inputType="numberSigned"

android:ems="2"

android:layout_alignTop="@+id/textView6"

android:layout_toRightOf="@+id/textView3"

android:layout_toEndOf="@+id/textView3" />

<TextView

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:textAppearance="?android:attr/textAppearanceMedium"

android:text="x2 +"

android:id="@+id/textView14"

android:layout_alignBottom="@+id/textView6"

android:layout_toRightOf="@+id/masukan5"

android:layout_toEndOf="@+id/masukan5" />

<EditText

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:ems="2"

android:inputType="numberSigned"

android:id="@+id/masukan6"

android:layout_below="@+id/masukan3"

android:layout_alignLeft="@+id/masukan3"

android:layout_alignStart="@+id/masukan3" />

<TextView

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:textAppearance="?android:attr/textAppearanceMedium"

android:text="x3 +"

android:id="@+id/textView15"

android:layout_alignBottom="@+id/textView14"

android:layout_alignLeft="@+id/textView5"

android:layout_alignStart="@+id/textView5" />

<EditText

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:inputType="numberSigned"

android:ems="2"

android:id="@+id/masukan7"

android:layout_below="@+id/masukan4"

android:layout_alignParentLeft="true"

android:layout_alignParentStart="true" />

<TextView

android:layout_width="wrap_content"

android:layout_height="55dp"

android:textAppearance="?android:attr/textAppearanceMedium"

android:text="Nilai Awal= x0 =["

android:id="@+id/textView16"

(39)

29 android:layout_below="@+id/masukan7"

android:layout_alignRight="@+id/masukan5"

android:layout_alignEnd="@+id/masukan5" />

<EditText

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:inputType="numberSigned"

android:ems="2"

android:id="@+id/masukan8"

android:layout_alignTop="@+id/textView16"

android:layout_toRightOf="@+id/textView16"

android:layout_toEndOf="@+id/textView16" />

<TextView

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:textAppearance="?android:attr/textAppearanceMedium"

android:text=","

android:id="@+id/textView17"

android:layout_alignTop="@+id/masukan8"

android:layout_toRightOf="@+id/masukan8"

android:layout_toEndOf="@+id/masukan8" />

<EditText

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:inputType="numberSigned"

android:ems="2"

android:id="@+id/masukan9"

android:layout_alignTop="@+id/textView17"

android:layout_toRightOf="@+id/textView17"

android:layout_toEndOf="@+id/textView17" />

<TextView

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:textAppearance="?android:attr/textAppearanceMedium"

android:text="toleransi ="

android:id="@+id/textView19"

android:layout_below="@+id/masukan8"

android:layout_alignParentLeft="true"

android:layout_alignParentStart="true" />

<EditText

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:inputType="numberDecimal"

android:ems="10"

android:id="@+id/masukan10"

android:layout_below="@+id/masukan8"

android:layout_toRightOf="@+id/textView6"

android:layout_alignRight="@+id/textView14"

(40)

30

android:layout_alignEnd="@+id/textView14" />

<Button

android:layout_width="99dp"

android:layout_height="wrap_content"

android:text=" Hitung "

android:id="@+id/hitung"

android:onClick="klikHasil"

android:layout_below="@+id/masukan10"

android:layout_alignParentLeft="true"

android:layout_alignParentStart="true"

android:layout_alignRight="@+id/editText6"

android:layout_alignEnd="@+id/editText6" />

<TextView

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:textAppearance="?android:attr/textAppearanceMedium"

android:text="Optimum :"

android:id="@+id/textView21"

android:layout_below="@+id/hitung"

android:layout_alignParentLeft="true"

android:layout_alignParentStart="true" />

<TextView

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:textAppearance="?android:attr/textAppearanceMedium"

android:text="Iterasi ="

android:id="@+id/textView22"

android:layout_below="@+id/textView21"

android:layout_alignParentLeft="true"

android:layout_alignParentStart="true" />

<EditText

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="0"

android:id="@+id/editText5"

android:layout_below="@+id/textView21"

android:layout_toRightOf="@+id/textView22" />

<TextView

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:textAppearance="?android:attr/textAppearanceMedium"

android:text="x1 ="

android:id="@+id/textView23"

android:layout_below="@+id/editText5"

android:layout_alignParentLeft="true"

android:layout_alignParentStart="true" />

<EditText

android:layout_width="wrap_content"

(41)

31 android:layout_height="wrap_content"

android:text="0"

android:id="@+id/editText6"

android:layout_below="@+id/editText5"

android:layout_toRightOf="@+id/textView23"

android:layout_alignParentRight="true"

android:layout_alignParentEnd="true" />

<TextView

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:textAppearance="?android:attr/textAppearanceMedium"

android:text=","

android:id="@+id/textView18"

android:layout_alignBottom="@+id/textView17"

android:layout_toRightOf="@+id/masukan6"

android:layout_toEndOf="@+id/masukan6" />

<EditText

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:inputType="numberSigned"

android:ems="2"

android:id="@+id/masukan11"

android:layout_alignTop="@+id/textView18"

android:layout_toRightOf="@+id/textView18"

android:layout_toEndOf="@+id/textView18" />

<TextView

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:textAppearance="?android:attr/textAppearanceMedium"

android:text="]"

android:id="@+id/textView43"

android:layout_alignBottom="@+id/textView18"

android:layout_toRightOf="@+id/masukan11"

android:layout_toEndOf="@+id/masukan11" />

</RelativeLayout> </ScrollView> </RelativeLayout>

(42)

32

Lampiran 4 Kode java android studio tiga variabel metode HS package com.conjugategradient.conjugategradient;

import android.support.v7.app.ActionBarActivity;

import android.os.Bundle;

import android.view.Menu;

import android.view.MenuItem;

import android.view.View;

import android.widget.Button;

import android.widget.TextView;

public class fr3 extends ActionBarActivity {

TextView input1, input2, input3, input4, input5, input6, input7, input8, input9, input10, input11, result1, result2, result3, result4;

Button btHitung;

private int k=0;

private int operation=0;

private double toleransi=0.0001;

private double i=0;

private double dx1 =0;

private double ex2 =0;

private double gx3=0;

private double m=0;

private double z=0;

private double lambda;

private double y1=0;

private double y2=0;

private double a=0;

private double b=0;

private double c=0;

private double y3=0;

private double df1=0;

private double df2=0;

private double dx3=0;

private double ex3=0;

private double LGM1=0;

private double LGM2=0;

private double LGM3=0;

private double LGM11=0;

private double LGM22=0;

private double LGM33=0;

private double betta=0;

private double z1=0;

private double z2=0;

private int xx=0;

(43)

33

@Override

protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);

setContentView(R.layout.activity_fr3);

input1 = (TextView) findViewById(R.id.masukan1);

input2 = (TextView) findViewById(R.id.masukan2);

input3 = (TextView) findViewById(R.id.masukan3);

input4 = (TextView) findViewById(R.id.masukan4);

input5 = (TextView) findViewById(R.id.masukan5);

input6 = (TextView) findViewById(R.id.masukan6);

input7 = (TextView) findViewById(R.id.masukan7);

input8 = (TextView) findViewById(R.id.masukan8);

input9 = (TextView) findViewById(R.id.masukan9);

input10 = (TextView) findViewById(R.id.masukan10);

input11 = (TextView) findViewById(R.id.masukan11);

result1 = (TextView) findViewById(R.id.editText5);

result2 = (TextView) findViewById(R.id.editText6);

result3 =(TextView) findViewById(R.id.editText7);

result4 =(TextView) findViewById(R.id.editText8);

btHitung = (Button) findViewById(R.id.hitung);

}

public void klikHasil(View V) {

double x1 = Double.parseDouble(input8.getText().toString());

double x2 = Double.parseDouble(input9.getText().toString());

double x3 = Double.parseDouble(input11.getText().toString());

double inputA = Double.parseDouble(input1.getText().toString());

double inputB = Double.parseDouble(input2.getText().toString());

double inputD = Double.parseDouble(input3.getText().toString());

double inputE = Double.parseDouble(input4.getText().toString());

double inputF = Double.parseDouble(input5.getText().toString());

double inputG = Double.parseDouble(input6.getText().toString());

double inputH = Double.parseDouble(input7.getText().toString());

double tol = Double.parseDouble(input10.getText().toString());

LGM1 = d(x1);

dx3 = LGM1 * LGM1;

LGM2 = e(x2);

ex3 = LGM2 * LGM2;

LGM3 = g(x3);

gx3 = LGM3 * LGM3;

z1 = Math.abs(Math.sqrt(dx3 + ex3 + gx3));

i = tol;

dx1 = -LGM1;

ex2 = -LGM2;

gx3 = -LGM3;

(44)

34

b = -(((-inputE * dx1) - (inputF * ex2) - (inputG * gx3) - (2 * inputA * dx1 * x1) - (2 * inputB * ex2 * x2) - (2 * inputD * gx3 * x3)));

a = ((inputA * dx1 * dx1) + (inputB * ex2 * ex2) + (inputD * gx3 * gx3));

c = (inputH + (inputE * x1) + (inputA * x1 * x1) + (inputF * x2) + (inputB * x2 * x2) + (inputG * x3) + (inputD * x3 * x3));

lambda = -b / (2 * a);

y1 = x1 + lambda * (dx1);

y2 = x2 + lambda * (ex2);

y3 = x3 + lambda * (gx3);

x1 = y1;

x2 = y2;

x3 = y3;

LGM11 = d(x1);

dx3 = LGM11 * LGM11;

LGM22 = e(x2);

ex3 = LGM22 * LGM22;

LGM33 = g(x3);

gx3 = LGM33 * LGM33;

z2 = Math.abs(Math.sqrt(dx3 + ex3 + gx3));//nih normnya cek k = k + 1;

while (z2 >i){

betta = (((LGM11*LGM11) + (LGM22*LGM22) +

(LGM33*LGM33)) - ((LGM11*LGM1) + (LGM2*LGM22) + (LGM3*LGM33))) / (((LGM33*gx3) + (dx1*LGM11) + (ex2*LGM22)) - ((dx1*LGM1) + (ex2*LGM2) +

(gx3*LGM3)));

dx1= - (LGM11) + (betta*-LGM1);

ex2= - (LGM22) + (betta*-LGM2);

gx3= - (LGM33) + (betta*-LGM3);

b = - (((-inputE * dx1) - (inputF * ex2) - (inputG * gx3) - (2 * inputA * dx1 * x1) - (2 * inputB * ex2 * x2) - (2 * inputD * gx3

* x3)));

a = ((inputA * dx1 * dx1) + (inputB * ex2 * ex2) + (inputD * gx3 * gx3));

c = (inputH + (inputE * x1) + (inputA * x1 * x1) + (inputF * x2) + (inputB * x2 * x2) + (inputG * x3) + (inputD * x3 * x3));

if (a==0 && b==0) { x1=x1;

x2=x2;

x3=x3;

LGM1=LGM11;

LGM2=LGM22;

LGM3=LGM33;

LGM11 = d(x1);

(45)

35 dx3 = LGM11 * LGM11;

LGM22 = e(x2);

ex3 = LGM22 * LGM22;

LGM33 = g(x3);

gx1 = LGM33 * LGM33;

z1=z2;

z2 = Math.abs(Math.sqrt(dx3 + ex3 + gx1));

k = k ; }

else {

lambda = -b / (2 * a);

y1 = x1 + lambda * (dx1);

y2 = x2 + lambda * (ex2);

y3 = x3 + lambda * (gx3);

x1 = y1;

x2 = y2;

x3 = y3;

LGM1=LGM11;

LGM2=LGM22;

LGM3=LGM33;

LGM11 = d(x1);

dx3 = LGM11 * LGM11;

LGM22 = e(x2);

ex3 = LGM22 * LGM22;

LGM33 = g(x3);

gx1 = LGM33 * LGM33;

z2 = Math.abs(Math.sqrt(dx3 + ex3 + gx1));

k = k + 1;}

String hasilString1 = String.valueOf(k);

String hasilString2 = String.valueOf(x1);

String hasilString3 = String.valueOf(x2);

String hasilString4 = String.valueOf(x3);

result1.setText(hasilString1);

result2.setText(hasilString2);

result3.setText(hasilString3);

result4.setText(hasilString4);

} }

public double f(double x1, double x2, double x3) {

double inputA = Double.parseDouble(input1.getText().toString());

double inputB = Double.parseDouble(input2.getText().toString());

double inputD = Double.parseDouble(input3.getText().toString());

double inputE = Double.parseDouble(input4.getText().toString());

(46)

36

double inputF = Double.parseDouble(input5.getText().toString());

double inputG = Double.parseDouble(input6.getText().toString());

double inputH = Double.parseDouble(input7.getText().toString());

return

inputA*x1*x1+inputB*x2*x2+inputD*x3*x3+inputE*x1+inputF*x2 +inputG*x3+inputH; }

public double d(double x1) {

double inputA = Double.parseDouble(input1.getText().toString());

double inputE = Double.parseDouble(input4.getText().toString());

return inputA*2*x1+inputE;

}

public double e(double x2) {

double inputB = Double.parseDouble(input2.getText().toString());

double inputF = Double.parseDouble(input5.getText().toString());

return inputB*2*x2+inputF;

}

public double g(double x3) {

double inputD = Double.parseDouble(input3.getText().toString());

double inputG = Double.parseDouble(input6.getText().toString());

return inputD*2*x3+inputG; }

@Override

public boolean onCreateOptionsMenu(Menu menu) {

// Inflate the menu; this adds items to the action bar if it is present.

getMenuInflater().inflate(R.menu.menu_fr3, menu);

return true;

}

@Override

public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml.

int id = item.getItemId();

//noinspection SimplifiableIfStatement if (id == R.id.action_settings) {

return true;

}

return super.onOptionsItemSelected(item);

} }

(47)

37 Lampiran 5 Kode Gambar 11 dengan Matlab

clear clc tic

syms x1 x2 lambda u v w S2

f = 2*x1^2 + 8*x1 + x2^2 + 10*x2 + 29;

x = [x1 x2];

x0 = [0,0];

tol = 10^(-6);

%Hitung Gradien f(x1,x2);

Gradien = jacobian(f,x)

S_cek = subs(f,[x1 x2],{x0(1),x0(2)})

%Subtitusi Gradien f(x0,y0) k = 0;

N = [];

N = [N; x0(1) x0(2)];

S1 = subs(Gradien,[x1 x2],{x0(1),x0(2)}) LGM = lambda*(-S1);

y0 = x0+LGM;

fsub = subs(f,[x1,x2],{y0(1),y0(2)});

difsub = diff(fsub,lambda);

Lsub = solve(difsub,lambda);

LM = min(single(Lsub));

y0 = subs(y0,lambda,LM);

k = k+1;

N = [N;y0(1) y0(2)];

x0 = y0;

S = subs(Gradien,[x1 x2],{x0(1),x0(2)})

z = -S1;

LGM = ((S*S')-(S*S1'))/((z*S')-(z*S1'));

z = (-S)+(LGM*(-S1));

y0 = x0+(lambda*z);

fsub = subs(f,[x1,x2],{y0(1),y0(2)});

difsub = diff(fsub,lambda);

Lsub = solve(difsub,lambda);

LM = min(single(Lsub));

y0 = subs(y0,lambda,LM);

k = k+1;

N = [N;y0(1) y0(2)];

x0 = y0;

u = S;

S2 = z;

S1 = S;

S = subs(Gradien,[x1 x2],{x0(1),x0(2)}) if norm(S)<tol

x0 else

while norm(S)>tol

Referensi

Dokumen terkait

Hasil tabulasi data kuesioner yang diberikan kepada responden tentang pengaruh desain dan pelaksanaan terhadap waste besi tulangan di proyek West Vista Apartment dapat

Kebersamaan Warga dalam pertemuan Kelompok Tani Pelangi Bersatu di Dusun Sopokomil. Universitas

Hasil penelitian menunjukkan bahwa komposit terbiodegradasikan yang memiliki sifat terbaik adalah perbandingan PP:PP-g-MA:tepung biji durian (7:0,5:0,5)g dengan nilai

PENGGUNAAN MULTIMEDIA ANIMASI UNTUK MENINGKATKAN PENGUASAAN KONSEP PADA PEMBELAJARAN MATERI BIDANG GESER MATA KULIAH MATERIAL TEKNIK.. Universitas Pendidikan Indonesia |

Madrasah Ibtidaiyah Darussalam Bengkulu City. This research aims to determine what problems are faced by teachers in using learning media and how teachers deal with these

Kecerdasan visual-spasial yang di maksud adalah kemampuan peserta didik dalam cara berpikirnya dengan menggunakan gambar termasuk gambaran tabel, peta, grafik

Besarnya sampel Sakernas Februari 2017 sebanyak 5.000 blok sensus atau 50.000 rumah tangga untuk memperoleh estimasi data hingga tingkat

Tujuan penyuluhan yang tepat/baik adalah sesuai dengan keinginan/kebutuhan petani, dapat diukur kejelasannya, berjangka pendek agar dapat memotivasi