ALGORITMA METODE NEWTON MENGOPTIMALKAN FUNGSI

Di S1 kita mengenal Metode Newton di kuliah metode numerik untuk menentukan akar dari suatu fungsi tetapi ketika S2 di kuliah Optimasi kita diperkenalkan dengan metode Newton untuk menentukan nilai optimal suatu fungsi. di sini saya akan mencoba menyelesaikan sebuah contoh soal mencari nilai dari fungsi optimal dengan menggunakan metode Newton.

Berdasarkan contoh soal di buku “Nonlinear Programming Theory and Algorithms” karangan Mokhtar S. Bazaraa halaman 358. Adapun contoh soalnya sebagai berikut:

Minimalkan fungsi berikut:

Screenshot

Mencapai minimum ketika dimana adalah besar error yang ditentukan.

Dengan memilih x=0,4 dan error= 0.01 diselesaikan dengan Metode Newton diperoleh hasil berikut:

Screenshot-1

Adapun hasilnya dengan Algoritma yang disusun di Turbo Pascal adalah sebagai berukut:

Screenshot-2

adapan program dari metode Newton yang sudah disusun untuk menyelesaikan masalah di atas adalah sebagai berikut (silahkan copy program ini di lembar baru Turbo Pascal anda):

program newton_rhapson;

USES WINCRT;

FUNCTION F(X:REAL):REAL;

BEGIN

F:=4*X*X*X-3*X*X*X*X;

END;

FUNCTION G(X:REAL):REAL;

BEGIN

G:=12*X*X-12*X*X*X;

END;

FUNCTION H(X:REAL):REAL;

BEGIN

H:=24*X-36*X*X

END;

FUNCTION I(X:REAL):REAL;

BEGIN

I:=4*X*X*X+3*X*X*X*X;

END;

FUNCTION J(X:REAL):REAL;

BEGIN

J:=12*X*X+12*X*X*X;

END;

FUNCTION K(X:REAL):REAL;

BEGIN

K:=24*X+36*X*X;

END;

VAR XL,z,XB,E,M : REAL;

X : INTEGER;

BEGIN

CLRSCR;

writeln(‘=================================================’);

WRITELN(‘ PROGRAM METODE NEWTON RAPHSON MENENTUKAN MINIMAL FUNGSI ‘);

WRITELN(‘==============================================’);

writeln(‘Minimumkan f(x) jika ‘);

writeln(‘f(x)=4x^3 – 3x^4 utk x >= 0 ‘);

writeln(‘f(x)=4x^3 + 3x^4 utk x < 0 ‘);

writeln;

WRITE(‘MASUKKAN X0 : ‘);READLN(XL);

write(‘MASUKKAN epsilon : ‘);readln(e);

WRITELN(‘g0 = ‘,g(xl):0:6);

writeln(‘h0 = ‘,h(xl):0:6);

writeln(‘g0/h0 = ‘,g(xl)/h(xl):0:6);

writeln;

writeln(‘================================================’);

writeln(‘r xr g(xr) h(xr) g(xr)/h(xr) f(xr) |Xr+1 – xr| ‘);

writeln(‘================================================’);

X:=0;

REPEAT

IF XL >= 0

then

XB:=XL-(G(XL)/H(XL))

else

XB:=XL-(J(XL)/K(XL));

M:= ABS(XL-XB);

IF XL >= 0

then

z:=F(XB)

else

z:=I(XB);

M:= ABS(XL-XB);

XL:=XB;

X:=X+1;

WRITELN (X,’ ‘,XB:0:6,’ ‘,g(xl):0:6,’ ‘,h(xl):0:6,’ ‘,g(xl)/h(xl):0:6,’ ‘,z:0:10,’ ‘,m:0:6);

UNTIL M < e ; writeln(‘==========================================’);

writeln(‘dimana g(xr)=turunan ke-1 f(x) & h(xr)=turunan ke-2 f(x)’);

WRITELN;

WRITELN (‘AKARNYA ADALAH = ‘,XB:0:6);

WRITELN(‘Jadi nilai minimumnya adalah ‘,z:0:10);

end.

Demikian program untuk contoh kasus di atas. adapun untuk contoh soal yang mengoptimalkan nilai fungsi dgn mengunakan satu fungsi saja yaitu sbb:

misalkan kita punya contoh:

Minimalkan : f(x)= -3-6x+4^x

USES winCRT;
FUNCTION F(X:REAL):REAL;
BEGIN
F:=-3-6*x+4*x*x;
END;
FUNCTION G(X:REAL):REAL;
BEGIN
G:=-6+8*X;
END;
FUNCTION H(X:REAL):REAL;
BEGIN
H:=8;
END;

VAR XL,XB,E,M : REAL;
X : INTEGER;

BEGIN
CLRSCR;
writeln(‘===================================================’);
WRITELN(‘ PROGRAM METODE NEWTON RAPHSON MENENTUKAN MINIMAL FUNGSI ‘);
WRITELN(‘==================================================’);
WRITELN;
WRITELN(‘Minimalkan: f(x)=-3-6x+4x^2 ‘);
WRITELN;
WRITE(‘MASUKKAN X0 : ‘);READLN(XL);
write(‘MASUKKAN epsilon : ‘);readln(e);
WRITELN(‘g0 = ‘,g(xl):0:4);
writeln(‘h0 = ‘,h(xl):0:4);
writeln(‘g0/h0 = ‘,g(xl)/h(xl):0:4);
writeln;
writeln(‘======================================================’);
writeln(‘r        xr     g(xr)       h(xr)      gxr/hxr     |Xr+1 – xr| ‘);
writeln(‘======================================================’);
X:=0;

REPEAT
XB:=XL-(G(XL)/H(XL));
M:= ABS(XL-XB);
XL:=XB;
X:=X+1;
WRITELN (X,’     ‘,XB:0:4,’    ‘,g(xl):0:4,’     ‘,h(xl):0:4,’       ‘,g(xl)/h(xl):0:4,’      ‘,m:0:4);
UNTIL M < e ;
writeln(‘=====================================================’);
writeln(‘dimana: g(xr)=turunan ke-1 f(x) & h(xr)=turunan ke-2 f(x)’);
WRITELN;
WRITELN (‘TITIK MENCAPAI MINIMUM ADALAH = ‘,XB:0:4);
END.

Tag:, , , , , , ,

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s