NABILA ADITIARINI
DEPARTEMEN MATEMATIKA
FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM
INSTITUT PERTANIAN BOGOR
BOGOR
2017
PERNYATAAN MENGENAI SKRIPSI DAN
SUMBER INFORMASI SERTA PELIMPAHAN HAK CIPTA
Dengan ini saya menyatakan bahwa skripsi berjudul Metode Gradien
Konjugat dalam Menyelesaikan Masalah Optimasi 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 2017
Nabila Aditiarini
NIM G54110041
ABSTRAK
NABILA ADITIARINI. Metode Gradien Konjugat dalam Menyelesaikan Masalah
Optimasi Menggunakan Aplikasi Android. Dibimbing oleh BIB PARUHUM
SILALAHI dan FAHREN BUKHARI.
ABSTRACT
NABILA ADITIARINI
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
2017
PRAKATA
Puji dan syukur penulis panjatkan kepada Allah subhanahu wa ta’ala atas
segala nikmat, rahmat, pertolongan dan karunia-Nya sehingga karya ilmiah ini
berhasil diselesaikan. Judul karya ilmiah ini adalah Metode Gradien Konjugat
dalam Menyelesaikan Masalah Optimasi Menggunakan Aplikasi Android.
Terima kasih penulis ucapkan kepada keluarga tercinta Ayah Supriatna,
Ibunda alm.Tri Padmi Andayani, Kakak Yuliantia Maharrami, Adik Alifia Adibila
Nurhalisa, Cicih Komalasari, Alitia Nuranisa dan Alika Raialit atas segala doa,
dukungan, dan kasih sayangnya selama menulis karya ilmiah ini. Ungkapan terima
kasih juga saya ucapkan kepada Bapak Dr Ir Bib Paruhum Silalahi, MKom dan
Bapak Dr Ir Fahren Bukhari, MSc selaku dosen pembimbing yang telah banyak
memberikan saran, kesabaran, dan ilmu, serta Bapak Dr Toni Bakhtiar, MSc selaku
dosen penguji yang telah banyak memberi saran, serta kepada seluruh staf
Departemen Matematika. Tidak lupa saya mengucapkan terima kasih untuk para
sahabat Agum Aditama, Irma Fatmawati, Restu Auliya, Neneng Murnasih, Intan
Fitria Sari, teman-teman seperjuangan Matematika 48, adik-adik Matematika 49,
kakak-kakak Matematika 47, serta teman-teman di luar Departemen Matematika
baik di dalam maupun di luar IPB atas kritik, saran, dan doanya selama pembuatan
karya ilmiah ini.
Semoga karya ilmiah ini dapat bermanfaat.
Nabila Aditiarini
DAFTAR ISI
DAFTAR GAMBAR
DAFTAR LAMPIRAN
PENDAHULUAN
Latar Belakang
Tujuan Penelitian
TINJAUAN PUSTAKA
Fungsi
Definisi Fungsi
Fungsi 𝑓: 𝐀 → 𝐁 adalah aturan yang memadankan setiap 𝐱 ∈ 𝐀 secara tepat
satu elemen yang disebut 𝑓(𝐱) ∈ 𝐁, di mana 𝐀 dan 𝐁 adalah himpunan bilangan
real (Bartle dan Sherbert 1982).
Kondisi Keoptimuman
Definisi Keoptimuman
Misalkan 𝑓(𝐱) adalah suatu fungsi dengan 𝐱 ∈ ℝ𝑛 , kemudian ambil 𝐱 ∗ ∈ ℝ𝑛 .
Titik 𝐱 ∗ adalah minimum global dari 𝑓 pada D jika 𝑓(𝐱) ≥ 𝑓(𝐱 ∗ ) ∀𝐱 ∈ 𝐷 ⊆
ℝ𝑛 .
Titik 𝐱 ∗ adalah minimum lokal jika terdapat 𝜀 > 0 sehingga 𝑓(𝐱) ≥
𝑓(𝐱 ∗ ) untuk setiap {𝐱| ∥ 𝐱 − 𝐱 ∗ ∥< 𝜀} dengan nilai ∥. ∥ menyatakan norm
Euclid (Snyman 2005).
Contoh:
16 4
𝐀=( ) ; 𝐱 = (𝑎 𝑏 )𝑇 ; ∀𝑎, 𝑏 ∈ ℝ
4 4
karena
16 4 𝑎
𝐱 𝐓 𝐀𝐱 = (𝑎 𝑏) ( ) ( ) = 16𝑎2 + 8𝑎𝑏 + 4𝑏 2
4 4 𝑏
= (4𝑎 + 𝑏)2 + 3𝑏 2 ≥ 0,
∀𝐱 ∈ ℝ𝑛 maka 𝐀 disebut semidefinit positif.
Contoh:
𝑓(𝑥1 , 𝑥2 ) = 2𝑥12 + 3𝑥22 − 12𝑥1 .
1. Mencari kandidat titik optimal
4𝑥 − 12
syarat, ∇𝑓(𝑥1 , 𝑥2 ) = ( 1 )=0
6𝑥2
4𝑥1 − 12 = 0 sehingga 4𝑥1 = 12
𝑥1 = 3
6𝑥2 = 0 sehingga 𝑥2 = 0,
diperoleh nilai 𝑥1 = 3 dan nilai 𝑥2 = 0.
3
Jadi 𝐱 ∗ = ( ) adalah titik kandidat optimum.
0
2. Cek titik kandidat yang memenuhi syarat optimum
4 0
H(𝐱) = ( )
0 6
4 0 3
𝐱 𝐓 H(𝐱)𝐱 = (3 0) ( ) ( ) = 36.
0 6 0
𝐓
Karena 𝐱 ∗ H(𝐱)𝐱 ∗ > 0 maka H(𝐱) adalah definit positif,
3
sehingga 𝐱 ∗ = ( ) adalah minimum lokal.
0
Android
𝐈𝐱 = 𝐀−𝟏 𝐁
𝐱 = 𝐀−𝟏 𝐁.
Karena A adalah matriks definit positif, masalah fungsi kuadratik tersebut memiliki
solusi yang unik yang diberikan oleh 𝐱 ∗ = 𝐀−𝟏 𝐁.
Salah satu sifat utama metode gradien konjugat adalah vektor-vektor berarah
yang saling konjugat. Berdasarkan (Snyman 2005) dua vektor 𝐝, 𝐯 ≠ 0 saling
konjugat relatif terhadap matriks simetrik definit positif A jika hasil kali skalar
antara 𝐝 dan Av adalah nol, yaitu
𝐝𝐓 𝐀𝐯 = (𝐝, 𝐀𝐯) = 𝟎.
Teorema 1
Misalkan 𝐝𝑖 , 𝑖 = 1, 2, … , 𝑛 adalah vektor-vektor yang saling konjugat
terhadap matriks simetrik definit positif A, maka sembarang vektor 𝐱 ∈ ℝ𝑛 dapat
dinyatakan sebagai kombinasi linear dari vektor-vektor 𝐝𝑖 :
𝑛
𝐱 = ∑ 𝜆𝑖 𝐝𝑖
𝑖=1
dengan
(𝐝𝑖 , 𝐀𝐱)
𝜆𝑖 =
(𝐝𝑖 , 𝐀𝐝𝑖 )
Bukti:
Misalkan ambil sembarang vektor 𝐱 ∈ ℝ𝑛 .
Menggunakan (Definisi Kebebasan Linear)
𝑛
𝐱 = ∑ 𝛼𝑖 𝐝𝑖
𝑖=1
kemudian kalikan matriks definit positif A dengan vektor x
7
𝑛 𝑛
𝐀 (∑ 𝛼𝑖 𝐝𝑖 ) = ∑ 𝛼𝑖 𝐀𝐝i .
𝑖=1 𝑖=1
Diketahui vektor-vektor 𝐝𝑖 saling konjugat terhadap matriks A maka
𝑛
𝐱 = ∑ 𝜆𝑖 𝐝𝑖 .
𝑖=1
Karena 𝐝𝑖 saling konjugat terhadap matriks simetrik definit positif A, maka
diperoleh
(𝐝𝒊 , 𝐀𝐱) = (𝜆𝑖 𝐝𝑖 , 𝐀𝐝𝑖 )
(𝐝𝒊 , 𝐀𝐱) = 𝜆𝑖 (𝐝𝑖 , 𝐀𝐝𝑖 )
(𝐝𝑖 , 𝐀𝐱)
𝜆𝑖 = .
(𝐝𝑖 , 𝐀𝐝𝑖 )
Terdapat beberapa cara dalam menentukan vektor yang saling konjugat, salah
satunya dengan menentukan semua vektor eigen dari suatu matriks. Tetapi
menggunakan vektor eigen kurang praktis, metode yang lebih mudah dalam
menentukan suatu vektor saling konjugat adalah dengan menggunakan formula
modifikasi vektor berarah metode gradien konjugat.
Pada Teorema 2, akan ditunjukkan vektor berarah konjugat untuk fungsi
kuadratik dengan A matriks definit positif.
Teorema 2
Misalkan titik 𝐱 𝑘+1 diperoleh setelah langkah ke 𝑘 + 1 ketika
1
meminimumkan fungsi kuadratik 𝑓(𝐱) = 2 𝐱 𝐓 𝐀𝐱 + 𝐁 𝐓 𝐱 + 𝐂. Jika vektor
𝐝1 , 𝐝2 , 𝐝3 , … , 𝐝𝑗 adalah vektor-vektor berarah yang saling conjugate terhadap A
matriks definit positif, maka 𝐝𝑗𝑇 ∇𝑓(𝐱 𝑘+1 ) = 0 untuk 𝑗 = 1, 2, 3, … , 𝑘.
Bukti:
Jika 𝑓 adalah fungsi kuadratik dan nilai 𝐱 𝑘+1 diperoleh setelah langkah ke 𝑘 + 1,
maka berdasarkan (Definisi Vektor Gradien) diperoleh
∇𝑓(𝐱 𝑘+1 ) = 𝐀𝐱 𝑘+1 + 𝐁
= 𝐀(𝐱 𝑘 + 𝛼𝑘 𝐝𝑘 ) + 𝐁
= 𝐀(𝐱 𝑘 ) + 𝐁 + (𝛼𝑘 𝐀𝐝𝑘 )
= ∇𝑓(𝐱 𝑘 ) + 𝛼𝑘 𝐀𝐝𝑘 .
Dari persamaan di atas, kalikan kedua ruas dengan 𝐝𝑗 akan diperoleh
8
(ii) Saat 𝑗 = 𝑘
𝐝𝑗𝑇 ∇𝑓(𝐱 𝑘+1 ) = 0
karena sama dengan 𝐝𝑗𝑇 ∇𝑓(𝐱𝑗+1 ) saat 𝑗 < 𝑘.
Jadi terbukti 𝐝𝑗𝑇 ∇𝑓(𝐱 𝑘+1 ) = 0 untuk 𝑗 = 1, 2, 3, … , 𝑘.
Berikut merupakan grafik dari rata-rata jumlah iterasi dan waktu eksekusi
modifikasi vektor berarah metode gradien konjugat Fletcher-Reeves, Polak-Ribere-
Polyak, Hestenes-Stiefel, dan Dai-Yuan yang akan ditunjukkan pada Gambar 1 dan
Gambar 2.
11
30
25
BANYAK ITERASI
20
15
10
0
0 1 2 3 4 5 6
BANYAK VARIABEL
2.5
WAKTU EKSEKUSI (MILIDETIK)
1.5
0.5
0
0 1 2 3 4 5 6
JUMLAH VARIABEL
Pada Tabel 5 dan Gambar 1 dapat dilihat bahwa jumlah iterasi yang dilakukan
oleh keempat vektor berarah gradien konjugat memiliki nilai yang sama pada fungsi
dua dan fungsi tiga variabel. Hal ini disebabkan oleh jumlah variabel yang terlalu
sedikit. Berbeda dengan fungsi empat dan lima variabel, menunjukkan perbedaan
nilai yang cukup signifikan antarvektor berarah metode gradien konjugat. Begitu
pula dengan waktu iterasi yang diperlukan, pada Tabel 6 dan Gambar 2 terlihat
bahwa waktu eksekusi yang dibutuhkan untuk fungsi dua variabel dan tiga variabel
memiliki perbedaan waktu yang tidak terlalu jauh. Berbeda dengan fungsi empat
dan lima variabel yang memiliki perbedaan waktu yang cukup signifikan dari
keempat vektor berarah. Dari Gambar 1 dan Gambar 2, dapat dilihat bahwa vektor
berarah Hestenes-Stiefel memiliki nilai iterasi dan waktu eksekusi yang paling
minimum dibandingkan tiga vektor berarah lainnya.
12
Pada contoh perhitungan ini fungsi yang digunakan adalah 𝑓(𝐱) = 2𝑥12 +
0
𝑥22 + 6𝑥1 + 8𝑥2 + 15, 𝐱 0 = [ ], dan 𝜀 = 0.01.
0
Contoh 1 Perhitungan metode gradien menggunakan metode analitik
Mencari titik kandidat optimum,
4𝑥 + 6
∇𝑓(𝐱) = 0 ⇔ [ 1 ]=0
2𝑥2 + 8
sehingga
(𝑖) 4𝑥1 + 6 = 0 ⇔ 4𝑥1 = −6
6
⇔ 𝑥1 = −
4
⇔ 𝑥1 = −1.5
(𝑖𝑖) 2𝑥2 + 8 = 0 ⇔ 2𝑥2 = −8
8
⇔ 𝑥2 = −
2
⇔ 𝑥2 = −4
𝑥1 −1.5
Jadi 𝐱 ∗ = (𝑥 ) = ( ) merupakan titik kandidat optimum.
2 −4
Cek titik kandidat yang memenuhi syarat optimum
4 0
H(𝐱 ∗ ) = ( ).
0 2
4 0
Misalkan H(𝐱 ∗ ) = A maka A = ( )
0 2
sehingga
4 0 −1.5
𝐱 ∗ 𝑻 𝐀𝐱 = (−1.5 −4) ( )( )
0 2 −4
= 41.
Karena 𝐱 ∗ 𝑻 𝐀𝐱 > 0 maka H(𝐱 ∗ ) adalah definit positif, sehingga
𝑥1 −1.5
𝐱 ∗ = (𝑥 ) = ( ) adalah minimum lokal dari fungsi 𝑓(𝐱).
2 −4
−6
𝐝0 = −∇𝑓(𝐱 𝟎 ) = [ ]
−8
𝐠 0 (𝛼) = 𝑓(𝐱 0 + 𝛼𝐝0 )
0 −6
= 𝑓 ([ ] + 𝛼 [ ])
0 −8
= 2(−6𝛼)2 + (−8𝛼)2 + 6(−6𝛼) + 8(−8𝛼) + 15
= 72𝛼 2 + 64𝛼 2 − 36𝛼 − 64𝛼 + 15 = 136𝛼 2 − 100𝛼 + 15
𝐠 ′0 (𝛼) = 0 ⇔ 272𝛼 − 100 = 0
100
⇔ 𝛼0 = 272 = 0.3676
𝐱1 = 𝐱 0 + 𝛼0 𝐝0
0 −6 −2.2056
= [ ] + 0.3676 [ ] = [ ]
0 −8 −2.9408
4(−2.2056) + 6 −2.8224
∇𝑓(𝐱1 ) = [ ]=[ ]
2(−2.9408) + 8 2.1184
‖∇𝑓(𝐱1 )‖ = √(−2.8224)2 + (2.1184)2 = 3.52896
‖∇𝑓(𝐱1 )‖ > ɛ, maka 𝑥1 belum memenuhi kriteria penghentian.
Iterasi 2:
k=1
−2.8224 𝑇 −2.8224
𝐠 𝑇𝑘
𝐠𝑘 [ ] [ ] 12.4536
𝛽𝑘𝐹𝑅 = = 2.1184 𝑇 2.1184 = = 0.124536
𝐠 𝑇𝑘−1
𝐠 𝑘−1 6 6 100
[ ] [ ]
8 8
−2.8224 −6 2.0752
𝐝1 = −∇𝑓(𝐱1 ) + 𝛽𝑘 𝐝0 = [ ] + 0.124536 [ ] = [ ]
2.1184 −8 −3.1147
−2.2056 2.0752
𝐠1 (𝛼) = 𝑓(𝐱1 + 𝛼𝐝𝟏 ) = 𝑓 ([ ]+𝛼[ ])
−2.9408 −3.1147
= 2(−2.2056 + 2.0752𝛼)2 + (−2.9408 − 3.1147𝛼)2
+6(−2.2056 + 2.0752𝛼) + 8(−2.9408 − 3.1147𝛼) + 15
= (8.6129 + 9.7014)𝛼 2 ± 18.3082 + 18.3194 + 12.451
−24.9176)𝛼 + (9.7393 + 8.6483 − 13.2336 − 23.5264 + 15)
= 18.3143𝛼 2 − 12.4552𝛼 − 3.3724
𝐠1′ (𝛼) = 0 ⟺ 36.6286𝛼 − 12.4522 = 0
12.4522
⟺ 𝛼1 = = 0.33996
36.6286
14
SIMPULAN
Metode gradien konjugat adalah salah satu teknik optimasi yang bersifat
iteratif yang dapat digunakan dalam menyelesaikan masalah optimasi tanpa kendala
skala besar. Salah satu sifat utama metode gradien konjugat adalah vektor-vektor
berarah yang saling konjugat. Hasil numerik menggunakan aplikasi android pada
penelitian ini menunjukkan bahwa modifikasi metode gradien konjugat Hestenes-
Stiefel dapat menemukan solusi dengan rata-rata waktu eksekusi yang lebih cepat
dan rata-rata jumlah iterasi yang lebih minimum dibandingkan dengan vektor
berarah lainnya. Pada masalah dua dan tiga variabel, perbedaan jumlah iterasi dan
waktu eksekusi tidak begitu terlihat perbedaannya. Sedangkan, pada masalah empat
dan lima variabel, perbedaan jumlah iterasi dan waktu eksekusi memiliki berbeda
nilai yang cukup jauh antar vektor berarah metode gradien konjugat.
DAFTAR PUSTAKA
Bartle RG, Sherbert DR. 1982. Introduction to Real Analysis. Second Edition. New
York (US): John Wiley and Sons.
Bazzara MS, Sherali HD, Shetty CM. 1993. Nonlinear Programing: Theory and
Applications. Singapore(SG): John Willey and Sons, Inc.
Chen YY. 2012. Global Convergence of a New Konjugat gradien with Wolfe Type
Line Search .Journal of Information and Computing Science 7(1): 67-71.
Dai YH, Yuan Y. 1999. A Nonlinear Conjugate Gradient Method with a Strong
Global Convergence Property. SIAM Journal on Optimization. 10(1):177-
82.doi:10.1137/S1052623497318992.
Fletcher R. 1987. Practical Methods of Optimization, Unconstrained
Optimization. New York: Wiley.
Fletcher R, Reeves C. 1964. Function Minimization by Conjugate Gradients. The
Computer Journal. 7(2):149-154.doi:10.1093/comjnl/7.2.149.
Hestenes MR, Stiefel EL. 1952. Methods of Conjugate Gradients for Solving
Linear Systems. Journal of Research of the National Bureau of Standards.
49(6): 409-432.
Klerk E, Roos C, Terlaky T. 2005. Optimization. Netherland: Delft University of
Technology.
Leon SJ. 1998. Linear Algebra with Applications. 5th ed. New Jersey (USA):
Prentice Hall.
Liu YL, Storey CS. 1991. Efficient Generalized Conjugate Gradient Algorithms,
Part 1: Theory. Journal of Optimization Theory and Applications.
69(1):129-137.doi:10.1007/BF00940464.
Peressini AL, Sullivan FE, Uhl JJ Jr. 1988. The Mathematics of Nonlinear
Programming. Spinger-Verlag, New York.
Polyak BT. 1969. The Conjugate Gradient Method in Extreme Problems. USSR
Computational Mathematics and Mathematical Physics. 9:94-
112.doi:10.1016/0041-5553(69)90035-4.
16
double x1 = Double.parseDouble(input6.getText().toString());
double x2 = Double.parseDouble(input7.getText().toString());
double tol = Double.parseDouble(input8.getText().toString());
double inputA = Double.parseDouble(input1.getText().toString());
double inputB = Double.parseDouble(input2.getText().toString());
double inputC = Double.parseDouble(input3.getText().toString());
double inputD = Double.parseDouble(input4.getText().toString());
double inputE = Double.parseDouble(input5.getText().toString());
LGM1 = d(x1);
dx3 = LGM1 * LGM1;
LGM2 = e(x2);
ex3 = LGM2 * LGM2;
z1 = Math.abs(Math.sqrt(dx3 + ex3));
dx1 = -LGM1;
ex2 = -LGM2;
a = (inputA * dx1 * dx1 + inputB * ex2 * ex2);
b = ((2 * dx1 * x1 * inputA) + (inputB * 2 * ex2 * x2) + (inputC * dx1) +
(inputD * ex2));
c = x1 * x1 * inputA + inputB * x2 * x2 + inputC * x1 + inputD * x2 + inputE;
lambda = -b / (2 * a);
y1 = x1 + lambda * (dx1);
y2 = x2 + lambda * (ex2);
x1 = y1;
x2 = y2;
LGM11 = d(x1);
dx3 = LGM11 * LGM11;
LGM22 = e(x2);
ex3 = LGM22 * LGM22;
z2 = Math.abs(Math.sqrt(dx3 + ex3));
k = k + 1;
i = tol;
betta=(((LGM11*LGM11)+(LGM22*LGM22)))/((LGM1*LGM1)
+LGM2*LGM2);
19
dx1=-(LGM11)+(betta*-LGM1);
ex2=-(LGM22)+(betta*-LGM2);
//(LGM2*LGM2);
a = (inputA * dx1 * dx1 + inputB * ex2 * ex2);
b = ((2 * dx1 * x1 * inputA) + (inputB * 2 * ex2 * x2) + (inputC * dx1) +
(inputD * ex2));
c = x1 * x1 * inputA + inputB * x2 * x2 + inputC * x1 + inputD * x2 +
inputE;
y1 = x1 + lambda * (dx1);
y2 = x2 + lambda * (ex2);
x1 = y1;
x2 = y2;
LGM1=LGM11;
LGM2=LGM22;
LGM11 = d(x1);
dx3 = LGM11 * LGM11;
LGM22 = e(x2);
ex3 = LGM22 * LGM22;
z1=z2;
z2 = Math.abs(Math.sqrt(dx3 + ex3));
k = k + 1;
}
}
hasilk.setText(hasilString1);
hasilx1.setText(hasilString2);
hasilx2.setText(hasilString3);
hasilwaktu.setText(hasilString4);
double x1 = Double.parseDouble(input8.getText().toString());
double x2 = Double.parseDouble(input9.getText().toString());
double x3 = Double.parseDouble(input10.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(input11.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;
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);
21
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;
betta=(((LGM11*LGM11)+(LGM22*LGM22)+(LGM33*LGM33)
))/((LGM3*LGM3)+(LGM1*LGM1)+LGM2*LGM2);
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);
dx3 = LGM11 * LGM11;
LGM22 = e(x2);
ex3 = LGM22 * LGM22;
LGM33 = g(x3);
gx3 = LGM33 * LGM33;
z1=z2;
z2 = Math.abs(Math.sqrt(dx3 + ex3));
k=k;
}
else {
lambda = -b / (2 * a);
y1 = x1 + lambda * (dx1);
22
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);
gx3 = LGM33 * LGM33;
z2 = Math.abs(Math.sqrt(dx3 + ex3 + gx3));//nih normnya cek
k = k + 1;
}
}
hasilk.setText(hasilString1);
hasilx1.setText(hasilString2);
hasilx2.setText(hasilString3);
hasilx3.setText(hasilString4);
hasilwaktu.setText(hasilString5);
}
double x1 = Double.parseDouble(input12.getText().toString());
double x2 = Double.parseDouble(input13.getText().toString());
double x3 = Double.parseDouble(input14.getText().toString());
double x4 = Double.parseDouble(input15.getText().toString());
double x5 = Double.parseDouble(input16.getText().toString());
23
LGM1 = d(x1);
dx3 = LGM1 * LGM1;
LGM2 = e(x2);
ex3 = LGM2 * LGM2;
LGM3 = g(x3);
gx3 = LGM3 * LGM3;
LGM4 = h(x4);
hx4 = LGM4*LGM4;
LGM5 = j(x5);
jx5 = LGM5*LGM5;
z1 = Math.abs(Math.sqrt(dx3 + ex3 + gx3 + hx4 + jx5));
i = tol;
dx1 = -LGM1;
ex2 = -LGM2;
gx3 = -LGM3;
hx4 = -LGM4;
jx5 = -LGM5;
b =
(inputF*dx1+inputG*ex2+inputH*gx3+inputP*hx4+inputO*jx5+2
*inputA*dx1*x1+2*inputB*ex2*x2+2*inputU*gx3*x3+2*inputD
*hx4*x4+2*inputE*jx5*x5);
a = ((inputA * dx1 * dx1) + (inputB * ex2 * ex2) + (inputU * gx3 *
gx3)+(inputD*hx4*hx4)+(inputE*jx5*jx5));
c = (inputR + (inputF * x1) + (inputA * x1 * x1) + (inputG * x2) + (inputB *
x2 * x2) + (inputH * x3) + (inputU * x3 *
x3)+(inputP*x4)+(inputD*x4*x4)+(inputO*x5)+(inputE*x5*x5));
lambda = -b / (2 * a);
y1 = x1 + lambda * (dx1);
y2 = x2 + lambda * (ex2);
y3 = x3 + lambda * (gx3);
y4 = x4 + lambda * (hx4);
24
y5 = x5 + lambda * (jx5);
x1 = y1;
x2 = y2;
x3 = y3;
x4 = y4;
x5 = y5;
LGM11 = d(x1);
dx3 = LGM11 * LGM11;
LGM22 = e(x2);
ex3 = LGM22 * LGM22;
LGM33 = g(x3);
gx3 = LGM33 * LGM33;
LGM44 = h(x4);
hx4 = LGM44*LGM44;
LGM55 = j(x5);
jx5 = LGM55*LGM55;
z2 = Math.abs(Math.sqrt(dx3 + ex3 + gx3 + hx4 + jx5));//nih normnya cek
k = k + 1;
while (z2 >i){
betta=(((LGM44*LGM44)+(LGM55*LGM55)+(LGM11*LGM11)
+(LGM22*LGM22)+(LGM33*LGM33)))/(((LGM3*LGM3)+(LG
M1*LGM1)+LGM2*LGM2)+(LGM4*LGM4)+(LGM5*LGM5));
dx1=-(LGM11)+(betta*-LGM1);
ex2=-(LGM22)+(betta*-LGM2);
gx3=-(LGM33)+(betta*-LGM3);
hx4=-(LGM44)+(betta*-LGM4);
jx5=-(LGM55)+(betta*-LGM5);
b =
(inputF*dx1+inputG*ex2+inputH*gx3+inputP*hx4+inputO*jx5+2
*inputA*dx1*x1+2*inputB*ex2*x2+2*inputU*gx3*x3+2*inputD
*hx4*x4+2*inputE*jx5*x5);
a = ((inputA * dx1 * dx1) + (inputB * ex2 * ex2) + (inputU * gx3 *
gx3)+(inputD*hx4*hx4)+(inputE*jx5*jx5));
c = (inputR + (inputF * x1) + (inputA * x1 * x1) + (inputG * x2) + (inputB
* x2 * x2) + (inputH * x3) + (inputU * x3 *
x3)+(inputP*x4)+(inputD*x4*x4)+(inputO*x5)+(inputE*x5*x5));
LGM4=LGM44;
LGM5=LGM55;
LGM11 = d(x1);
dx3 = LGM11 * LGM11;
LGM22 = e(x2);
ex3 = LGM22 * LGM22;
LGM33 = g(x3);
gx3 = LGM33 * LGM33;
LGM44 = h(x4);
hx4 = LGM44*LGM44;
LGM55 = j(x5);
jx5 = LGM55*LGM55;
z1=z2;
z2 = Math.abs(Math.sqrt(dx3 + ex3));
k=k;
}
else {
lambda = -b / (2 * a);
y1 = x1 + lambda * (dx1);
y2 = x2 + lambda * (ex2);
y3 = x3 + lambda * (gx3);
y4 = x4 + lambda * (hx4);
y5 = x5 + lambda * (jx5);
x1 = y1;
x2 = y2;
x3 = y3;
x4 = y4;
x5 = y5;
LGM1=LGM11;
LGM2=LGM22;
LGM3=LGM33;
LGM4=LGM44;
LGM5=LGM55;
LGM11 = d(x1);
dx3 = LGM11 * LGM11;
LGM22 = e(x2);
ex3 = LGM22 * LGM22;
LGM33 = g(x3);
gx3 = LGM33 * LGM33;
LGM44 = h(x4);
hx4 = LGM44*LGM44;
LGM55 = j(x5);
jx5 = LGM55*LGM55;
26
hasilk.setText(hasilString1);
hasilx1.setText(hasilString2);
hasilx2.setText(hasilString3);
hasilx3.setText(hasilString4);
hasilx4.setText(hasilString5);
hasilx5.setText(hasilString6);
hasilwaktu.setText(hasilString7);
}
27
RIWAYAT HIDUP