UNIVERSITAS GADJAH MADA PROGRAM STUDI FISIKA FMIPA
Bahan Ajar 5:
Permasalahan Akar Suatu Fungsi (Minggu ke-9 dan ke-10)
PEMROGRAMAN DAN METODE NUMERIK Semester 2/ 2 sks/ MFF 1024 Oleh Dr. Fahrudin Nugroho Dr. Iman Santosa Didanai dengan dana BOPTN P3-UGM Tahun Anggaran 2013 November 2013
BAB 6 Permasalahan Akar Fungsi Pada bab 6 ini akan mulai dibahas mengenai suatu metode numerik yang didasarkan pada matematika diskret dan algoritma dan pemrograman yang telah dibahas pada bab yang telah lalu. Lebih lanjut akan disajikan pula suatu permasalahan fisis yang dapat diselesaikan melalui metode numerik yang dimaksud. Topik yang akan disajikan pada bab ini adalah permasalahan akar fungsi yang merupakan permasalahan yang cukup fundamental dalam matematika. Suatu nilai disebut sebagai akar dari sebuah fungsi jika nilai tersebut menghasilkan luaran 0 (nol) saat dimasukan ke dalam fungsi yang dimaksud. Oleh karenanya permasalahan akar ini seringkali disebut sebagai pencarian titik nol. Untuk suatu fungsi linear maka nilai akar (titik nol) baginya dapat diperoleh dengan mudah, oleh karenanya dalam bab ini akan dibahas mengenai pencarian akar pada fungsi-fungsi yang tak linear. Banyak contoh fungsi yang tak linear dalam metematik diantaranya adalah fungsi polinom dan fungsifungsi trigonometrik. Untuk jenis fungsi-fungsi nonlinear tersebut terdapat beberapa metode numerik dapat digunakan untuk memperoleh nilai akarnya, berikut adalah beberapa metode yang dimaksud.
6.1 Metode Bisection Metode bisection merupakan metode paling sederhana bagi penyelesaian akar fungsi tak linear pada suatu interval yang diketahui. Kelebihan dari metode ini adalah bisa digunakan bagi sembarang fungsi termasuk pada suatu fungsi-fungsi yang tidak bisa diselesaikan secara analitik. Berdasarkan namanya seseungguhnya kita bisa menebak secara intuitif maksud dari metode ini, yaitu jika pada suatu interval tertentu terdapat suatu akar dari fungsi maka interval tersebut dibagi menjadi dua interval baru. Lalu dapat
dipastikan diantara kedua interval yang terbentuk tersebut terdapat satu interval yang memuat akar (titik nol) fungsi.
Gambar 1: Ilustrasi pencarian titik nol dengan metode bisection. Pertama asumsikan bahwa pada interval x = a dan x = c atau dapat dituliskan [a,c] dan
terdapat satu buah akar bagi sebuah fungsi seperti ditunjukan gambar di atas (perhatikan panah biru pada gambar). Kemudian metode Bisection bekerja berdasarkan fakta bahwa
tanda pada dua sisi yaitu kiri dan kanan titik nol adalah berlawanan, yaitu f(a) positif dan
f(c) negatif. Maka langkah dalam metode Bisection untuk mendekati nilai akar adalah sebagai berikut:
1. Pertama membagi interval menjadi dua (Bisect) yaitu [a,b] dan [b, c] dimana b = (a + c)/2. 2. Mencari interval yang masih mengandung akar fungsi dengan cara melakukan perkalian antara f(a)f(b) dan f(b)f(c). Jika f(a)f(b) < 0 maka interval [a,b] mengandung akar fungsi. (lihat gambar 1). 3. Interval [a,b] dibagi menjadi dua lagi "di-Bisect" dan prosedur pencarian interval yang mengandung akar fungsi dilakukan secara berulang.
4. Pada setiap langkah titik tengah interval akan digunakan sebagai nilai pendekatan bagi akar fungsi yang dimaksud/dicari. Setelah n langkah perulangan maka akan diperoleh !!! !!
,
(6.1)
Nilai ini dapat digunakan untuk menentukan batas toleransi bagi program untuk melakukan iterasi sampai mencapai interval terkecil. Jika diberikan toleransi 𝜖 maka berlaku 𝜖≥ atau dapat dituliskan sebagai
!!! !!
𝑛 ≥ ln (
,
(6.2)
!!! !
),
(6.3)
Sebagai contoh jika interval awal adalah [0;1] dan 𝜖 = 0.0001 maka n = 14. Quiz: Hitunglah akar fungsi berikut dengan menggunakan metode bisect pada interval [0, 2] dan toleransi 𝜖= 0. 01 𝑓 𝑥 = 𝑒 ! − 2 = 0 , Berikut ini adalah kode program yang berdasarkan pada metode Bisection untuk menyelesaikan permasalahan persamaan di atas. #include <stdio.h> #include <math.h> double func(double x){ return exp(x) -2.0; } int main(void){ double leftpt, rightpt, midpt, epsilon = 0.0000001; double midvalue, rtvalue, root; printf("\nEnter values for starting left and right points:\n");
scanf("%lf %lf", &leftpt, &rightpt); printf("
Left
and
right
starting
points
are:
%lf
,
%lf\n", leftpt,rightpt); do { midpt = (leftpt + rightpt)/2; rtvalue = func(rightpt); midvalue = func(midpt); if (rtvalue * midvalue >= 0) rightpt = midpt; else leftpt = midpt; } while ((rightpt - leftpt) > epsilon); root = (rightpt+leftpt)/2; printf("\nRoot is: %15.10lf\n", root); return 0; } Ubahlah kode sumber di atas untuk mencari akar fungsi polynomial 𝑓 𝑥 = 𝑥 ! − 3𝑥 ! − 𝑥 + 3. 6.2 Metode Newton Pada bagian sebelumnya telah dijelaskan mengenai suatu metode yang sangat sederhana penyelesaian numerik bagi permasalahan pencarian akar suatu fungsi. Pada bagian ini akan dijelaskan metode yang lain yaitu metode Newton atau yang dikenal pula dengan metode Newton-Raphson. Kelebihan dari metode ini adalah dapat digunakan untuk menyeleaikan permasalahan akar kompleks dan bahkan bisa diterapkan pada persamaan-persamaan nonlinear secara simultan. Akan tetapi ada satu titik kelemahan dalam metode ini yaitu diperlukan suatu titik tebakan awal bagi nilai akar dari suatu fungsi. Metode Newton dapat diperoleh dari deret Taylor sebagai berikut: 𝑓 𝑥 = 𝑓 𝑎 + ℎ𝑓 ! 𝑎 +
!!
𝑓 !! 𝑎 + !!
!!
!!
𝑓 !! ! ! + ⋯ !! 𝑓 !!
!
(𝑎)
(6.5)
Dimana h = x-a dan f’, f’’, adalah beturut-turut turunan pertama, kedua dan seterusnya dari fungsi f. Untuk suatu nilai tebakan x0 dan pendekatan dua suku pertama maka berlaku 𝑓 𝑥 = 0 = 𝑓 𝑥! + 𝑥 − 𝑥! 𝑓 ! 𝑥! + 𝑂(ℎ! )
(6.6)
Dimana h = x - x0. Dengan menyelesaikan persamaan di atas maka dapat diperoleh 0 = 𝑓 𝑥! + 𝑥 − 𝑥! 𝑓′(𝑥! ) ! !! !! !!
(6.7)
= 𝑥 − 𝑥! 𝑓′(𝑥! )
(6.8)
! !
𝑥 = 𝑥! − !! !!
(6.9)
!
Yang kemudian secara suksesif dapat diperoleh kaitan: ! !
𝑥! = 𝑥!!! − !! !!
(6.10)
!
Dari uraian di atas maka sesungguhnya proses pencarian akar dengan metode Newton ini dapat diilustrasikan sebagai berikut
Gambar 2: Ilustrasi pencarian titik nol dengan menggunakan metode Newton.
Suatu hal yang perlu diingat pada metode ini adalah diperlukan turunan bagi suatu fungsi yang ingin diketahui nilai akarnya menggunakan metode ini. Oleh karenanya tidak
sembarang fungsi dapat diselesaikan, melainkan hanya fungsi yang mempunyai turunan yang kontinyu. Quiz: Dengan menggunakan metode Newton carilah hasil akar pangkat tiga berikut 𝑥=
!
𝑎
a untuk nilai a = 155. Contoh lain program pencarian titik nol dengan metode Newton- Raphson #include <stdio.h> #include <math.h> float fung(float x); float dfung(float x); int main(int argc, char * argv[]) { float x0, x1, delta, tol; int i, imak; imak = 20; tol= 1.0e-4; printf("Berikan masukan nilai x0 = "); scanf("%f", &x0); printf("\n"); i = 0; do { i = i + 1; x1 = x0 - fung(x0)/dfung(x0); delta = x1 - x0; if (delta < 0) delta = -delta; printf("Hasil iterasi ke-%d adalah %f\n", i, x1); x0 = x1;
} while ((delta > tol) && (i < imak)); printf("\nNilai akar = %f\n", x1); } float fung(float x) { return x*x*x-155; } float dfung(float x) { return 3*x*x; } Berikut hasil luaran setelah program dijalankan Berikan masukan nilai x0 = 4 Hasil iterasi ke-1 adalah 5.895833 Hasil iterasi ke-2 adalah 5.416902 Hasil iterasi ke-3 adalah 5.372062 Hasil iterasi ke-4 adalah 5.371686 Hasil iterasi ke-5 adalah 5.371686 Nilai akar = 5.371686 Perlu diketahui bahwa nilai tersebut merupakan nilai eksak bagi fungsi tersebut.
6.2.1 PR Berikut disajikan permasalahan _sika terkait masalah Gravitasi: Dua buah benda bermassa m1 = 103 kg dan m2 = 3 x 105 kg mempunyai jarak 10 km. Di antara keduanya diletakan benda lain dengan massa m3 = 10 kg. Dengan menggunakan metode Bisection dan Newton tentukan posisi benda ketiga agar terjadi kesetimbangan gaya gravitasi padanya. Gunakanlah kode program yang telah ada pada catatan kuliah ini.
6.2.2 Metode Newton Orde Dua (Pengayaan)
Setelah memahami metode Newton-Raphson di atas ikutilah peunjuk dibawah ini untuk bisa memahami metode yang sama pada orde yang lebih tinggi yaitu orde dua 1. Ubah program kode jika sistem yang ditinjau empat muatan listrik yang sejajar. 2. Bagaimana jika dicoba suatu nilai tebakan posisi tidak diantara kedua/empat muatan 3. Bagaimana pula jika nilai tebakan sangat dekat pada satu titik muatan? 4. Ubah kode program menggunakan metode Newton Raphson orde dua sebagai berikut: 𝑋!!! = 𝑋! −
!(!! ) ! ! !"(! )
! ! ! ! !! ! !!!(!! )
bandingkan hasil ini dengan metode Newton Raphson orde 1. 5. Apa yang dapat anda simpulkan dari hasil case 1 s/d 4?
(6.11)