MATLAB: Biseksi, Regula Falsi, Iterasi sederhana, dan Newton Raphson


Berbagai persoalan fisika memerlukan komputasi yang cukup rumit apabila dikerjakan secara analitik dan manual. Aproksimasi penyelesian kemudian diperkenalkan untuk menyederhanakan penyelesaian eksak. Metode numerik diciptakan untuk melakukan aproksimasi ini dalam pencarian solusi persoalan rumit. Namun demikian tidak jarang komputasi numerik harus dilakukan berulangkali agar dapat dihasilkan besaran error yang cukup kecil sesuai dengan persyaratan, yang apabila dilakukan secara manual akan menyita banyak waktu.

Diperlukan suatu metode dalam mencari hasil dari suatu persoalaan yang dinyatakan dalam model matematis. Dalan penyelesaian secara numerik, terdapat beberapa metode yang dapat digunakan seperti metode biseksi, regula falsi, iterasi, dan Newton Raphson. Masing-masing metode tersebut memiliki kelebihan dan kekurangan masing-masing namun dapat memberikan hasil yang sama.

Untuk lebih memperjelas perbedaan dari masing-masing metode yang telah disebutkan, kita aplikasikan untuk mencari akar riil dari persamaan berikut:

        i.            Metode Biseksi

M-file pertama kita buat fungsi seperti di atas,berikut listing-nya:

function y=fungsi(x)

y=x^3+2*(x^2)+10*x-20;

Berikutnya kita buat M-file listing program utamanya

clear;clc;

x1=1;

x2=1.5;

tol=0.00001;

fx0=1;

i=0;

fx1=fungsi(x1);

fx2=fungsi(x2);

if (fx1*fx2>0)

disp(‘tidak ada akar’)

else

disp(‘iterasi ke      x0           fx0’)

while (abs(fx0)>tol);

i=i+1;

x0=(x1+x2)/2;

fx0=fungsi(x0);

fprintf(‘   %d        %f      %f \n’,i,x0,fx0);

if(fx1*fx0<0)

x2=x0;

else

x1=x0;

end

end

end

 

Selanjutnya kita run program metode biseksi di atas sehingga kita dapatkan hasil seperti berikut:

iterasi ke      x0           fx0

1        1.250000      -2.421875

2        1.375000      0.130859

3        1.312500      -1.168701

4        1.343750      -0.524811

5        1.359375      -0.198460

6        1.367188      -0.034173

7        1.371094      0.048250

8        1.369141      0.007016

9        1.368164      -0.013584

10        1.368652      -0.003286

11        1.368896      0.001864

12        1.368774      -0.000711

13        1.368835      0.000577

14        1.368805      -0.000067

15        1.368820      0.000255

16        1.368813      0.000094

17        1.368809      0.000013

18        1.368807      -0.000027

19        1.368808      -0.000007

Dalam program kita menentukan toleransi sebesar 0.00001 sehingga ketika fx0 lebih kecil dari nilai toleransi yang telah ditentukan program akan berhenti menghitung. Untuk metode biseksi ini kita program melakukan 19 kali perhitungan untuk memenuhi persyaratan yang telah ditentukan.

      ii.            Metode Regulas Falsi

Sekarang kita gunakan metode yang lain yaitu regulas falsi. Fungsi yang digunakan tetap sama hanya saja perhitungannya yang berbeda. Berikut ini listing program utamanya:

clear;clc;

x1=1;

x2=1.5;

tol=0.00001;

fx0=1;

i=0;

fx1=fungsi(x1);

fx2=fungsi(x2);

if (fx1*fx2>0)

disp(‘tidak ada akar’)

else

disp(‘iter ke      x0           fx0’)

while (abs(fx0)>tol);

i=i+1;

x0=x1+(-(fungsi(x1))*(x2-x1)/(fungsi(x2)-fungsi(x1)));

fx0=fungsi(x0);

fprintf(‘%d        %f      %f \n’,i,x0,fx0);

if(fx1*fx0<0)

x2=x0;

else

x1=x0;

end

end

end

Tampak bahwa hanya rumus perhitungannya saja yang diubah. Jika program dijalankan maka hasilnya seperti berikut:

iter ke      x0           fx0

1        1.354430      -0.302055

2        1.368270      -0.011345

3        1.368788      -0.000424

4        1.368807      -0.000016

5        1.368808      -0.000001

Pada iterasi ke-5 perhitungan dihentikan karena nilai absolut dari fx0 lebih kecil dari nilai toleransi. Berdasarkan percobaan, tampak bahwa metode regula falsi lebih cepat dalam mendapatkan hasil.

    iii.            Metode Iterasi

Program pada metode iterasi lebih pendek dari metode biseksi dan regula falsi, tetapi metode ini juga dapat memberikan hasil yang sama. Berikut ini listing program metode iterasi:

clear;clc;

g0=1;

tol=0.00001;

i=0;

fg0=fungsig(g0);

disp(‘iterasi ke     x0             fx0’)

while(abs(fg0)>tol)

i=i+1;

g0=fungsig(g0);

fg0=fungsi(g0);

fprintf(‘    %d       %f         %f\n’,i,g0,fg0);

end

Output  dari metode iterasi seperti berikut:

iterasi ke     x0             fx0

1       1.538462         3.759672

2       1.295019         -1.523815

3       1.401825         0.703228

4       1.354209         -0.306678

5       1.375298         0.137171

6       1.365930         -0.060671

7       1.370086         0.026969

8       1.368241         -0.011961

9       1.369060         0.005310

10       1.368696         -0.002357

11       1.368858         0.001046

12       1.368786         -0.000464

13       1.368818         0.000206

14       1.368804         -0.000091

15       1.368810         0.000041

16       1.368807         -0.000018

17       1.368808         0.000008

Didapatkan sebanyak 17 kali perhitungan pada metode ini. Hasil akhir yang diberikan sama dengan dua metode sebelumnya yaitu metode biseksi dan metode regula falsi.

    iv.            Metode Newton Raphson

Sama halnya dengan metode iterasi, program pada metode Newton Raphson ini tidak terlalu panjang tetapi perlu diingat bahwa metode ini memerlukan fungsi dari turunan pertama fungsi pertamanya sehingga kita perlu membuat fungsi lagi khusus untuk digunakan pada metode ini. Berikut ini listing  fungsi turunan pertama dari fungsi awalnya:

function y=dif(x)

y=3*(x^2)+4*x+10;

setelah membuat fungsi turunanannya, kita susun program utamanya untuk menghitung akar riil dari persamaan tersebut

clear;clc

toleransi=0.000001;

i=0;

x0=1;

fx0=fungsi(x0);

disp(‘iterasi ke      x0          fx0’)

while (abs (fx0)>toleransi)

i=i+1;

x0=x0-(fungsi(x0)/dif(x0));

fx0=fungsi(x0);  %Hitung f(Xn+1)

fprintf(‘     %d      %f     %f\n’,i,x0,fx0);

end

Jika program dijalankan maka hasil yang ditampilkan sperti berikut:

iterasi ke      x0          fx0

1      1.411765     0.917566

2      1.369336     0.011148

3      1.368808     0.000002

4      1.368808     0.000000

Nilai x0 pada iterasi terakhir merupakan akar riil yang dicari. Berdasarkan hasil-hasil yang ditampilkan di atas semua akar yang didapatkan bernilai sama. Meskipun didapatkan nilai yang sama, sudah tampak jelas bahwa terdapat perbedaan jumlah iterasi yang dilakukan untuk mendapatkan akar yang diinginkan. Semakin sedikit iterasi yang dilakukan maka semakin cepat metode tersebut dalam mendapatkan hasil. Dalam hal ini metode Newton Raphson unggul dalam kecepatan untuk menentukan hasil yang diinginkan, kemudian disusul dengan metode regula falsi, metode iterasi, dan terakhir metode biseksi.

3 thoughts on “MATLAB: Biseksi, Regula Falsi, Iterasi sederhana, dan Newton Raphson

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s