Anda di halaman 1dari 4

Latihan PEMROGRAMAN untuk Komputasi Numerik PANLT

dengan Metode Newton-Raphson dan Metode Secant (Quasi-Newton)


(Kuliah Komputasi Numerik oleh Setijo Bismo, DTK-FTUI)

Dalam kuliah ini, peserta akan diarahkan untuk melakukan latihan-latihan pemrograman yang
berkenaan dengan solusi suatu PANLT (Persamaan Aljabar Non-Linier Tunggal) menggunakan
bahasa-bahasa pemrograman FORTRAN, VBA (Visual Basic dalam MS-Excel), dan Pascal.
PANLT yang akan digunakan di sini adalah:
y ( x)  x 3  x  7  0
dengan turunan fungsi:
dy
y ( x)   3 x2  1
dx
A. Pemrograman FORTRAN
Listing (coding) dalam bahasa FORTRAN untuk solusi PANLT di atas dengan Metode
Newton-Raphson adalah sbb:

program newton_raphson

implicit none
integer i
real error,xo,x1,f,fd

write(*,*) 'x0 = '


read(*,*) xo

i=1
error = 1e-4
10 x1=xo-(f(xo)/fd(xo))
if (abs((x1-xo)/x1)<error) then
write(*,*) "root is ", x1 ,"no. of iteration=", i
else
xo=x1
i=i+1
goto 10
endif
end

real function f(x)


real x
f = x**3 - x + 7
return
end

real function fd(x)


real x
fd = 3*x**2-1
return
end

Cobalah buat (coding) program di atas ke dalam Silverfrost dan lakukan ekseskusi untuk harga-
harga awal: x0   2 dan x0  2 !
B. Pemrograman VBA
Listing (coding) dalam bahasa VBA untuk solusi PANLT di atas dengan Metode Newton-
Raphson adalah sbb:

Function f(ByVal x As Double) As Double


f = x ^ 3 - x + 7
End Function
Function fd(ByVal x As Double) As Double
fd = 3 * x ^ 2 + 7
End Function
Sub NewRaph()
Dim error, x0, x1 As Double
Dim i As Integer

xold = Cells(6, 4)
i = 1
error = 0.0001

10 x1 = x0 - f(x0) / fd(x0)
If Abs((x1 - x0) / x1) < error Then
Cells(10, 4) = x1
Cells(11, 4) = i
Else
x0 = x1
i = i + 1
GoTo 10
End If
End Sub

Cobalah buat (coding) program di atas ke dalam VBA dan lakukan ekseskusi untuk harga-
harga awal: x0   2 dan x0  2 !
Workspace dalam MS-Excel dimaksud adalah sbb:
C. Pemrograman PASCAL
Listing (coding) dalam bahasa Ezy Pascal untuk solusi PANLT di atas dengan Metode
Newton-Raphson adalah sbb:

program newton_raphson;

Var
i: integer;
error,xo,x1: real; {boleh juga: EXTENDED}
Label
10;

Function f(x: real): real;


Begin
f := x*x*x - x + 7
End;

Function fd(x: real): real;


Begin
fd := 3*x*x-1
End;

Begin
write('x0 = ');
readln(xo);

i := 1;
error := 1e-4;
10: x1:=xo-(f(xo)/fd(xo));
if (abs((x1-xo)/x1)<error) then
begin
writeln('root is ', x1 );
writeln('no. of iteration= ', i)
end
else
begin
xo := x1;
i := i + 1;
goto 10;
end;
End.

Cobalah buat (coding) juga program di atas ke dalam Ezy Pascal dan lakukan ekseskusi untuk
harga-harga awal: x0   2 dan x0  2 !
TUGAS..!

Buatlah program-program analog untuk Metode Secant, baik dalam FORTRAN, VBA, ataupun
Pascal..!

Anda mungkin juga menyukai