Exploring the Ocean of Science

Pemrograman Non Linier – (Metode Secant)

Metode secant merupakan perbaikan dari metode regula-falsi dan newton raphson dimana kemiringan dua titik dinyatakan secara diskrit, dengan mengambil bentuk garis lurus yang melalui satu titik.
y – y0 = m(x x0 ) atau dimana m diperoleh dari:

Bila y = F(x), ny dan xn diketahui maka titik ke n+1 adalah :

yn+1-yn = mn(xn+1-xn)

Bila titik xn+1 dianggap akar persamaan maka : yn+1=0

sehingga diperoleh : -yn = mn(xn+1-xn)

atau


Persamaan ini yang menjadi dasar pada proses pendekatan dimana nilai pendekatannya

adalah : 

Sehingga untuk menggunakan metode secant ini diperlukan dua titik pendekatan x0 dan

x1. Kedua titik pendekatan ini diambil pada titik-titik yang dekat agar konvergensinya

dapat dijamin.

Kelebihan Metode Sekan adalah dapat digunakan untuk mencari akar- akar persamaan dari persamaan polinomial kompleks, atau persamaan yang turunan pertamanya sangat sulit didapatkan.

Algoritma Metode Secant :

  1. Definisikan fungsi F(x)
  2. Ambil range nilai x =[a,b] dengan jumlah pembagi p
  3. Masukkan torelansi error (e) dan masukkan iterasi n
  4. Gunakan algoritma tabel diperoleh titik pendekatan awal x0 dan x1 untuk setiap range yang diperkirakan terdapat akar dari :
    F(xk) * F(xk+1)<0 maka x0 = xk dan x1=x0+(b-a)/p . Sebaiknya gunakan metode tabel atau grafis untuk menjamin titik pendakatannya adalah titik pendekatan yang konvergensinya pada akar persamaan yang diharapkan.
  5. Hitung F(x0) dan F(x1) sebagai y0 dan y1
  6. Untuk iterasi I = 1 s/d n atau |F(xi)| ≥ e

    Hitung yi+1 = F(xi+1)
  7. Akar persamaan adalah nilai x yang terakhir.

Contoh Program Aplikasi pemrograman linier dengan Metode Secant dalam bahasa Pascal:

{************** CONTOH PROGRAM SEDERHANA ******************

**         PEMROGRAMAN NON LINIER DENGAN METODE SECANT       **

**           Copyright : KARINA ALMISANING DYAH @2010                    **

****************************************************************}

Program Metode_Secant;

uses crt;

var x0,x1,x2,fx0,fx1,fx2,eps:real; iterasi,max,i:longint;

begin

clrscr;

writeln(‘PEMROGRAMAN NON LINIER DENGAN METODE SECANT’);

writeln(‘MENCARI AKAR DARI PERSAMAAN F(x)=x^2-(x+1)*exp(-x)’);

writeln;

writeln;

write(‘Masukkan Nilai X0                             : ‘); readln(x0);

write(‘Masukkan Nilai X1                             : ‘); readln(x1);

write(‘Masukkan Nilai Toleransi Error (e     )       : ‘); readln(eps);

write(‘Berapa maksimum iterasi                       : ‘); readln(max);

writeln(‘————————————————–‘);

writeln(‘Iterasi              X                F(x)’);

writeln(‘————————————————–‘);

i := 1;

for iterasi:=1 to max do

begin

fx0 := (x0*x0)-((x0+1)*exp(-x0));

fx1 := (x1*x1)-((x1+1)*exp(-x1));

x2  :=  x1-(fx1*(x1-x0)/(fx1-fx0));

fx2 := (x2*x2)-((x2+1)*exp(-x2));

if(abs(fx2) <= eps) then

begin

iterasi := max;

writeln(‘ ‘,i,’          ‘,x1:9:8,’         ‘,fx1:14:13,”);

writeln;

writeln(‘—————————————————‘);

writeln;

writeln;

write(‘Karena |Fx’,i,’| (‘,abs(fx1):14:13,’) <= toleransi’);

writeln(‘ (‘,eps:8:7,’), maka akar x =’,x1:8:7,”);

end

else

begin

writeln(‘ ‘,i,’          ‘,x1:9:8,’         ‘,fx1:14:13,”);

if(abs(fx0) > abs(fx1)) then x0 := x1

else                         x0 := x0;

x1 := x2;

inc(i);

end;

end;

if (i > iterasi) then

begin

readln;

writeln;

writeln(‘——————————————————-‘);

writeln;

writeln;

writeln(‘karena maksimum iterasi adalah sebanyak ‘,max,’ iterasi’);

writeln(‘maka akar yang diambil adalah nilai x2 saat iterasi ke-‘,max);

writeln(‘Jadi, akar adalah ‘,x0:14:13);

end;

readln;

end.

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 )

Twitter picture

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

Facebook photo

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

Google+ photo

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

Connecting to %s

%d bloggers like this: