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 :
- Definisikan fungsi F(x)
- Ambil range nilai x =[a,b] dengan jumlah pembagi p
- Masukkan torelansi error (e) dan masukkan iterasi n
- 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. - Hitung F(x0) dan F(x1) sebagai y0 dan y1
- Untuk iterasi I = 1 s/d n atau |F(xi)| ≥ e
Hitung yi+1 = F(xi+1) - Akar persamaan adalah nilai x yang terakhir.
{************** CONTOH PROGRAM SEDERHANA ****************** ** PEMROGRAMAN NON LINIER DENGAN METODE SECANT **
*****************************************************************}
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.
0 comments:
Post a Comment