Monday, 21 April 2014

APLIKASI MATLAB UNTUK PENYELESAIAN PERSAMAAN NON LINEAR MENGGUNAKAN METODE NEWTON RAPHSON

Pengenalan Sci-lab

    Scilab adalah bahasa pemprograman tingkat tinggi, sebagian besar kegunaannya didasarkan pada seputar kemampuan menspesifikasi banyak komputasi dengan sedikit baris kode. Scilab melakukan hal ini dengan mengabstraksi tipe data primitif kepada matriks ekuivalen menurut fungsinya.
Scilab memiliki kesamaan fungsionalitas dengan MATLAB, tetapi tersedia untuk diunduh tanpa biaya lisensi. Program ini memungkinkan pengguna untuk melakukan komputasi pada cakupan luas operasi-operasi matematika dari operasi yang relatif sederhana seperti perkalian hingga kepada operasi tingkat tinggi seperti korelasi dan aritmatika kompleks. Perangkat ini sering dipakai untuk pemprosesan sinyal, analisis statistika, perbaikan gambar, simulasi dinamika fluida, dan lain-lain.
Scilab telah digunakan secara luas di beberapa industri dan projek penelitian, dan banyak kontribusi telah dibuat oleh para pengguna. Sintaksnya sama dengan MATLAB, tetapi yang kedua tidak sepenuhnya kompatibel, meskipun terdapat konverter yang disertakan di dalam Scilab untuk konversi kode sumber dari MATLAB ke Scilab. Scilab memiliki lebih sedikit bantuan daripada MATLAB.



Teori Persamaan nonlinier



    Dalam matematika, sistem nonlinier adalah sistem yang tidak linier yakni sistem yang tidak memenuhi prinsip superposisi. Sedikit lebih teknis, sistem nonlinier adalah sembarang soal dimana peubah yang disolusi tidak dapat ditulis sebagai jumlah linier komponen-komponen tak gayut. Sistem nonhomogen, yang linier terpisah dari keberadaan fungsi peubah-peubah tak gayut, adalah nonlinier menurut definisi yang tegas, namun sistem demikian biasanya dipelajari disamping sistem linier, karena mereka dapat ditransformasi menuju sistem linier sepanjang solusi khusus diketahui.

Pada umumnya, soal nonlinier adalah rumit (jika mungkin) untuk disolusi dan sangat sedikit yang dipahami dibanding soal linier. Bahkan jika tak dapat disolusi secara eksak, hasil dari soal linier dapat diramalkan, sementara hasil soal nonlinier adalah tak terpisahkan tak dapat diramalkan.

Soal nonlinier menjadi minat fisikawan dan matematikawan karena pada umumnya sistem fisis di alam adalah tak dapat dipisahkan dari sifat nonlinier. Contoh-contoh fisis sistem linier adalah tidak sangat umum. Persamaan nonlinier rumit untuk disolusi dan memunculkan fenomena menarik semisal chaos. Cuaca adalah contoh sistem nonlinier yang terkenal, dimana perubahan sederhana dalam satu bagian sistem menghasilkan akibat yang kompleks secara keseluruhan.





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




LAMPIRAN
Kode Program :
                     
                        % --       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) ;

 

7 comments :

  1. This comment has been removed by the author.

    ReplyDelete
  2. terimakasih buat tulisannya ngebantu banget buat saya yang lagi tugas akhir, kebetulan sama ngebahas Newton Rapson pake MATLAB, kalo bisa kirimin program buat perhitungan aliran beban pake metode newton rapshon tolong dibantu yak.

    bisa kirim ke email saya electrical10.008@gmail.com

    ReplyDelete
  3. mas listnya masih ada masalah

    ReplyDelete
  4. halo mas.. maaf, ada script buat metode yang lain nya engga ya?? kaya metode jacobi, gauss sidle, Bisection, ama yang lain nya.. kalau ada, bisa share barangkali mas?? hehe
    thanks sebelumnya mas

    ReplyDelete
  5. This comment has been removed by the author.

    ReplyDelete
  6. matur suwun gan codingannya lancar jaya :D sekali lagi terimakasih. Tugas kuliah terselesaikan..

    ReplyDelete
  7. iter=0 maksudnya apa ya kak ?

    ReplyDelete