1 Penyelesaian Persamaan Nonlinear Diberikan fungsi kontinu f (x). Setiap bilangan c pada domain f yang memenuhi f (c) = 0 disebut akar persamaan f (x) = 0, atau disebut juga pembuat nol fungsi f. Dalam beberapa kasus, terdapat fungsi dimana tidak dapat ditentukan secara eksplisit pembuat nol fungsi tersebut. Contoh. Fungsi f : R R memenuhi f (x) = e x sin (x + 1). Akar dari persamaan tersebut yaitu GAM BAR atau e x sin (x + 1) = 0 e x = sin (x + 1) merupakan titik potong antara dua kurva y = x 2 dan y = sin (x + 1). Dalam hal ini metode numerik digunakan untuk memberikan hampiran suatu selesaian permasalahan matematis yang tidak dapat diselesaikan secara analitik atau mungkin dapat diselesaikan secara analitik tetapi dibutuhkan perhitungan yang cukup rumit. 1.1 Metode Newton-Rhapson Metode Newton-Rhapson adalah salah satu teknik yang cukup sering digunakan karena sangat powerful. Menggunakan aproksimasi yang berdasarkan turunan, metode ini menjadi teknik yang cukup efisien. Misalkan f adalah fungsi bernilai real yang dapat diturunkan pada selang tertutup [a, b] dan misalkan pula r adalah akar dari persamaan f (x) = 0. Garis singgung f menjadi salah satu pekatan untuk nilai f di sekitar titik singgung. Lebih jauh, pembuat nol garis singgung tersebut menjadi salah satu hampiran pembuat nol untuk f. Tentu saja akurasi hampiran ini tidak terlepas dari pemilihan titik singgung. Itu sebabnya, dilakukan beberapa kali iterasi untuk mapatkan hasil yang lebih akurat. Pemilihan titik singgung awal, di beberapa kasus, juga mempengaruhi hasil yang diperoleh. Misalkan f adalah fungsi bernilai real yang dapat diturunkan pada selang tertutup [a, b] dan misalkan pula r adalah akar dari persamaan f (x) = 0. Misalkan x 0 adalah hampiran awal (initial point) dan misalkan r = x 0 + h. Karena akar persamaan adalah r maka h = r x 0 adalah beda antara hampiran dan nilai yang sebenarnya. Seperti dijelaskan sebelumnya, metode ini menggunakan garis singgung sebagai hampiran linear. Untuk h yang bernilai cukup kecil, bisa diperoleh 0 = f (r) = f (x 0 + h) f (x 0 ) + hf (x 0 ) sehingga, untuk f (x 0 ) yang tidak dekat ke 0, diperoleh sehingga Estimasi x 1 didapat dengan h f (x 0) f (x 0 ) r = x 0 + h x 0 f (x 0) f (x 0 ). x 1 = x 0 f (x 0) f (x 0 ). Estimasi x 2 didapat dengan cara yang sama sehingga didapat x 2 = x 1 f (x 1) f (x 1 ). Dengan melakukan hal ini berulang-ulang, jika x n adalah estimasi ke-n maka estimasi berikutnya adalah x n+1 yang diperoleh dengan x n+1 = x n f (x n) f (x n ). 1
atau bisa ditulis juga dalam bentuk n+1 (x) = f (x n) f (x n ) GAM BAR 1.1.1 Algoritma Penyelesaian Misalkan f adalah fungsi terdiferensialkan yang akan dicari akarnya dan f adalah turunannya. Misalkan pula x 0 adalah tebakan awal, r adalah batas toleransi, dan x adalah estimasi akar dari hasil iterasi. 1. Tentukan tebakan awal x = x 0 dan periksa apakah f (x) = 0 jika tidak, lanjut ke langkah 2. 2. Hitung x = f(xn) f (x n). 3. Masukkan x x + x dan ulangi langkah ke-2-3 hingga x < r. 1.1.2 Kekurangan Meskipun metode Newton-Rhapson konvergen dengan cepat di dekat akar, namun konvergensi secara umum tidaklah begitu bagus. Hal ini bisa diatasi salah satunya dengan sedikit modifikasi penambahan metode biseksi untuk mempercepat konvergensi saat jauh dari akar. 1.1.3 Kode Matlab Berikut kode Matlab untuk metode Newton-Rhapson sederhana dengan maksimum 30 iterasi dan eror 10 6. function [root,numiter] = newton_simple(func,dfunc,x,tol) if nargin < 5; tol = 1.0e6*eps; for i = 1:30 dx = -feval(func,x)/feval(dfunc,x); x = x + dx; if abs(dx) < tol root = x; numiter = i; return root = NaN Contoh. Tentukan akar dari persamaan f (x) = e x sin (x + 1) Sebelum menggunakan algoritma tentu saja kita harus menentukan turunan fungsi tersebut terlebih dahulu. f (x) = d dx (ex sin (x + 1)) = e x cos (x + 1). Simpan fungsi f (x) lalu jalankan dengan terminal. 2
function y = f(x) y = exp(x) - sin(x+1); function y = df(x) y = exp(x) - cos(x+1); Panggil program beserta fungsi yang diperlukan beserta tebakan awal. Tentu saja tebakan awal harus kurang dari 1 karena nilai fungsi sinus selalu kurang dari 1. >> [root,numiter]=newton_simple(@f,@df,0.5) root = numiter = 1.1.4 Kode Matlab Modifikasi Berikut kode Matlab untuk metode Newton-Rhapson dengan modifikasi metode biseksi. function root = newtonraphson(func,dfunc,a,b,tol) % Newton-Raphson method combined with bisection for % finding a root of f(x) = 0. % USAGE: root = newtonraphson(func,dfunc,a,b,tol) % INPUT: % func = handle of function that returns f(x). % dfunc = handle of function that returns f (x). % a,b = brackets (limits) of the root. % tol = error tolerance (default is 1.0e6*eps). % OUTPUT: % root = zero of f(x) (root = NaN if no convergence). if nargin < 5; tol = 1.0e6*eps; fa = feval(func,a); fb = feval(func,b); if fa == 0; root = a; return; if fb == 0; root = b; return; if fa*fb > 0.0 error( Root is not bracketed in (a,b) ) x = (a + b)/2.0; for i = 1:30 fx = feval(func,x); if abs(fx) < tol; root = x; return; if fa*fx < 0.0; b = x; else; a = x; dfx = feval(dfunc,x); if abs(dfx) == 0; dx = b - a; else; dx = -fx/dfx; x = x + dx; if (b - x)*(x - a) < 0.0 dx = (b - a)/2.0; x = a + dx; if abs(dx) < tol*max(b,1.0) root = x; return root = NaN 3
1.1.5 Latihan 1. Dengan metode Newton-Rhapson, dengan tebakan awal 3, tentukan nilai dari 10 dengan akurasi 10 6. 2. Persamaan Newton y 3 2y 5 = 0 mempunyai akar dekat dengan 2. Dimulai dengan y 0 = 2, tentukan estimasi y 1, y 2, dan y 3. 3. Tentukan semua solusi dari persamaan e 2x = x + 6 sampai 4 tempat desimal. 4. Fungsi produksi suatu perusahaan mobil memenuhi persamaan berikut: f (x) = x 2 x 1 dengan x adalah jumlah masukan (bahan baku) dalam ton. Tentukan berapa banyak bahan baku yang dibutuhkan agar perusahaan tersebut menghasilkan 30 mobil dengan toleransi kesalahan 0.0001 ton. 1.2 Metode Newton-Rhapson untuk Sistem Persamaan Metode Newton-Rhapson selain bisa digunakan untuk menentukan akar atau solusi persamaan satu variabel, metode ini juga bisa digunakan untuk menentukan solusi sistem persamaan. Misalkan f (x) = 0 dengan f 1 (x 1, x 2,..., x n ) = 0 f 2 (x 1, x 2,..., x n ) = 0 f n (x 1, x 2,..., x n ) = 0. Pada metode Newton-Rhapson untuk n persamaan, tebakan nilai awal sangat berpengaruh. Namun untuk n variabel kita tidak bisa lagi menggunakan metode biseksi untuk mencegah hal ini. Kita hanya bisa bergantung pada kondisi fisik, jika persamaan tersebut memiliki interpretasi fisis. 1.2.1 Metode Newton-Rhapson Misalkan f (x) = 0, ekspansi taylor pada f i (x) memberikan f i (x+ x) = f i (x) + n j=1. f i x j x j + O ( x 2). Dengan mengabaikan O ( x 2) persamaan tersebut bisa ditulis dengan f (x + x) = f (x) + J (x) x dengan J (x) adalah matriks Jacobi untuk f. Jika x adalah estimasi solusi untuk f (x) dan x + x adalah solusi yang diperbaiki, maka dengan mengasumsikan f (x + x) = 0 didapat J (x) x = f (x). Tentu saja penghitungan matriks Jacobi tidak selalu mudah. Dalam hal ini turunan parsial bisa dilakukan dengan pekatan f i f i (x + e j h) + f i (h) x j h yang didapat dari persamaan sebelumnya dengan mengabaikan O ( x 2) dan mengambil x = e j h. 4
1.2.2 Algoritma Penyelesaian Dengan menggunakan notasi sebelumnya, algoritma untuk penyelesaian adalah sebagai berikut: 1. Berikan nilai tebakan awal fungsi x = x 0 2. Evaluasi nilai f (x). 3. Hitung matriks Jacobi J (x). 4. Buat persamaan dan tentukan nilai x. 5. Masukkan x x+ x dan ulangi langkah ke 2-5 hingga x < r. 1.3 Kode Matlab Berikut kode Matlab untuk metode Newton-Rhapson untuk sistem persaman function root = newtonraphsonspl(func,x,tol) % Newton-Raphson method of finding a root of simultaneous % equations fi(x1,x2,...,xn) = 0, i = 1,2,...,n. % USAGE: root = newtonraphson2(func,x,tol) % INPUT: % func = handle of function that returns[f1,f2,...,fn]. % x = starting solution vector [x1,x2,...,xn]. % tol = error tolerance (default is 1.0e4*eps). % OUTPUT: % root = solution vector. if nargin == 2; tol = 1.0e4*eps; if size(x,1) == 1; x = x ; % x must be column vector for i = 1:30 [jac,f0] = jacobian(func,x); if sqrt(dot(f0,f0)/length(x)) < tol root = x; return dx = jac\(-f0); x = x + dx; if sqrt(dot(dx,dx)/length(x)) < tol*max(abs(x),1.0) root = x; return error( Too many iterations ) function [jac,f0] = jacobian(func,x) % Returns the Jacobian matrix and f(x). h = 1.0e-4; n = length(x); jac = zeros(n); f0 = feval(func,x); for i =1:n temp = x(i); x(i) = temp + h; f1 = feval(func,x); x(i) = temp; jac(:,i) = (f1 - f0)/h; 5
Contoh. Tentukan solusi sistem persamaan berikut dengan menggunakan newtonrhapsonspl dengan tebakan awal (1, 1, 1). sin x + y 2 + ln z 7 = 0 3x + 2 y z 3 + 1 = 0 x + y + z 5 = 0 Pertama tentukan dulu fungsi untuk SPL pada soal function y = f(x) y = [sin(x(1)) + x(2)\u{2c6}2 + log(x(3)) - 7;... 3*x(1) + 2\U{2c6}x(2) - x(3)\u{2c6}3 + 1;... x(1) + x(2) + x(3) - 5]; Setelah diekskusi, panggil dengan terminal untuk menentukan solusi SPL. >> newtonrhapsonspl(@f,[1;1;1]) ans = 0.5991 2.3959 2.0050 1.3.1 Latihan 1. Tentukan solusi persamaan dengan tebakan awal (1, 1). sin x + 3 cos x 2 = 0 cos x sin y + 0.2 = 0 2. Tentukan titik potong dari dua lingkaran (x 2) 2 + y 2 = 4 dan x 2 + (y 3) 2 = 4. 3. Tentukan solusi sistem persamaan berikut untuk 0 < x < 1.5 : 4. Pada persamaan lingkaran berikut tan x y = 1 cos x 3 sin y = 0 (x a) 2 + (y b) 2 = R 2 tentukan koordinat titik pusat lingkaran dan jari-jari lingkaran tersebut jika diketahui 1.4 Tugas x 8.21 0.34 5.96 y 0.00 6.62 1.12 1. Jelaskan baris per baris algoritma Newton-Rhapson yang diberikan pada modul. 2. Kerjakan soal-soal latihan. 1.5 Referensi Kiusalaas, Jaan. 2005. Numerical Methods in Engineering with MATLAB. Cambridge : Cambridge University Press. 6