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) = ex − sin (x + 1) . GAM BAR Akar dari persamaan tersebut yaitu ex − sin (x + 1) = 0 atau ex = sin (x + 1) merupakan titik potong antara dua kurva y = x2 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 pendekatan 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 mendapatkan 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 x0 adalah hampiran awal (initial point) dan misalkan r = x0 + h. Karena akar persamaan adalah r maka h = r − x0 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 (x0 + h) ≈ f (x0 ) + hf 0 (x0 ) sehingga, untuk f 0 (x0 ) yang tidak dekat ke 0, diperoleh h≈−
f (x0 ) f 0 (x0 )
sehingga r = x0 + h ≈ x0 −
f (x0 ) . f 0 (x0 )
Estimasi x1 didapat dengan x1 = x0 −
f (x0 ) . f 0 (x0 )
Estimasi x2 didapat dengan cara yang sama sehingga didapat x2 = x1 −
f (x1 ) . f 0 (x1 )
Dengan melakukan hal ini berulang-ulang, jika xn adalah estimasi ke-n maka estimasi berikutnya adalah xn+1 yang diperoleh dengan f (xn ) xn+1 = xn − 0 . f (xn ) 1
atau bisa ditulis juga dalam bentuk ∆n+1 (x) = −
f (xn ) f 0 (xn )
GAM BAR 1.1.1
Algoritma Penyelesaian
Misalkan f adalah fungsi terdiferensialkan yang akan dicari akarnya dan f 0 adalah turunannya. Misalkan pula x0 adalah tebakan awal, r adalah batas toleransi, dan x adalah estimasi akar dari hasil iterasi. 1. Tentukan tebakan awal x = x0 dan periksa apakah f (x) = 0 jika tidak, lanjut ke langkah 2. n) 2. Hitung ∆x = − ff0(x (xn ) .
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; end for i = 1:30 dx = -feval(func,x)/feval(dfunc,x); x = x + dx; if abs(dx) < tol root = x; numIter = i; return end end root = NaN Contoh. Tentukan akar dari persamaan f (x) = ex − sin (x + 1) Sebelum menggunakan algoritma tentu saja kita harus menentukan turunan fungsi tersebut terlebih dahulu. d x (e − sin (x + 1)) = ex − cos (x + 1) . f 0 (x) = dx 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 fa if if if
nargin < 5; tol = 1.0e6*eps; end = feval(func,a); fb = feval(func,b); fa == 0; root = a; return; end fb == 0; root = b; return; end fa*fb > 0.0 error(’Root is not bracketed in (a,b)’)
end x = (a + b)/2.0; for i = 1:30 fx = feval(func,x); if abs(fx) < tol; root = x; return; end if fa*fx < 0.0; b = x; else; a = x; end dfx = feval(dfunc,x); if abs(dfx) == 0; dx = b - a; else; dx = -fx/dfx; end x = x + dx; if (b - x)*(x - a) < 0.0 dx = (b - a)/2.0; x = a + dx; end if abs(dx) < tol*max(b,1.0) root = x; return end end root = NaN
3
1.1.5
Latihan
1. Dengan metode Newton-Rhapson, dengan tebakan awal 3, tentukan nilai dari 10−6 .
√
10 dengan akurasi
2. Persamaan Newton y 3 − 2y − 5 = 0 mempunyai akar dekat dengan 2. Dimulai dengan y0 = 2, tentukan estimasi y1 , y2 , dan y3 . 3. Tentukan semua solusi dari persamaan e2x = x + 6 sampai 4 tempat desimal. 4. Fungsi produksi suatu perusahaan mobil memenuhi persamaan berikut: f (x) = x2 − 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 f1 (x1 , x2 , ..., xn )
=
0
f2 (x1 , x2 , ..., xn )
=
0 .. .
fn (x1 , x2 , ..., xn )
=
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 fi (x) memberikan fi (x+∆x) = fi (x) +
n X ∂fi ∆xj + O ∆x2 . ∂xj j=1
Dengan mengabaikan O ∆x2 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 pendekatan fi (x + ej h) + fi (h) ∂fi ≈ ∂xj h yang didapat dari persamaan sebelumnya dengan mengabaikan O ∆x2 dan mengambil ∆x = ej h.
4
1.2.2
Algoritma Penyelesaian
Dengan menggunakan notasi sebelumnya, algoritma untuk penyelesaian adalah sebagai berikut: 1. Berikan nilai tebakan awal fungsi x = x0 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; end if size(x,1) == 1; x = x’; end % 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 end dx = jac\(-f0); x = x + dx; if sqrt(dot(dx,dx)/length(x)) < tol*max(abs(x),1.0) root = x; return end end 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; end
5
Contoh. Tentukan solusi sistem persamaan berikut dengan menggunakan newtonRhapsonSPL dengan tebakan awal (1, 1, 1). sin x + y 2 + ln z − 7
=
0
y
3x + 2 − z + 1
=
0
x+y+z−5
=
0
3
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 sin x + 3 cos x − 2
=
0
cos x − sin y + 0.2
=
0
dengan tebakan awal (1, 1). 2
2
2. Tentukan titik potong dari dua lingkaran (x − 2) + y 2 = 4 dan x2 + (y − 3) = 4. 3. Tentukan solusi sistem persamaan berikut untuk 0 < x < 1.5 : tan x − y
=
1
cos x − 3 sin y
=
0
4. Pada persamaan lingkaran berikut 2
2
(x − a) + (y − b) = R2 tentukan koordinat titik pusat lingkaran dan jari-jari lingkaran tersebut jika diketahui x y
1.4
8.21 0.00
0.34 6.62
5.96 −1.12
Tugas
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