Anda di halaman 1dari 11

Laporan Praktikum

Pencarian Akar suatu Fungsi dengan


Menggunakan Metode Newton-Raphson
Diajukan untuk Memenuhi Laporan Kegiatan Praktikum Fisika Komputasi

Disusun oleh :
Nama

: Zohan Syah Fatomi

NIM

: 14/362761/PA/15810

Hari, Tanggal Praktikum

: Kamis, 24 Maret 2016

Asisten Praktikum

: Hamid Hamadi
: Jinan Ahmad
: Muhammad Egi

LABORATORIUM FISIKA KOMPUTASI


DEPARTEMEN FISIKA
FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM
UNIVERSITAS GADJAH MADA
YOGYAKARTA
2016

1. Pendahuluan
1.1 Latar Belakang
Gambaran fisikawan dalam memandang gejala alam adalah sebuah perumusan
yang matematis. Perumusan
matematis
banyak
yang
susah
dipecahkan jika diselesaikan menggunakan metode analisis. Seperti misalnya
dalam pencarian akar suatu fungsi kadang ada yang sulit dipecahkan terutama
fungsi tidak linear. Oleh karena itu dibutuhkan metode yang mampu
memecahkan masalah pencarian akar dengan mudah, salah satunya
adalah dengan menggunakan metode Newton Raphson

1.2

Tujuan
a. Menentukan nilai akar-akar suatu fungsi secara numerik dengan metode
Newton-Raphson.

2. Dasar Teori
Dalam Mencari nilai suatu akar-akar suatu fungsi secara numeric dapat menggunakan
metode berikut ini :

2.1

Metode Bisection
algoritma pencarian akar pada sebuah interval. Interval tersebut membagi dua
bagian, lalu memilih dari dua bagian ini dipilih bagian mana yang
mengandung akar dan bagian yang tidak mengandung akar dibuang. Hal ini
dilakukan berulang-ulang hingga diperoleh akar persamaan atau mendekati
akar persamaan. Metode ini berlaku ketika ingin memecahkan persamaan f(x)
= 0 dengan f merupakan fungsi kontinyu.

2.2

Newton-Rapshon
adalah metode pencarian akar suatu fungsi f(x) dengan pendekatan satu titik,
dimana fungsi f(x) mempunyai turunan. Metode ini dianggap lebih mudah
dari Metode Bagi-Dua (Bisection Method) karena metode ini menggunakan

pendekatan satu titik sebagai titik awal. Semakin dekat titik awal yang kita
pilih dengan akar sebenarnya, maka semakin cepat konvergen ke akarnya.

Prosedur Metode Newton :

menentukan x0 sebagai titik awal, kemudian menarik garis lurus (misal garisl)
yang menyinggung titik f(x0). Hal ini berakibat garis l memotong sumbu x di
titik x1. Setelah itu diulangi langkah sebelumnya tapi sekarang x1dianggap
sebagai titik awalnya. Dari mengulang langkah-langkah sebelumnya akan
mendapatkan x2, x3, xn dengan xn yang diperoleh adalah bilangan riil yang
merupakan akar atau mendekati akar yang sebenarnya.

3. Metode Eksperimen
3.1 Script Komputasi
PROGRAM titik_nol
IMPLICIT NONE
REAL :: x0, x1, delta, tol
INTEGER :: i, imak
imak = 100
tol = 1.0e-4
WRITE (*,*)"Berikan masukan nilai x0 = "
READ (*,*)x0
i=0
DO
i = i +1
x1 = x0-fung(x0)/dfung(x0)
delta = x1 - x0
WRITE (*,*)"Akar iterasi ke ",i,"adalah", x1
IF ((ABS(delta) .LE. tol) .OR. (i .GE. imak))EXIT
END DO

WRITE (*,*)"Nilai akar = ", x1


CONTAINS
FUNCTION fung(X)
REAL :: fung
REAL, INTENT(in) :: x
fung = 3.0/(5.0-x)** 2 - 5.0/x**2
END FUNCTION fung
FUNCTION dfung(x)
REAL :: dfung
REAL, INTENT(in) :: x
dfung = 6.0/(5.0-x)**3 +10.0/x**3
END FUNCTION dfung
END PROGRAM titik_nol

3.2

Fungsi Yang Digunakan


No.

f (x)

f ' (x )

1.

3.0
5.0
2
2
( 5.0x ) ( x )

6.0
10.0
+ 3
3
( 5.0x )
x

2.

6.0
3.0
5.0
2
12
6
10
4
+
2
+
+ 3+
2
2
2
3
3
( 8.0x ) ( 5x )
x
( x +1 ) 8x ( 5x ) ( x ) ( x +1 )3

3.

sin x

4.

x +2 x

cos x
x

2 x +2+

3
4
x

4. Hasil Eksperimen
Setelah dilakukan pembuatan listing program dan mengcompilenya sehingga
didapatkan hasil berikut ini :
1.

f ( x )=

3.0
5.0
2 , x 0=10, imaks=100
2
( 5.0x ) ( x )

Akar iterasi ke
1 adalah 11.842105
Akar iterasi ke
2 adalah 11.842105
..
..
Akar iterasi ke
99 adalah 11.842105
Akar iterasi ke
100 adalah 11.842105
Nilai akar = 11.842105

2.

f ( x )=

3.0
5.0
2 , x 0=3, imaks=100
2
( 5.0x ) ( x )

Akar iterasi ke
1 adalah
Akar iterasi ke
2 adalah

Akar iterasi ke
99 adalah
Akar iterasi ke
100 adalah
Nilai akar = 2.4386916
3.

f ( x )=

4.

2.4386916
2.4386916

3.0
5.0
2 , x 0=5, imaks=100
2
( 5.0x ) ( x )

Akar iterasi ke
Akar iterasi ke

Akar iterasi ke
Akar iterasi ke
Nilai akar =
f ( x )=

2.4386916
2.4386916

1 adalah
2 adalah
99 adalah
100 adalah
NaN

NaN
NaN
NaN
NaN

6.0
3.0
5.0
2
+
2
, x 0=2, imaks=100
2
2
( 8.0x ) ( 5x )
x
( x+1 )2

Akar iterasi ke
1 adalah 2.0000000
Nilai akar = 2.0000000
5.

f ( x )=

6.0
3.0
5.0
2
+
2
, x 0=2, imaks=100
2
2
( 8.0x ) ( 5x )
x
( x+1 )2

Akar iterasi ke
1 adalah -2.6979969
Akar iterasi ke
2 adalah -2.6979969
.
.
Akar iterasi ke
99 adalah -2.6979969
Akar iterasi ke
100 adalah -2.6979969
Nilai akar = -2.6979969
6.

f ( x )=

6.0
3.0
5.0
2
+
2
, x 0=10, imaks=100
2
2
( 8.0x ) ( 5x )
x
( x+1 )2

Akar iterasi ke
1 adalah 42.988346
Akar iterasi ke
2 adalah 42.988346
.
.
Akar iterasi ke
99 adalah 42.988346
Akar iterasi ke
100 adalah 42.988346
Nilai akar = 42.988346

7.

f ( x )=sin x , x 0=0.3,imaks=100
Akar iterasi ke
1 adalah 0.45117429
Akar iterasi ke
2 adalah 0.45117429

Akar iterasi ke
99 adalah 0.45117429
Akar iterasi ke
100 adalah 0.45117429
Nilai akar = 0.45117429

8.

f ( x )=sin x , x 0=0.6,imaks=100
Akar iterasi ke
1 adalah 0.89468420
Akar iterasi ke
2 adalah 0.89468420

Akar iterasi ke
99 adalah 0.89468420
Akar iterasi ke
100 adalah 0.89468420
Nilai akar = 0.89468420

9.

f ( x )=x 2 +2x x 3 , x 0 =5,imaks=100


Akar iterasi ke
1 adalah 2.0851657
Akar iterasi ke
2 adalah 2.0851657

Akar iterasi ke
99 adalah 2.0851657
Akar iterasi ke
100 adalah 2.0851657
Nilai akar = 2.0851657

10.

f ( x )=x +2 x , x 0 =5,imaks=100
Akar iterasi ke
1 adalah 4.5455742
Akar iterasi ke
2 adalah 4.5455742

Akar iterasi ke
99 adalah 4.5455742
Akar iterasi ke
100 adalah 4.5455742
Nilai akar = 4.5455742

5. Pembahasan

Pada praktikum metode newton raphson yang menggunakan bahasa


pemrograman fortran 90. Kode-kode yang digunakan bertujuan untuk membuat suatu
x i+1=x 1
iterasi/pengulangan agar mendapatkan nilai f ( x )=0 sehingga nilai
.
Sehingga didapatkanlah nilai akar fungsi itu.
Sintaks Program titik_nol adalah nama program itu. Implicit NONE adalah untuk
memberitahu compiler agar mengabaikan fortran implicit bahwa variabel yang
diawali dengan a-h atau 0-z adalah real sedangkan yang diawali dengan 1n
adalah integer. Akibatnya compiler mengharuskan untuk secara eksplisit
mendefinisikan jenis dari setiap variable yang digunakan dalam program.
Real ::x0,x1,delta,tol menjelaskan bahwa input dari x0,x1,delta, dan tol adalah
bilangan real,atau bilangan yang ada komanya. Integer :: i,imak adalah
mendefinisikan bahwa iterasi dan iterasi maksimumnya adalah bilangan bulat, karena
memang bulat tidak ada iterasi yang menggukanan koma. Perintah write(*,*)
Berikan masukan nilai x0 = adalah sintaks untuk memasukkan nilai tebakan awal
melalui keyboard , sedangkan read(*,*)x0 menyatakan
bahwa
nilai
yang
dimasukkan lewat keyboard itu adalah x0, i=0 menunjukkan bahwa saat nilai
awal dimasukkan belum terjadi iterasi. Perintah imak = 100 dan
tol=1.0e-4
menyatakan bahwa banyaknya iterasi maksimum adalah 100 dan
toleransinya adalah 1.0e-4. Perintah do adalah untuk memulai iterasi, i=i+1
menyatakanbahwa
iterasi
dilakukan
dengan
rentang
1.
x i=x 0 fung( x 0) /dfung( x 0 )
adalah rumusan newton raphson yang akan
digunakan untuk mencari nilai akar melalui iterasi,sedangkan delta=x1-x0 adalah
selisih antara xi+1 dengan xi . write(*,*) akar iterasike,i, adalah ,1 untuk
menampilkan pada output saat iterasi keberapa hasilnya berapa, hasilnya berupa
x1
nilai
yang didapat dari rumusan newton raphson. Perintah
if((abs(delta) .LE. tol) .OR. (I .GE. imak)) exit kalau diterjemahkan ke bahasa manusia
adalah jika nilai absolute (mutlak) dari delta (selisih xi+1 dengan xi) lebih kecil sama
dengan nilai toleransi atau i lebih besar sama dengan imak maka iterasi/pengulangan
x =x
dihentikan. Perintah 0 1 End do menyatakan saat delta sama atau lebih kecil
dari toleransi maka nilai akar sudah didapatkan sehingga iterasi berakhir cukup
sampai disini. Perintah write(*,*) Nilai akar = ,x1 adalah untuk menghasilkan nilai
x1
keluaran nilai akar yang dicari yaitu
yang didapat dengan iterasi perumusan
newton raphson,bukan masukan dari keyboard. Contains adalah perintah tentang
konten-konten yangada pada program. Perintah Function fung(x) menyatakan
fungsi x. Real :: fung menyatakan bahwa fung adalah real, atau nilainya bisa
menggunakan koma. Real,intent(in) :: x memberi tahu compiler bahwa x digunakan
sebagai nilai masukkan/inputsaja. Atau dengan kata lain, x dimasukkan ke dalam
fung = 3.0/(5.0-x)** 2 - 5.0/x**2. Sama seperti fung, konten pada

dfung intinya sama yang membedakan adalah dfung merupakan turunan dari

fung.
Dengan perhitungan program diatas didapatkan hasil sebagai berikut :
No.

f (x)

3.0
5.0
2
2
( 5.0x ) ( x )

10

11.842105

f ( x )=

3.0
5.0
2
2
( 5.0x ) ( x )

2.4386916

f ( x )=

3.0
5.0
2
2
( 5.0x ) ( x )

Nan

f ( x )=

6.0
3.0
5.0
2
+
2
2
2
( 8.0x ) ( 5x )
x
( x+1 )2

f ( x )=

6.0
3.0
5.0
2
+
2
2
2
( 8.0x ) ( 5x )
x
( x+1 )2

-2

-2.6979969

f ( x )=

6.0
3.0
5.0
2
+
2
2
2
( 8.0x ) ( 5x )
x
( x+1 )2

10

42.988346

2.

3.

5.

6.

Hasil

f ( x )=

1.

4.

x0

7.

sin x

0.3

0.45117429

8.

sin x

0.6

0.89468420

9.

f ( x )=x +2 x

2.0851657

10.

f ( x )=x 2 +2x x 3

4.5455742

*dengan nilai imaks = 100.


Jika kita lihat ada nilai-nilai yang tidak biasa di sini yaitu nilai Nan pada akar fungsi
f ( x )=

3.0
5.0
2
2
( 5.0x ) ( x )

perhitungan didapatkan nilai

nilai

x 0=5

. Hal itu terjadi dikarenakan pada saat

suatu persamaan
=tidak terdefinisi
. Tidak terdefinisi
(5.05.0 )

dilambangkan pada fortran sebagai Nan.

6. Kesimpulan
1. Metode Newton-Raphson merupakan metode yang bagus untuk mendapatkan
nilai suatu akar dari suatu fungsi non linear , mudah dipelajari serta mudah
diterapkan di koding pemrograman fortran
2. Dengan perhitungan program diatas didapatkan hasil sebagai berikut :

No.

f (x)
3.0
5.0
2
2
( 5.0x ) ( x )

10

11.842105

f ( x )=

3.0
5.0
2
2
( 5.0x ) ( x )

2.4386916

f ( x )=

3.0
5.0
2
2
( 5.0x ) ( x )

Nan

f ( x )=

6.0
3.0
5.0
2
+
2
2
2
( 8.0x ) ( 5x )
x
( x+1 )2

f ( x )=

6.0
3.0
5.0
2
+
2
2
2
( 8.0x ) ( 5x )
x
( x+1 )2

-2

-2.6979969

f ( x )=

6.0
3.0
5.0
2
+
2
2
2
( 8.0x ) ( 5x )
x
( x+1 )2

10

42.988346

2.

3.

5.

6.

Hasil

f ( x )=

1.

4.

x0

7.

sin x

0.3

0.45117429

8.

sin x

0.6

0.89468420

9.

f ( x )=x 2 +2x x 3

2.0851657

10.

f ( x )=x +2 x

4.5455742

*dengan nilai imaks = 100.

7. Daftar Pustaka
1. Nurwantoro, Pekik . 2001. Petunjuk Praktikum Fisika Komputasi, Univer
sitas Gadjah Mada:Yogyakarta.
2. Nugroho, Fahrudin. 2014.Pemrograman dan Metode Numerik,Universitas
Gadjah Mada:Yogyakarta.
3. Fujianto,2015.Newton-Raphson Technique diakses pada tanggal 29 April
2016

8. Lembar Pengesahan
Yogyakarta, 11 April 2014
Asisten Praktikum

Hamid Hamadi

Asisten Praktikum

Jinan Ahmad

Asisten Praktikum

Praktikan

Muhammad Egi

Zohan Syah Fatomi

9. Lampiran
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.

PROGRAM titik_nol
IMPLICIT NONE
REAL :: x0, x1, delta, tol
INTEGER :: i, imak
imak = 100
tol = 1.0e-4
WRITE (*,*)"Berikan masukan nilai x0 = "
READ (*,*)x0
i=0
DO
i = i +1
x1 = x0-fung(x0)/dfung(x0)
delta = x1 - x0
WRITE (*,*)"Akar iterasi ke ",i,"adalah", x1
IF ((ABS(delta) .LE. tol) .OR. (i .GE. imak))EXIT
END DO
WRITE (*,*)"Nilai akar = ", x1
CONTAINS
FUNCTION fung(X)
REAL :: fung
REAL, INTENT(in) :: x
fung = 3.0/(5.0-x)** 2 - 5.0/x**2

41.
END FUNCTION fung
42.
43.
FUNCTION dfung(x)
44.
REAL :: dfung
45.
REAL, INTENT(in) :: x
46.
dfung = 6.0/(5.0-x)**3 +10.0/x**3
47.
END FUNCTION dfung
48.
END PROGRAM titik_nol