Minggu, 09 September 2012

APLIKASI MATLAB UNTUK PENYELESAIAN PERSAMAAN NON LINEAR MENGGUNAKAN METODE NEWTON RAPHSON

Oke guys, sekarang gw mau share program aplikasi matlab.
Bagi yang punya tugas disuruh buat program metode numerik, inilah obatnya gan.,. hhehe.
Cek it dot. (klo ada yang bingung bisa langsung coment dibawah yah) hhehe. Oiya,, jangan lupa diinstal dulu MATLAB nya..





APLIKASI MATLAB UNTUK PENYELESAIAN PERSAMAAN NON LINEAR MENGGUNAKAN METODE NEWTON RAPHSON

A.    DASAR TEORI
Metode Newton Raphson biasa digunakan dalam mencari akar dari suatu persamaan non linier, jika diasumsikan f mempunyai turunan kontinu f’.
Metode Newton Raphson sering digunakan karena kesederhanaannya dan mempunyai konvergensi yang cepat. Karena metode ini merupakan metode Terbuka, maka tetap diperlukan nilai tebakan awal untuk Xo.
Titik pendekatan ke n+1 dituliskan dengan :
 
Secara geometri, metode Newton Raphson hampir sama dengan metode regula falsi, bedanya garis yang dipakai adalah garis singgung. Dengan menggunakan x0 sebagai tebakan awal, dilanjutkan dengan mencari titik (x0, f(x0)). Kemudian dibuat garis singgung dari titik (x0, f(x0)), sehingga diperoleh titik potong (x1, 0) antara sumbu-x dan garis singgung titik (x0, f(x0)). Kemudian dilanjutkan lagi dengan mencari titik (x1, f(x1)). Dari titik (x1, f(x1)) kemudian dibuat garis singgung, sehingga diperoleh titik potong (x2, 0) antara sumbu-x dan garis singgung titik (x1, f(x1)).

B.     DESAIN DAN IMPLEMENTASI
1.      Algoritma
Input :
a.       Masukkan persamaan nonlinear f(x) dan f’(x).
b.      Masukkan toleransi yang diinginkan dalam persen (%). Toleransi merupakan batas kesalahan (galat) yang diinginkan, semakin mendekati nilai 0 semakin baik.
c.       Masukkan maksimum iterasi yang diinginkan. Iterasi awal = 0
d.      Masukkan nilai pendekatan awal x0.

Proses :
a.       Hitung  x0
1)      Dengan metode Newton Raphson
b.      Nilai iterasi = iterasi +1 atau i=i+1
c.       Hitung nilai x1 dengan kembali ke langkah a
d.      Hitung nilai galat Ea
e.       Jika iter < maksimum iterasi lanjutkan proses, jika tidak proses berhenti.
f.       Jika nilai Ea < Es, lanjutkan ke proses selanjutnya
Jika nilai Ea > Es, kembali ke proses a

Output :
a.       Tampilkan tabel iterasi , x , f(x), f’(x) ,galat.
b.      Tampilkan akar persamaan.
c.       Tampilkan grafik.



C.    Flow Chart













  

2.      Implementasi

Pada implementasi, akan digunakan fungsi nonlinear untuk menguji program apakah berjalan dengan baik atau tidak, contoh 1, fungsi yang digunakan adalah   f(x) = x2+4x-21 , yang secara perhitungan manual dapat dicari diferensialnya  f’(x) = 2x+4 , dan untuk nilai awal x = 0 .
      Pada pengujian program didapat : 
Isikan persamaan non-linearnya (string)   :  'x0.^2+4*x0-21'
Isikan nilai awal                         : 0
Isikan maksimum iterasinya                : 10
Isikan toleransinya                       : 0.00001
======================================================
iter       x          f(x)         df(x)       galat
======================================================
  1   5.250000    -21.000000     4.000000     1.000000
  2   3.349138    27.562500     14.500000     0.567568
  3   3.011394    3.613277     10.698276     0.112155
  4   3.000013    0.114071     10.022788     0.003794
======================================================
                    Akarnya        :     3.00001  
                dengan toleransi   :     0.00001  
              dan pada iterasi ke  :           4  

Akarnya adalah 3.00001 karena galat dari nilai x tersebut lebih mendekati angka 0 maka proses iterasi pun dihentikan pada proses iterasi ke -4.
Contoh 2  :
Isikan persamaan non-linearnya (string)   :  'x0.^2+4*x0-21'
Isikan nilai awal                         : 0
Isikan maksimum iterasinya                : 2
Isikan toleransinya                       : 0.0001
======================================================
iter       x          f(x)         df(x)       galat
======================================================
  1   5.250000    -21.000000     4.000000     1.000000
  2   3.349138    27.562500     14.500000     0.567568
======================================================
                    Akarnya        :     3.34914  
                dengan toleransi   :     0.00010  
                            dan pada iterasi ke  :           2 

Jika maksimum iterasinya diisikan dengan 2 maka proses pun berhenti dan hasilnya 3.349138 ( belum mencapai nilai akhir seperti pada contoh 1).


Untuk contoh yang ke -3 adalah
F(x) = 4x2+7x-31   à    F’(x) = 8x+7
Isikan persamaan non-linearnya (string)   :  '4*x0.^2+7*x0-31'
Isikan nilai awal                         : 0
Isikan maksimum iterasinya                : 40
Isikan toleransinya                       : 0.00001
======================================================
iter       x          f(x)         df(x)       galat
======================================================
  1   4.428571    -31.000000     7.000000     1.000000
  2   2.579606    78.448980     42.428571     0.716763
  3   2.084806    13.674699     27.636845     0.237336
  4   2.043447    0.979306     23.678448     0.020240
  5   2.043154    0.006842     23.347580     0.000143
======================================================
                    Akarnya        :     2.04315  
                dengan toleransi   :     0.00001  
              dan pada iterasi ke  :           5  

Akarnya adalah 2.04315 dengan toleransi 0.00001 dan karena galat dari nilai x pada iterasi ke- 5 sudah memenuhi syarat mendekati ketentuan angka dari toleransi error maka proses iterasi ke-5 dihentikan.
Contoh 4 :
F(x) = 14x2+5   à   F’(x) = 28x
Isikan persamaan non-linearnya (string)   :  '14*x0+5'
Isikan nilai awal                         : 2
Isikan maksimum iterasinya                : 12
Isikan toleransinya                       : 0.00001
======================================================
iter       x          f(x)         df(x)       galat
======================================================
  1   -0.357143    33.000000     14.000000     6.600000
======================================================
                    Akarnya        :    -0.35714  
                dengan toleransi   :     0.00001  
              dan pada iterasi ke  :           1  

Akarnya adalah -0.35714 dengan toleransi 0.00001 dan karena galat dari nilai x pada iterasi ke- 1 sudah memenuhi syarat mendekati ketentuan angka dari toleransi eror maka proses iterasi ke-1 dihentikan.


Contoh 5 :
Isikan persamaan non-linearnya (string)   :  'x0.^3'
Isikan nilai awal                         : 2
Isikan maksimum iterasinya                : 5
Isikan toleransinya                       : 0.00001
======================================================
iter       x          f(x)         df(x)       galat
======================================================
  1   1.346939    8.000000     12.250000     0.484848
  2   0.917676    2.443676     5.692732     0.467771
  3   0.639328    0.772803     2.776390     0.435376
  4   0.462309    0.261320     1.476222     0.382902
  5   0.351436    0.098809     0.891189     0.315487
======================================================
                    Akarnya        :     0.35144  
                dengan toleransi   :     0.00001  
              dan pada iterasi ke  :           5  

Akarnya adalah -0.35144 dengan toleransi 0.00001 dan karena galat dari nilai x pada iterasi ke- 5 sudah memenuhi syarat mendekati ketentuan angka dari toleransi eror maka proses iterasi ke-5 dihentikan.

RUN   DIAGRAM

*jangan lupa ditampilin diagramnya yah.


LAMPIRAN
Kode Program :
                        % -- Muhamad Ferdy Arista  -- %
                        % --       085410203       -- %
                        % -- PROGRAM METODE NEWTON -- %
clear
clc
format long
fx     = input('Isikan persamaan non-linearnya (string)   :  ');
x0     = input('Isikan nilai awal                         : ');
maks   = input('Isikan maksimum iterasinya                : ');
tol    = input('Isikan toleransinya                       : ');
iter=0;
h=0.5;

fprintf('======================================================\n');
fprintf('iter       x          f(x)         df(x)       galat\n');
fprintf('======================================================\n');
while iter<maks
    f=inline(fx);
    fun=f(x0);
    fak = (f(x0+h)-f(x0-h))/(2*h);
    Es=abs((x0-fun/fak)-x0)/abs(x0-fun/fak);
    if fak==0
        break
    elseif Es<tol
        akar=x0-fun/fak;
        break
    else
        x0=x0-fun/fak;
    end
    fprintf('%3d   %3.6f    %3.6f     %3.6f     %3.6f\n',iter+1,x0,fun,fak,Es);
    iter=iter+1;
end
akar=x0;
func=f(akar);
%grafik fungsi (x0)
t=-10:10;  
z=f(t);
plot(t,z),title('Grafik fungsi (x)');
grid on;
fprintf('======================================================\n');
fprintf(1,'                    Akarnya        :  %10.5f   \n',akar) ;
fprintf(1,'                dengan toleransi   :  %10.5f   \n',tol) ;
fprintf(1,'              dan pada iterasi ke  :  %10g   \n',iter) ;

2 komentar: