A. Pengertian Numerik
Dalam bidang ilmu pengetahuan dan teknologi, permasalahan – permasalahan umumnya
diformulasikan/dimodelkan dalam bentuk persamaan – persamaan matematis. Metode
numerik adalah metode atau teknik yang digunakan untuk menyelesaikan permasalahan
yang dimodelkan / diformulasikan secara matematis khususnya persamaan matematis
yang kompleks yang tidak bisa diselesaikan secara analitis. Jika persamaan matematis
tersebut sederhana maka tentu penyelesaiannya dapat dilakukan secara analitis saja yang
menghasilkan nilai eksak.
Contoh :
Misalkan x 2 2 x 4 0
Maka persamaan ini bisa dikategorikan sebagai persamaan analitis karena sederhana dan
dapat diselesaikan hanya dengan metode-metode matematis yang ada dan menghasilkan nilai x
yang eksak yaitu x = 2
Dalam dunia nyata, model formulasi matematis yang dihasilkan umumnya sangat
kompleks dan melibatkan banyak variabel sehingga sulit diselesaikan secara analitis.
Untuk menyelesaikan persamaan matematis yang kompleks tersebut biasanya digunakan
teknik pendekatan yang dikenal dengan metode numerik . Dengan demikian hasil
penyelesaian dengan metode numerik adalah merupakan suatu pendekatan atau perkiraan
dan bukan nilai eksak sehingga terdapat deviasi atau kesalahan (error) terhadap nilai
eksak. Disamping itu, untuk menyelesaikan suatu tipe persamaan matematis yang
kompleks, dibutuhkan beberapa proses hitungan atau algoritma. Proses hitungan atau
algoritma tersebut biasanya melibatkan proses iterasi dalam jumlah yang sangat banyak
dan berulang-ulang sehingga menghabiskan banyak tenaga dan waktu. Karena itu, dalam
perhitungan numerik, efisiensi dan waktu yang dibutuhkan oleh suatu proses untuk
mendapatkan hasil yang mendekati dan akumulasi kesalahan (error) yang dihasilkan
merupakan hal paling penting. Untuk mengatasinya maka penyelesaian dengan metode
numerik biasanya menggunakan bantuan komputer.
B. Definisi Kesalahan
Berdasarkan definisinya, maka hasil perhitungan numerik merupakan suatu pendekatan
sehingga terdapat perbedaan antara hasil dengan nilai eksak yang disebut kesalahan
( error). Yang terpenting dalam penyelesaian numerik adalah bahwa nilai kesalahan
tersebut harus cukup kecil, sehingga sangat diperlukan pengetahuan dan pemahaman
yang mendalam terhadap bentuk kesalahan (error) yang timbul akibat penggunaan
metode numerik dalam menyelesaikan suatu persamaan matematis yang kompleks.
Secara umum terdapat tiga macam kesalahan(error) dalam penyelesaian secara numerik
yaitu
1. Kesalahan pembulatan (Roundoff )
2. Kesalahan pemotongan (Truncation)
3. Kesalahan pembawaan (Cancellation)
Contoh :
564789097 dibulatkan menjadi 565000000
3.1415926 dibulatkan menjadi 3.14
Kesalahan Bawaan adalah kesalahan dari nilai data. Kesalahan ini bisa terjadi karena
kekeliruan dalam menyalin data, salah membaca skala atau kurangnya pengertian
terhadap data yang diukur.
Untuk menyatakan besar tingkat kesalahan, kita menggunakan kesalahan relatif yaitu
membandingkan kesalahan yang terjadi dengan nilai eksaknya atau dirumuskan sebagai
berikut :
Ee
e ( e adalah kesalahan relatif terhadap nilai eksak)
p
biasanya kesalahan relatif dinyatakan dalam persen yaitu nilai kesalahan relatif dikalikan
100 %. Nilai kesalahan relatif dapat ditunjukkan untuk kedua contoh diatas sebagai
berikut :
Dalam metode numerik, sering pendekatan dilakukan secara iteratif. Pada pendekatan
tersebut perkiraan sekarang dibuat berdasarkan perkiraan sebelumnya, jadi kesalahan
adalah perbedaan antara perkiraan sebelumnya dan perkiraan terkini. Dengan demikain
kesalahan relatifnya dirumuskan sebagai berikut :
p *n 1 p *n
a 100%
p *n 1
Dimana :
p *n 1 adalah nilai perkiraan pada interasi ke n + 1
n
p* adalah nilai perkiraan pada iterasi ke n
Contoh 2.
Hitung kesalahan yang terjadi dari nilai e x dengan x = 0.5 apabila hanya diperhitungkan
beberapa suku pertama saja. Diketahui nilai eksak dari e0.5 = 1.648721271
Penyelesaian :
Nilai e x dapat dihitung berdasarkan deret berikut :
2 3 4
x x x
e x 1 x ..................
2! 3! 4!
2!
Untuk x = 0.5, maka
0 .5 2
e 0.5 1 0.5 = 1.625
2!
Kesalahan relatif terhadap nilai eksak sebagai berikut :
Ee 1.648721271 1.625
e 100 % 100 % 1.44 %
p 1.648721271
Suku Hasil
e
a
1 1.000000000 39.3 -
2 1.500000000 9.02 33.3
3 1.625000000 1.44 7.69
4 1.645833333 0.175 1.27
5 1.648437500 0.0172 0.158
6 1.648697170 0.00142 0.0158
Jika suatu fungsi f(x) diketahui di titik xi dan semua turunan dari f terhadap x diketahui
pada titik tersebut, maka dengan deret Taylor nilai f pada titik x i+1 yang terletak sejarak
x dari titik xi dapat ditentukan.
Secara grafis dapat ditunjukkan sebagai berikut :
y
F (x )
O rd e 2
O rd e 1
O rd e 0
x
i i + 1
F(x)
C Garis singgung di i
A B
x
i -1 i i +1
f (x ) f ( xi 1 )
O
x
f
f '( xi ) i
x x
2. Kemiringan garis yang menghubungkan titik B dan C yang menghasilkan
persamaan diferensial maju orde satu karena menggunakan data pada titik xi+1 dan
xi untuk memperhitungkan diferensial. Maka deret taylornya adalah :
x x 2 x3
f ( xi 1 ) f (xi ) f ' ( xi ) f ' ' (xi ) f '' ' ( xi ) .....
1! 2! 3!
Atau f ( xi1 ) f ( xi ) f ' ( xi )x O (x 2 )
f (x ) f ( xi )
O
x
f
f '( xi ) i 1
x x
3. Kemiringan garis yang menghubungkan titik A dan C yang menghasilkan
persamaan diferensial terpusat orde satu karena menggunakan data pada titik xi-1
dan x i+1 untuk memperhitungkan diferensial. Maka deret taylornya adalah :
x x3
f ( xi 1 ) f (xi 1 ) 2 f ' (xi ) 2 f ' ' '( xi ) .....
1! 3!
f f ( x ) f ( xi 1 ) x2
Atau f ' ( xi ) i 1 f ' '' ( xi ) ......
x 2x 6
f f ( x ) f ( xi 1 )
f ' ( xi ) i 1 O (x 2 ) ..........
x 2x
Dari ketiga jenis diferenasial tersebut terlihat bahwa diferensial terpusat kesalahannya
berorde x 2 sedangkan diferensial maju dan mundur berorde x . Jadi untuk interval yag
kecil maka kesalahan pemotongan diferensial terpusat lebih kecil dari kesalahan
diferensial maju dan mundur sehingga perkiraan diferensial terpusat adalah yang lebih
teliti.
Dengan menggunakan deret taylor maka turunan kedua dari suatu fungsi didapat dari
menjumlahkan diferensial maju dan mundur sebagai berikut :
x 2 x 4
f ( xi 1 ) f (xi 1 ) 2 f ( xi ) 2 f ' ' ( xi ) 2 f ' ' ' '( xi ) ..... atau
2! 4!
2 f f ( xi 1 ) 2 f (xi ) f ( xi1 ) x 2
f ' ' ( x ) f ' ' ' ' ( x ) ...... atau
x2 x 2
i i
12
f f ( xi 1 ) 2 f (xi ) f ( xi1 )
2
x x
2
f 2 f (xi , y j 1 ) 2 f ( xi , y j ) f ( xi , y j 1 )
y 2 y 2
Dari persamaan – persamaan f(x,y) tersebut dapat digambarkan secara grafis dalam
sistem koordinat x dan y ( dua dimensi)
y
i , j+1
j +1
i+1 , j
j i-1 , j i,j
j -1
i , j+1
x
i-1 i i+1
Gambar 1.3 Jaring titik hitung dalam sistem dua dimensi (x,y)
Contoh :
Diketahui suatu fungsi f ( x) 0.25x3 0.5x 2 0.25x 0.5 . Dengan menggunakan deret
taylor orde nol, satu dan tiga, perkirakan fungsi tersebut pada titik xi1 1, berdasarkan
nilai fungsi pada titik xi = 0. Titik xi1 1 berada pada jarak x 1 dari titik xi 0.
Jawab :
Karena bentuk fungsi sudah diketahui maka dapat dihitung nilai f(x) antara 0 dan 1.
seperti ditunjukkan pada Gambar 1.4.
Untuk xi = 0 maka f(x = 0) = 0.25(0) 3 0.5(0) 2 0.25(0) 0.5 0.5
Untuk xi1 = 0 maka f(x = 1) = 0.25(1) 3 0.5(1)2 0.25(1) 0.5 1.5
Jadi nilai eksak untuk f( x = 1) adalah 1.5. Apabila digunkan deret Taylor orde nol, maka
didapat :
f ( xi 1 ) f ( x i 0) 0.5
Seperti terlihat pada Gambar 1.4. Perkiraan orde nol adalah konstan, dan kesalahan
pemotongannya adalah :
E e p p* 1.5 0.5 1.0
Apabila digunakan deret Taylor orde satu, maka nilai f ( x i1 ) 1 dapat dihitung. Pertama
kali dihitung turunan fungsi di titik x i 0 :
f ' ( x i 0) 0.75 x 2 x 0.25 0.75(0)2 0 0.25
Sehingga diperoleh
x 1
f ( xi 1 ) f ( x i ) f ' ( xi ) 0.5 0.25 0.75
1! 1
Pada gambar 1.1. perkiraan orde satu adalah lurus, dan kesalahan pemotongannya adalah
:
E e p p* 1.5 0.75 0.75
Bila digunakan deret Taylor orde dua, nilai f ( x i1 1) dapat dihitung dengan
menggunakan persamaan orde dua.. Maka turunan kedua dari fungsi di titik xi 0 :
f ' ' ( x ) 1.5x 1 1.5(0) 1 1.0
Sehingga diperoleh:
x
f ( xi 1 ) f ( x i ) f ' ( xi )x f ' ' ( xi )
2
1
0.5 0.25 1 1 1.25
12
Dalam Gambar 1.4 , perkiraan orde dua adalah garis lengkung, dan kesalahan
pemotongannya adalah
E e p p* 1.5 1.25 0.25
Bila digunakan deret Taylor orde tiga, persamaan menjadi
x x x
2 3
f ( xi 1 ) f (x i ) f ' ( xi )
f ' ' ( x i ) f ' ' ' ( xi )
1! 2! 3!
Turunan ketiga dari fungsi adalah
f ' ' ' (x i 0) 1.5
Sehingga diperoleh
1 1
f ( x i 1 1) 0.5 0.25 1 1 1.5 1.5
12 1 2 3
Kesalahan pemotongannya adalah
E e p p* 1.5 1.5 0.0
Terlihat bahwa dengan menggunakan deret taylor orde tiga, hasil penyelesaian numerik =
penyelesaian eksak.
BAB II
PENYELESAIAN NUMERIK PERSAMAAN NON LINIER
1
cos ………………………………………………2
2
Untuk mencari T(t) pada t tertentu ditengah bola, perlu dicari harga dari persamaan 2;
dengan demikian tidak mungkin diselesaikan secara analitik.
Secara geometrik penentuan harga x sehingga terpenuhi persamaan f(x) = 0 berarti
mencari suatu titik dimana grafik fungsi f(x) tepat memotong sumbu absis x, sehingga
f(x) = 0.
Ada beberapa metode numerik yang digunakan untuk menentukan harga x sedemikian
hingga f(x) = 0. Metode konvensional digunakan dengan cara menggambar fungsi f(x)
kemudian dicari titik potongnya dengan sumbu x yang menunjukkan hampiran kasar akar
dari fungsi f(x).
Contoh :
Dengan metode grafik tentukan akar persamaan f(x) = 2552 - 30d2 + d3
3000
2500
2000 Akar Persamaan
1500
1000
f( x)
500
0
-500 0 5 10 15 20 25
-1000
-1500
d
-2000
Dari gafik tersebut pada prinsipnya, akar persamaan yang diperoleh tentu tidak akan
akurat karena masing-masing orang pasti berbeda tebakan angkanya dan akan memakan
waktu yang lama. Jika persamaannya sangat kompleks tentunya sangat sulit menentukan
akar persamaan secara grafik. Metode – metode selain metode grafik untuk mencari akar
persamaan adalah sebagai berikut :
1. Metode Setengah Interval ( Bisection )
Metode ini adalah metode numerik yang paling sederhana dalam mencari nilai x. Dengan
metode ini, mula-mula dicari suatu interval [a,b]. sedemikian sehingga f(a) dan f(b)
mempunyai tanda berbeda seperti gambar 1 berikut :
f(a)
f(x)
b
a
Gambar 1
f(b)
Dengan pembatasan interval ini, secara cermat dapat dicari nilai x = yang
memberikan nilai f () 0 . Langkah-langkah penyelesaian dengan metode setengah
interval adalah sebagai berikut :
1. Menetapkan sembarang nilai a dan b yang memberikan harga bagi fungsi f(x) untuk
x = a dan x = b sampai diperoleh f(a) x f(b) < 0.
2. Menghitung perkiraan nilai tengah yaitu xt yaitu rerata antara xi dan xi+1 dengan
x x i1 a b
rumus : xt i .
2 2
3. Dilakukan pengecekan didalam sub interval mana akar persamaan berada sebagai
berikut :
a. Jika f(x i) x f(xt) < 0, maka akar persamaan yang dicari berada pada sub interval
pertama, maka tetapkan xi+1 = xt dan lanjut pada langkah ke 4.
b. Jika f(xi) x f(xt) > 0, maka akar persamaan berada pada sub interval ke dua, maka
tetapkan x i = xt dan dilnjutkan pada langkah ke 4.
c. Jika f(x i) x f(xt) = 0, maka akar persamaan adalah x t dan hitungan selesai.
x xi 1
4. Hitung perkiraan akar baru dengan persamaan : xt i .
2
5. Jika f(xt) sudah cukup kecil atau kurang dari batas simpangan kesalahan atau error
yang ditentukan , maka xt tersebut adalah solusinya.
Secara grafis dapat digambarkan sebagai berikut:
F(x)
Akar Persamaan
X1 X3 X5 x
X4 X2
X5
X3 X4
X3 X2
X4
X3
X1 X2
Gambar 2
Metoda Bisection adalah salah satu dari kelas metoda pengelompokan (bracketing
methode), karena prosedur mendapatkan nilai x untuk f(x) = 0 melalui pendekatan
kelompok akar. Metoda ini tidak sepenuhnya memanfaatkan data f(x) bagi penentuan
nilai x. Misalnya, tidak digunakannya ukuran relatif f(a) dan f(b), karena umumnya jika
f(a) < f(b) dalam nilai mutlaknya, maka akar persamaan akan terletak lebih dekat ke f(a),
Bagan alir metoda bisection adalah sebagai berikut :
Flow Chart Bisection.
Berikut adalah algoritma metode bisection yang di tuangkan dalam bahasa program
matlab sebagai berikut :
Definisi fungsi :
function y = func1(x)
y=x^3-10*x^2+5;
Program Utama :
function root=bisection
clear all
clc
a=input('masukan angka pertama :');
b=input('masukan angka kedua :');
tol=input('masukan angka toleransi :');
max_iter=input('masukan jumlah iterasi :');
it=0;Ya=func1(a); Yb=func1(b);
fprintf('it a m b f(a) f(b) abs[(f(b)-f(a))/2]\n');
if Ya*Yb>0;
error('akar diluar interval (a,b)')
else
epsilon=tol+1;
while (it<=max_iter)&(epsilon>tol)
it=it+1; m=(a+b)/2; Ym=func1(m);
fprintf('%3i %2.8f %2.8f %2.8f %2.8f %2.8f %2.8f\n',it,a,m,b,Ya,Yb,abs((Ya-Yb)/2));
epsilon=abs(m-a);
if (Ya*Ym<=0)
b=m; Yb=Ym;
else
a=m; Ya=Ym;
end
end
if it<=max_iter
disp('toleransi terpenuhi'); fprintf('hasil akhir =');
fprintf('%2.8f\n',m);
else
disp('toleransi tidak terpenuhi')
end
end
Hasil Eksekusi :
masukan angka pertama :0
masukan angka kedua :1
masukan angka toleransi :0.0000001
masukan jumlah iterasi :30
it a m b f(a) f(b) abs[(f(b) -f(a))/2]
1 0.00000000 0.50000000 1.00000000 -0.50000000 0.05740772 0.27870386
2 0.50000000 0.75000000 1.00000000 -0.45369751 0.05740772 0.25555262
3 0.75000000 0.87500000 1.00000000 -0.31840354 0.05740772 0.18790563
4 0.87500000 0.93750000 1.00000000 -0.17757837 0.05740772 0.11749305
5 0.93750000 0.96875000 1.00000000 -0.07542802 0.05740772 0.06641787
6 0.96875000 0.98437500 1.00000000 -0.01345334 0.05740772 0.03543053
7 0.96875000 0.97656250 0.98437500 -0.01345334 0.02077637 0.01711485
8 0.96875000 0.97265625 0.97656250 -0.01345334 0.00337330 0.00841332
9 0.97265625 0.97460938 0.97656250 -0.00511064 0.00337330 0.00424197
10 0.97460938 0.97558594 0.97656250 -0.00088650 0.00337330 0.00212990
11 0.97460938 0.97509766 0.97558594 -0.00088650 0.00123892 0.00106271
12 0.97460938 0.97485352 0.97509766 -0.00088650 0.00017509 0.00053080
13 0.97485352 0.97497559 0.97509766 -0.00035598 0.00017509 0.00026554
14 0.97497559 0.97503662 0.97509766 -0.00009052 0.00017509 0.00013280
15 0.97497559 0.97500610 0.97503662 -0.00009052 0.00004227 0.00006639
16 0.97500610 0.97502136 0.97503662 -0.00002413 0.00004227 0.00003320
17 0.97500610 0.97501373 0.97502136 -0.00002413 0.00000907 0.00001660
18 0.97501373 0.97501755 0.97502136 -0.00000753 0.00000907 0.00000830
19 0.97501373 0.97501564 0.97501755 -0.00000753 0.00000077 0.00000415
20 0.97501564 0.97501659 0.97501755 -0.00000338 0.00000077 0.00000207
21 0.97501659 0.97501707 0.97501755 -0.00000130 0.00000077 0.00000104
22 0.97501707 0.97501731 0.97501755 -0.00000027 0.00000077 0.00000052
23 0.97501707 0.97501719 0.97501731 -0.00000027 0.00000025 0.00000026
24 0.97501719 0.97501725 0.97501731 -0.00000001 0.00000025 0.00000013
toleransi terpenuhi
hasil akhir =0.97501725
b
x
a
f(b)
Gambar 3
F(a)
b
a F(a)
Gambar 4.
Untuk menghindari masalah yang mungkin terjadi bagi perilaku persamaan yang tidak
dapat dilacak, maka perlu pembatasan tinjauan interval sesuai dengan sifat fungsi. Hal ini
penting dalam teknik numerik utuk memperoleh solusi nyata.
Proses regula falsi sama dengan proses bisection, hanya rumus untuk mendapatkan nilai
xt diganti dengan rumus xt regula falsi. Flow chart metode regula falsi sebagai berikut :
START
Definisikan Fungsi
Baca :
a,b,tol, iter_max
Iter = 0
f_a = f(a)
f_b = f(b)
Y Tulis :
f_a * f_b < 0
f_a * f_b> 0
1
Iter = iter +1
m = a-[fb*(b-a)/(fb - fa)]
f_m = f(m)
Bmm A=m
F_a *f_m < 0
f_b = f_m f_a = f_m
Tulis hasil
m, f(m)
END
Hasil eksekusi :
>> regulafalsi
masukan angka pertama :0
masukan angka kedua :1
masukan angka toleransi :0.0000001
masukan jumlah iterasi :30
it a m b f(a) f(b) abs[(f(b)-f(a))/2]
1 0.00000000 0.89700946 1.00000000 -0.50000000 0.05740772 0.27870386
2 0.89700946 0.97072600 1.00000000 -0.14456173 0.05740772 0.10098473
3 0.97072600 0.97478854 1.00000000 -0.00925060 0.05740772 0.03332916
4 0.97478854 0.97500503 1.00000000 -0.00049722 0.05740772 0.02895247
5 0.97500503 0.97501655 1.00000000 -0.00002646 0.05740772 0.02871709
6 0.97501655 0.97501716 1.00000000 -0.00000141 0.05740772 0.02870457
7 0.97501716 0.97501719 1.00000000 -0.00000007 0.05740772 0.02870390
toleransi terpenuhi
hasil akhir =0.97501719
Akar persamaan
f(xi ) - 0
x
xi + 1 xi
( xi + -1 x i )
Gambar 5
Untuk menggunakan metode newton Raphson maka kita harus mencari turunan dari
fungsi f(x) atau tangensial dari fungsi f(x) dengan rumus :
f (xk ) f ( xk 1 ) f ( xk )
f ' ( x) ……….………….4
(xk xk 1 ) ( xk xk 1 )
f (x k )
Sehingga xk 1 x k , k 0,1,2,....
( xk xk 1 )
Algoritma metode newton raphson sebagai berikut :
1. Tentukan x0, toleransi dan jumlah iterasi maksimum
2. Hitung xbaru = x – f(xo)/f’(xo)
3. Jika nilai mutlak (xbaru – xo) < toleransi tuliskan xbaru sebagai hasil perhitungan,
jika tidak lanjutkan ke langkah berikutnya
4. Jika jumlah iterasi > iterasi maksimum , maka hitungan selesai.
5. x = xbaru, dan kembali ke langkah 2.
Flow Chart Newton Raphson.
Program Newton Raphson dengan matlab :
Program menggunakan algoritma Newton_Raphson, digunakan untuk menyelesaikan
persamaan : f ( x) e x x 2 3x 2 0 dan turunan pertamanya adalah
function y=fnewton1(x)
y=exp(x)+2*x-3;
Program Utama :
function root=NewtonRaphson
clear all
clc
xawal=input('Nilai awal :');
tol=input('masukan angka toleransi :');
max_iter=input('masukan jumlah iterasi :');
it=0;
fprintf('it x f(x) epsilon\n');
epsilon=tol+1;
while (it<=max_iter)&(epsilon>tol)
it=it+1; xb=xawal-fnewton(xawal)/fnewton1(xawal); epsilon=abs(xb-xawal);
fprintf('%2i %2.8f %2.8f %2.8f\n',it,xb,fnewton(xb),epsilon); xawal=xb;
end
if it<=max_iter
disp('toleransi terpenuhi'); fprintf('hasil akhir ='); fprintf('%2.8f\n',xb);
else
disp('toleransi tidak terpenuhi');
end
Hasil eksekusi :
Nilai awal :0
masukan angka toleransi :0.0000001
masukan jumlah iterasi :20
it x f(x) epsilon
1 -0.50000000 0.35653066 0.50000000
2 -0.39493624 0.01450634 0.10506376
3 -0.39028102 0.00002898 0.00465521
4 -0.39027169 0.00000000 0.00000934
5 -0.39027169 -0.00000000 0.00000000
toleransi terpenuhi
hasil akhir =-0.39027169
6. Metode Secant
Apabila Nilai turunan fugsi susah untuk didapat, maka penentuan akar persamaan
dapat dilakukan dengan menggunakan metode secant. Yaitu bentuk diferensial didekati
dengan nilai perkiraan berdasarkan diferensial beda hingga sebagai berikut :
f ( xi ) f (xi 1 )
f ' ( xi ) …………………………………5
( xi xi1 )
f ( xi )
xi xi1
Maka akan diperoleh xi1 xi , i 0,1,2,.... …………………………..6
f xi f ( xi 1 )
Jadi berdasarkan persamaan diatas maka dalam metode secant diperlukan dua nilai awal
yang digunakan untuk memerkirakan dari fungsi seperti pada gambar berikut :
Y
F ( X i) A
B
F (X i- 1
)
X i- 1 Xi x
X i - X i- 1
F (x )
D e f in is ik a n F u n g s i
B aca
x o , x 1, t o l
it e r _ m a x
Ite r = 0
I t e r = ite r + 1
X b = x 1 - f ( x 1 ) * ( x 1- x 0) /
[ f ( x 1 ) - f ( x 0) ]
|x b -x o | < to l Y T u lis H a s il
it e r > it e r _ m a x x b , f(x b )
T
S E LE S A I
X o = xb
Definisi Fungsi :
function y = fsecant(x)
y=x^2-3*x-2+exp(x);
Program Utama :
function root=secant
clear all
clc
x1=input('Nilai pertama :');
x2=input('Nilai kedua :');
tol=input('masukan angka toleransi :');
max_iter=input('masukan jumlah iterasi :');
it=0;
fprintf('it x f(x) epsilon\n');
epsilon=tol+1;
while (it<=max_iter)&(epsilon>tol)
it=it+1; xb=x2-fsecant(x2)*(x2-x1)/(fsecant(x2)-fsecant(x1)); epsilon=abs(xb-x2);
fprintf('%2i %2.8f %2.8f %2.8f\n',it,xb,fsecant(xb),epsilon); x1=x2;x2=xb;
end
if it<=max_iter
disp('toleransi terpenuhi'); fprintf('hasil akhir ='); fprintf('%2.8f\n',xb);
else
disp('toleransi tidak terpenuhi');
end
Hasil Eksekusi :
Nilai pertama :0
Nilai kedua :-0.1
masukan angka toleransi :0.00001
masukan jumlah iterasi :20
it x f(x) epsilon
1 -0.46546826 0.24090654 0.36546826
2 -0.37966148 -0.03277978 0.08580679
3 -0.38993867 -0.00103342 0.01027719
4 -0.39027322 0.00000476 0.00033455
5 -0.39027169 -0.00000000 0.00000153
toleransi terpenuhi
hasil akhir =-0.39027169
7. Metode Iterasi
Penentuan akar persamaan dengan metode iterasi adalah dengan memulai suatu
perkiraan harga dari akar persamaan, yang kemudian dengan serangkaian nilai perkiraan;
mulai xo (perkiraan awal), x1, x2, ……,x k, akhirnya konvergen pada nilai akar tertentu
yaitu xk yang cukup dekat dengan akar yang eksak menurut tingkat kecermatan yang
diinginkan.
Metode perkiraan awal untuk satu variabel, disebut metode iterasi tunggal. Dalam hal
ini fungsi f(x) ditulis sebagai :
f ( x) x g (x ) 0 , sehingga g ()
Kemudian xk 1 g ( xk ), k 0,1,2,....
Contoh : Untuk mendapatkan akar persamaan x 3 3x 20 0 , langkah pertama yang
dilakukan adalah mengubah persamaan dalam bentuk f(x) = x – g(x). Perubahan ini dapat
dilakukan dalam beberapa cara antara lain :
1. x (3x 20)1 / 3 0
( x3 20)
2. x 0
3
20
3. x 0
x 3
2
20
4. x (3 )1 / 2 0
x
Dengan menggunakan bentuk pertama maka dapat dirumuskan sebagai berikut :
xk 1 (3x k 20)1 / 3 , k 1,2,3,.....
Dan dengan perkiraan awal xo = 5, diperoleh :
xo = 5
1/3
x1 = (3 * 5 + 20) = 3.2771
1/3
x2 = (3 * 3.2771 + 20) = 3.1008
x3 = 3.0830 x4 = 3.0811; x5 = 3.0809; x 6 = 3.0809 ; x7 = 3.0809
Karena nilai x sudah konstan pada harga 3.0809, maka pemeriksaan harga f(x). Diperoleh
f(3.0809) = 0.0010 dan jika simpangan kesalahan sudah sesuai yang ditentukan maka
harga x = 3.0809 merupakan solusinya.
Metode iterasi yang diuraikan ini disebut CARA PENDEKATAN BERURUT. Secara
geometri yang dilakukan adalah menemukan perpotongan dua kurva yaitu y = x dan y =
g(x) seperti gambar berikut :
Y Y = x
Y = g(x )
D e f in is ik a n F u n g s i
B aca
x o , to l
ite r _ m a x
Ite r = 0
Ite r = ite r + 1
X b = G (xo )
|x b -x o | < to l Y T u lis H a s il
ite r > ite r _ m a x x b , f(x b )
T
SELESAI
X o = xb
g( x )
e x
x 2
2 .
3
Definisi Fungsi :
function y = fiterasi(x)
y=(x^2-2+exp(x))/3;
Program Utama :
function root=iterasi
clear all
clc
xawal=input('Nilai awal :');
tol=input('masukan angka toleransi :');
max_iter=input('masukan jumlah iterasi :');
it=0;
fprintf('it x g(x) epsilon\n');
epsilon=tol+1;
while (it<=max_iter)&(epsilon>tol)
it=it+1; xb=fiterasi(xawal); epsilon=abs(xb-xawal);
fprintf('%2i %2.8f %2.8f %2.8f\n',it,xawal,xb,epsilon); xawal=xb;
end
if it<=max_iter
disp('toleransi terpenuhi'); fprintf('hasil akhir ='); fprintf('%2.8f\n',xb);
else
disp('toleransi tidak terpenuhi');
end
Hasil eksekusi :
Nilai awal :1
masukan angka toleransi :0.0000001
masukan jumlah iterasi :20
it x g(x) epsilon
1 1.00000000 0.57276061 0.42723939
2 0.57276061 0.03373667 0.53902394
3 0.03373667 -0.32151654 0.35525321
4 -0.32151654 -0.39052616 0.06900961
5 -0.39052616 -0.39026286 0.00026330
6 -0.39026286 -0.39027199 0.00000913
7 -0.39027199 -0.39027168 0.00000032
8 -0.39027168 -0.39027169 0.00000001
toleransi terpenuhi
hasil akhir =-0.39027169