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
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
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 FletcherReeves 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
PENGOPTIMUMAN FUNGSI KUADRATIK DENGAN METODE CONJUGATE GRADIENT DAN PENERAPANNYA MENGGUNAKAN APLIKASI ANDROID
IMAM SHALAHUDDIN
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
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
Diketahui oleh
Dr Toni Bakhtiar, MSc Ketua Departemen
Tanggal Lulus:
Drs Siswandi, MSi Pembimbing II
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
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 SIMPULAN DAN SARAN
18 21
Simpulan
21
Saran
22
DAFTAR PUSTAKA
22
LAMPIRAN
23
RIWAYAT HIDUP
39
DAFTAR TABEL 1 2 3 4
Kasus untuk fungsi dua variabel menggunakan aplikasi android Kasus untuk fungsi tiga variabel menggunakan aplikasi android Kasus untuk fungsi empat variabel menggunakan aplikasi android Kasus untuk fungsi lima variabel menggunakan aplikasi android
16 16 17 17
DAFTAR GAMBAR 1 2 3 4 5 6 7 8 9 10 11
Jendela nama aplikasi android Jendela minimum Software Development Kit (SDK) android studio Jendela Activity to Mobile Penamaan file aplikasi android Jendela utama android studio Jendela kodingan layout aplikasi android Jendela kodingan java aplikasi android Pemilihan device running aplikasi android Tampilan aplikasi android di device Hasil iterasi lima variabel Hasil metode HS
10 11 11 12 12 13 13 14 14 18 21
DAFTAR LAMPIRAN 1 2 3 4 5
Pembuktian arah pencarian yang meminimumkan suatu fungsi Tampilan aplikasi android metode conjugate gradient Kode layout android studio tiga variabel metode HS Kode java android studio tiga variabel metode HS Kode Gambar 11 dengan Matlab
23 23 25 32 37
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.
2 Tujuan Penelitian Tujuan dari penelitian ini ialah sebagai berikut: 1. merekonstruksi modifikasi arah pencarian metode conjugate gradient FletcherReeves, 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, HestenesStiefel, dan Dai-Yuan dengan menggunakan aplikasi android.
TINJAUAN PUSTAKA Definisi Fungsi Kuadratik Suatu fungsi dituliskan sebagai
dinamakan fungsi kuadratik dalam
( )
variabel jika dapat
(1)
dengan , dan vektor real berukuran (Luenberger dan Ye 2008).
, dan
matriks real berukuran
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).
)
3 Definisi 3 (Keterturunan/Differentiable) Misalkan fungsi . Fungsi dikatakan terturunkan (differentiable) ( ̅ ), dan suatu fungsi di ̅ , jika terdapat suatu vektor gradien 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 ( ̅ ), dan matriks ( ̅ ) differentiable) di ̅ , jika terdapat suatu vektor gradien berukuran yang disebut matriks Hesse serta suatu fungsi sedemikian sehingga ( )
( ̅) ‖
dan ̅
( ̅) ( ̅‖
( ̅
Definisi 5 (Matriks Hesse) Misalkan fungsi
( ̅ ̅)
̅)
( ̅ )) untuk
̅)
( ̅ )(
̅)
̅) (Bazzara et al. 1993).
dan
terturunkan dua kali. Matriks Hesse
adalah matriks turunan parsial kedua dari (
(
dan
, dinyatakan sebagai
( ̅) ( ̅)
(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).
4 Contoh 1 Misalkan .
/
(
) ;
.
Karena (
).
/. /
( maka
untuk
)
disebut definit positif.
Teorema 2 Misalkan fungsi minimum lokal maka 1993).
terturunkan dua kali di ̅ . Jika ̅ adalah dan ( ̅ ) semidefinit positif (Bazzara et al.
( ̅)
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: ) kemudian sama dengankan nol, Hitung vektor gradien dari ( diperoleh ( Dari diperoleh
)
(
diperoleh . Karena
)
. /.
sehingga maka diperoleh
. / adalah titik kandidat optimum. 2. Selanjutnya periksa titik kandidat yang memenuhi syarat optimum ), diperoleh Hitung matriks Hesse dari ( ( )
.
(
).
/
Kemudian hitung ( ) Karena sehingga
( )
maka
/. /
( ) adalah semidefinit positif,
. / adalah minimum lokal.
Jadi
5 Definisi 7 (Fungsi Konveks) Misalkan fungsi ( ) ) ( ) ( al. 1993). Teorema 4 Misalkan fungsi jika dan hanya jika ( ̅ )
disebut fungsi konveks jika ( , - (Bazzara et dan
. Fungsi ) ( ),
konveks di ̅ . Titik ̅ disebut minimum global (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. disebut conjugate terhadap jika Vektor-vektor (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: { dengan
adalah skalar dan
(6)
6 (
)
(
).
Pada metode conjugate gradient terdapat pendefinisian skalar berbeda-beda. Jika diambil ( ) ( ) maka metode tersebut disebut conjugate gradient Hestenes-Stiefel (HS). Jika diambil ( )
(7) yang (8)
(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).
7 Misalkan langkah ke diperoleh
adalah fungsi kuadratik (1) dan nilai diperoleh setelah ketika meminimumkan fungsi . Berdasarkan Definisi 2 (
)
(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 diperoleh dan (16) Persamaan (6) dan (7) disubstitusikan ke persamaan (16) diperoleh (
( (
(
)
)
( )
(
)
( )
(
)
( )
)
( )
(
( (
( )
) )
( ) ( )
( )
( )
( ) ( )
(17)
( ) ( ) dengan dengan adalah dimulai pada iterasi kedua, dan ( ) adalah dengan dimulai pada iterasi pertama. Persamaan (15) disubstitusikan ke persamaan (17) diperoleh
( )
(
)
( )
( )
( (
) )
( (
)( ) )( )
8
(
( )
)
( )
)( Berdasarkan persamaan (7), ( ( )( ) maka diperoleh
)
(
( )
( ) ( )
(
(
) )(
(
( )
(
))
( )
( )
(
)(
)
)
)(
(
))
dan
)(
(
( )
(
)
)
(
(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 (
)
( Untuk membuktikan dan dengan Saat didapat
)
(
(
diperoleh
)
diperlukan dua permisalan yaitu saat
)
(
)
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 (
)
9 untuk dengan
( ) Sedangkan saat , ( ) saat (Rao 1984). Dari persamaan (18) dan berdasarkan Teorema 5 ( ) diperoleh (
karena sama (
)
)
(
(19)
)
dari persamaan (6), persamaan (19) dapat ditulis (
)
(
) (
(
)
)
)
( (
Berdasarkan persamaan (7) diperoleh
)
(
( (
)
maka
)
)
(
(
)
)
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 (
(
)
)
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
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.
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.
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.
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
15 Algoritme Conjugate Gradient Langkah 1. Langkah 2.`
Masukkan nilai awal , jika maka berhenti; Hitung panjang langkah (
{ (
tentukan
))}
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 ‖ ( Langkah 4. (Sun dan Yuan 2006).
)
)‖ maka proses berhenti; , kembali ke langkah 2;
dan
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
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.
18 80 FR
iterasi
60
PRP 40
DY
20
HS
0 0.1
0.001
0.00001
0.25
0.0025
0.000025
toleransi
Gambar 10 Hasil iterasi lima variabel
Contoh Perhitungan Metode Conjugate Gradient Hestenes-Stiefel (HS) 2 Variabel Minimumkan (
)
menggunakan metode 0 1 , dan toleransi
conjugate gradient HS, dengan nilai awal Langkah 1
Iterasi , Tentukan gradien dari
(
)
0
]
[
[ ] Substitusikan nilai awal diperoleh 1
pada saat
ke gradien dari ,
, lanjut ke langkah 2.
Tetapkan Langkah 2
.
0
1
Hitung panjang langkah (
{ (
* (
) *
))}
* (
)+
2 .0 1
0
1/3
)
(
)
(
+
(
)
+
19
Nilai
diperoleh dari turunan pertama ( ( )
Misalkan
(
)
)
( )
Tetapkan
0 1 ke (
Substitusikan nilai Hitung ( ) Langkah 3
0
Periksa ‖ ( )‖
Karena ‖ Langkah 4
Iterasi
Langkah 2
Iterasi
0
1
[ )
√(
1
0
1
) ( (
) ) (
]
0
1
)
( )‖ lebih besar dari toleransi maka iterasi berlanjut; , kembali ke langkah 2; 0
,
1
Tetapkan , berdasarkan algoritme
0 Nilai
1
0
diperoleh dari ( (
) )
1
0
1
20 0
1 .0 .0
1
1
0
1/ 0
0
1/ 1
Hitung panjang langkah (
{ ( * (
)+
2 .0
1
* (
(
))}
0 )
)
1/3 (
(
*
Nilai
)
( )
+
+
diperoleh dari turunan pertama (
Misalkan
)
(
)
)
( )
Tetapkan
Substitusikan nilai
ke (
0
1
0
1 )
0
1
21 Hitung ( ) Langkah 3
Periksa ‖ ( )‖
Karena ‖ Langkah 4
1
0 √(
[ )
( ( (
) )
]
0
1
)
( )‖ lebih kecil dari toleransi maka iterasi berhenti;
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
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.
23 Lampiran 1 Pembuktian arah pencarian yang meminimumkan suatu fungsi Misalkan minimumkan fungsi ( Definisikan
diberikan
(
) dengan
.
)
Subtitusikan , sehingga ( ( jika adalah meminimumkan maka karena , maka ( ) sehingga ( ) ( ) : : ( )
)
). Akibat teorema 1
(terbukti). Lampiran 2 Tampilan aplikasi android metode conjugate gradient
Gambar 13 Menu Utama CG (apk)
Gambar 14 Menu Pemilihan variabel CG
24
Gambar 15 Tampilan masukan CG
Gambar 16 Tampilan keluaran CG
25 Lampiran 3 Kode layout android studio tiga variabel metode HS
<ScrollView android:layout_width="fill_parent" android:layout_height="fill_parent"> <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" />
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" /> <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" />
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" /> <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" /> <EditText android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/masukan5"
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" /> <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" /> <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" />
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" /> <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" /> <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"
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" /> <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" /> <EditText android:layout_width="wrap_content"
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" /> <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" />
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;
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;
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);
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());
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); } }
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) = 0; k N = []; N = [N; x0(1) x0(2)]; S1 = subs(Gradien,[x1 x2],{x0(1),x0(2)}) LGM = lambda*(-S1); = x0+LGM; y0 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
38 z = LGM = z = y0 = fsub = difsub = Lsub = LM = = y0 k = N = x0 = u = S2 = S1 = S = end end iterasi=k N toc
S2; ((S*S')-(S*S1'))/((z*S')-(z*S1')); (-S)+(LGM*(-S1)); x0+(lambda*z); subs(f,[x1,x2],{y0(1),y0(2)}); diff(fsub,lambda); solve(difsub,lambda); min(single(Lsub)); subs(y0,lambda,LM); k+1; [N;y0(1) y0(2)]; y0; S; z; S; subs(Gradien,[x1 x2],{x0(1),x0(2)})
clf(figure(1)) figure(1) ezcontour(f,[1,-6],[1,-6]) grid on hold on plot(N(:,1),N(:,2),'-ko','LineWidth',2,... 'MarkerEdgeColor','k',... 'MarkerFaceColor','g',... 'MarkerSize',3) axis square
39 RIWAYAT HIDUP
Penulis dilahirkan di Jakarta pada tanggal 13 Maret 1994 sebagai anak pertama dari tiga bersaudara, dari pasangan Rohmat dan Sri Ningsih. Tahun 2011 penulis lulus dari SMAN 46 Jakarta dan pada tahun yang sama penulis lulus seleksi masuk Institut Pertanian Bogor (IPB) melalui jalur Seleksi Nasional Masuk Perguruan Tinggi Negeri (SNMPTN) IPB dan diterima di Departemen Matematika Fakultas Matematika dan Ilmu Pengetahuan Alam. Selama masa perkuliahan, penulis aktif pada lembaga kemahasiswaan, yaitu Ketua Departemen BEM TPB IPB periode 2011/2012, Staf Departmen Minat Bakat dan Pengembangen Diri (MBM) BEM FMIPA IPB 2012/2013, dan Wakil Ketua BEM FMIPA IPB periode 2013/2014, dan beberapa kegiatan kepanitiaan, antara lain staf Tim Kreatif kegiatan MPD Matematika IPB tahun 2013, Ketua Acara kegiatan SPIRIT FMIPA IPB tahun 2013, staf Divisi Konsumsi kegiatan Pesta Sains Nasional (PSN) tahun 2013-2014, dan aktif sebagai asisten Pendidikan Agama Islam IPB 2012/2014.