You are on page 1of 90

Avid-06

1
Fisika Komputasi

D
DE ER RE ET T T TA AY YL LO OR R
1. 1 Deret Taylor
Deret Taylor memegang peranan yang sangat penting dalam analisis numerik.
Dengan deret Taylor kita dapat menentukan nilai suatu fungsi di titik x jika nilai fungsi di
titik x
0
yang berdekatan dengan titik x diketahui.
Uraian deret Taylor disekitar xo dinyatakan dengan f(x) yaitu :

=
n
n
x x
n
x f
x f ) (
!
) (
) (
0
0
) (
..(1.1)
dimana,

0
) (
0
) (
x x
n
n
n
dx
f d
x f
=
= ...(1.2)
) ( ) (
0 0
) 0 (
x f x f = (1.3)

1. 2 Deret Mac Laurin
Deret Mac Laurin adalah bentuk khusus dari deret Taylor. Dimana dianggap
bahwa titik x
0
= 0 sehingga persamaan 1.1 akan berubah menjadi :

=
n
n
x
n
f
x f
!
) 0 (
) (
) (
..(1.4)
dimana,

0
) (
) 0 (
=
=
x
n
n
n
dx
f d
f ...(1.5)
) 0 ( ) 0 (
) 0 (
f f = .(1.6)
Persamaan (1.4) adalah persamaan dari deret Mac Lauri n. Persamaan (1.1) biasa
dituliskan dengan mensubstitusikan x dengan x-x
0
, sehingga :

=
n
n
x
n
x f
x x f ) (
!
) (
) (
0
) (
0
..(1.7)
Sehingga Persamaan deret Mac Laurin akan menjadi :

=
n
n
x
n
f
x f ) (
!
) 0 (
) (
) (
...........(1.8)

Contoh :
Hitunglah deret Mac Laurin untuk Sin(x)
I


Avid-06
2
Fisika Komputasi
Jawab :
f(x) = sin(x) ; f(0) = 0
f
1
(x) = cos(x) ; f
1
(0) = 1
f
11
(x) = -sin(x) ; f
11
(0) = 0
f
111
(x) = -cos(x) ; f
111
(0) = -1
f
1V
(x) = sin(x) ; f
1V
(0) = 0
f
V
(x) = cos(x) ; f
V
(0) = 1
Dari deret Mac Laurin :

=
n
n
x
n
f
x f ) (
!
) 0 (
) (
) (


...
! 5
) 0 (
! 4
) 0 (
! 3
) 0 (
! 2
) 0 (
! 1
) 0 (
! 0
) 0 (
5 ) ( 4 ) 1 ( 3 ) 111 ( 2 ) 11 ( 1 ) 1 ( 0 ) 0 (
+ + + + + + =
x f x f x f x f x f x f
V V

Sehingga Sin(x) menjadi :
...
! 5
. 1
! 4
. 0
! 3
. 1
! 2
. 0
! 1
. 1
! 0
1 . 0
5 4 3 2
+ + +

+ + + =
x x x x x

...
! 7 ! 5 ! 3
7 5 3
+ + =
x x x
x
Latihan :
1. Buat deret Mac Laurin untuk fungsi cos(x) dan tan(x)
2. Buat deret Taylor untuk e
x
di sekitar x=0

1. 3 Program komputer
Program komputer dari fungsi sin(x) untuk deret Mac Laurin tersebut jika
dinyatakan dalam bahasa Visual C++ adalah :
//*********************************************************
// Menghitung fungsi sinus dengan deret MacLaurin
// Compiler : Visual C++
//*********************************************************
#include <iostream.h>
#include <math.h>
void main()
{
double eps=1e-5;
double x,sinx,pem,pen,s,del;
int i,j,m,k,tanda;



Avid-06
3
Fisika Komputasi
cout << "Sudut x (derajat) = ";
cin >> x;
x=x/57.3;
cout << "sin(x) = " << sin ( x); //nilai sinus dari fungsi pustaka Visual C++
del=10;
cout <<endl<<endl;
cout << "Menurut Uraian deret Taylor : "<<endl;
m=0;
while (del > eps)
{
m=m+1;
s=0;
j=0;
for (i=1;i<=2*m-1;i++)
{
if (i%2 ==1 ) // atau if ( fmod(i,2) == 1)
{
j=j+1;
if (j % 2 == 0)
tanda = -1;
else
tanda=1;
pem=1;
pen=1;
for (k=1;k<=i;k++)
{
pem=pem*x;
pen=pen*k;
}
s=s+tanda*pem/pen;
}
}

if (m>1 )
del= fabs(sinx-s);
sinx=s;
}
cout << "Jumlah suku = "<<m <<endl;
cout << "sin(x) = " << s <<endl;
}



Avid-06
4
Fisika Komputasi
Latihan :
1. Buatlah program komputer dari deret MacLaurin untuk fungsi exp(x) :
...
! 3 ! 2
1 ) exp(
3 2
+ + + + =
x x
x x
2. Buatlah program komputer dari deret MacLaurin untuk fungsi cos(x) :
...
! 6 ! 4 ! 2
1 ) cos(
6 4 2
+ + =
x x x
x





























Avid-06
5
Fisika Komputasi
AK KA AR R- -A AK KA AR R P PE ER RS SA AM MA AA AN N
Akar suatu persamaan merupakan titik potong fungsi f(x) dengan sumbu x :








Gambar 2.1. Akar dari persamaan f(x)
Akar dari suatu persamaan sering dipakai untuk menyelesaikan masalah fisika seperti :
-Mengetahui volume gas pada suatu tekanan tertentu







Gambar 2.2. Diagram P-V gas ideal
-Mengetahui jarak jatuh peluru yang ditembakkan dengan arah dan kecepatan tertentu







Gambar 2.3. Gerak Peluru
2. 1 Memperki rakan Letak Akar
Jika diberikan fungsi f(x) dengan letak akar di x
0
seperti di gambar 2.4. Untuk
menentukan letak dari akar fungsi f(x) dapat ditempuh langkah - langkah sbb :
f(x)
x
x
0
akar f(x)
P
1
V
V
1
P
saat P=P
1
berapa nilai V
1
x
x=?

f(x)
saat f(x)=0 berapa nilai x

f(x)
V(t)

u
II


Avid-06
6
Fisika Komputasi








Gambar 2.4. Akar dari persamaan f(x)
-tentukan sebuah titik pada sumbu x dalam daerah berlakunya fungsi f(x) misalnya x
1

-tentukan titik lain misal x
2
, dimana x
2
= x
1
- h
-bila f(x
1
) x f(x
2
) > 0 , berarti x
1
dan x
2
berada pada pihak yang sama terhadap x
0
.
-tentukan titik lain misal : x
3
= x
2
-h
-bila f(x
2
) x f(x
3
) > 0 , berarti x
2
dan x
3
berada pada pihak yang sama terhadap x
0
.








Gambar 2.5. Perkiraan akar dari persamaan f(x)
-penentuan titik-titik diteruskan sampai diperoleh : f(x
a
) x f(x
b
) < 0 (negatif)







Gambar 2.6. Perkiraan akar dari persamaan f(x)
-sehingga daerah pencarian akar-akar akan dipersempit diantara x
a
dan x
b

-langkah-langkah diatas diulang pada daerah :
b a
x x x s s
x
x
0
f(x)
x
x
0
f(x)
x
2
x
1
h
f(x
2
)
f(x
1
)
x
1
dan x
2
sama-sama
berada disebelah kanan x
0

x
x
0
x
a x
b
f(x)
x
a
dan x
b
terletak
berseberangan terhadap titik
potong x
0
x
a
berada di sebelah kiri x
0
x
b
berada di sebelah kanan x
0



Avid-06
7
Fisika Komputasi
catatan :
Bila kita menentukan suatu arah dan sampai batas daerah tertentu tidak ditemukan
titik potong (x
0
), maka kita coba sekali lagi untuk arah yang berlawanan
Contoh :
Tentukan titik potong f(x) terhadap sumbu x. Dimana bentuk persamaan f(x) :
f(x) = x
3
-11x
2
+ 39x 45
untuk 75 . 0 , 6 0 = s s h x
n x
n
f(x
n
) x
n
-h
1 6 9 5,25
2 5,25 1,265 4,5
3 4,5 -1,25

Dari tabel f(5,25) x f(4,5) < 0 , sehingga titik potong terletak antara x = 4,5 dan x
= 5,25
2. 2 Metode Newton-Rapshon
Penentuan akar-akar suatu persamaan dapat dicari dengan memakai rumus iterasi
Newton Rapshon yang diturunkan dari uraian deret Taylor. Jika hanya dilibatkan sampai
suku dengan turunan pertama maka akan didapatkan iterasi Newton-Rapshon orde-1,dan
bila yang dilibatkan sampai suku dengan turunan kedua maka disebut iterasi Newton-
Rapshon orde-2, dan seterusnya. Uraian deret Taylor di sekitar x
0
dinyatakan :

=
n
n
x x
n
x f
x f ) (
!
) (
) (
0
0
) (

...
! 2
) )( (
! 1
) )( (
! 0
) (
2
0 0
) 11 ( 1
0 0
) 1 ( 0
0
) 0 (
+

+ =
x x x f x x x f x x f



2. 2. 1 Metode Newton-Rapshon orde-1
Uraian deret Taylor dari fungsi f(x) di sekitar x
0
sampai suku dengan turunan
pertama dinyatakan :
f(x) = f(x
0
) + f
1
(x
0
)(x-x
0
)
Jika x disubstitusikan dengan x
n+1
dan x
0
disubstitusikan dengan x
n
maka :
f(x
n+1
) = f(x
n
) + f
1
(x
n
)(x
n+1
-x
n
)....(2.1)
Bila x
n+1
adalah akar dari f(x) maka f(x
n+1
) = 0. Sehingga persamaan 2.1 akan menjadi :
orde -1
orde -2


Avid-06
8
Fisika Komputasi

) (
) (
'
1
n
n
n n
x f
x f
x x =
+
..(2.2)
Persamaan 2.2 disebut dengan persamaan iterasi Newton-Rapshon orde-1. Nilai x
n+1
dapat
dicari dari x
n
(suatu titik dapat dicari dari titik sebelumnya). Jadi bila suatu titik awal x
0

diketahui maka dengan persamaan 2.2 dapat dicari x
1
, x
2
, dan seterusnya sampai
ditemukan akar dari persamaan atau fungsi yang bersangkutan (nilai x yang menyebabkan
f(x) = 0). Penentuan x
0
memegang peranan yang amat penting karena cepat lambatnya
penentuan akar ditentukan oleh pengambilan titik awal x
0
. Penentuan titik awal x
0
harus
ditentukan sedekat mungkin dengan akar sehingga mengurangi banyaknya iterasi. Hal ini
dapat dilakukan dengan metode memperkirakan letak akar (sub bab 2.1).
Contoh :
Tentukanlah akar f(x) = x
3
11x
2
+ 39x 45 dengan metode Newton-Rapshon
orde-1.
Jawab :
f
1
(x) = 3x
2
22x + 33
misal kita ambil titik awal x
0
= 6
n x
n
f(x
n
) f
1
(x
n
) x
n+1

0 6,000 9,000 15,000 5,400
1 5,400 2,304 7,680 5,100
2 5,100 0,441 4,830 5,009
3 5,009 0,036 4,070 5,000
4 5,000 0,000 4,000 5,000

Dari tabel diatas dapat dilihat untuk ketelitian 3 angka dibelakang koma x
4
= x
5
=
5,000. Dan nilai f(x) = 0,000. Jadi akar dari f(x) adalah x = 5,000
2. 2. 2 Metode Newton-Rapshon orde-2
Jika kita melibatkan sampai suku dengan turunan kedua pada uraian deret Taylor
maka akan menghasilkan iterasi Newton Rapshon orde-2. Penurunan persamaannya dapat
ditentukan dengan cara berikut ini. Dari persamaan umum deret Taylor (pers. 1.1)

=
n
n
x x
n
x f
x f ) (
!
) (
) (
0
0
) (

! 2
) )( (
! 1
) )( (
! 0
) (
2
0 0
) 11 ( 1
0 0
) 1 ( 0
0
) 0 (
x x x f x x x f x x f
+

+ =
dengan mensubstitusi x dengan x
n+1
, dan x
0
dengan x
n
didapatkan


Avid-06
9
Fisika Komputasi
! 2
) )( (
) )( ( ) ( ) (
2
1
11
1
1
1
n n n
n n n n n
x x x f
x x x f x f x f

+ + =
+
+ +

Jika x
n+1
akar dari f(x) maka
f(x
n+1
) = 0

) (
) (
1
1
n
n
n n
x f
x f
x x

=
+

Sehingga

|
|
.
|

\
|
+ + =
+
+
) (
) (
2
) )( (
) )( ( ) ( 0
1
2
1
11
1
1
n
n n n n
n n n n
x f
x f x x x f
x x x f x f
) (
) ( 2
) ( ) (
) )( ( ) ( 0
1
1
11
1
1
n n
n
n n
n n n n
x x
x f
x f x f
x x x f x f + =
+ +

(

+ =
+
) ( 2
) ( ) (
) ( ) ( ) ( 0
1
11
1
1
n
n n
n n n n
x f
x f x f
x f x x x f
) ( 2
) ( ) (
) (
) (
'
' '
'
1
n
n n
n
n
n n
x f
x f x f
x f
x f
x x

=
+


) ( 2
) ( ) (
) (
) (
'
' '
'
1
n
n n
n
n
n n
x f
x f x f
x f
x f
x x

=
+
.(2.3)
Persamaan 2.3 merupakan persamaan iterasi Newton-Rapshon orde-2.
Contoh :
1. Tentukanlah akar f(x) = x
3
11x
2
+ 39x 45 dengan metode Newton-Rapshon
orde-2.
Jawab :
f
1
(x) = 3x
2
22x + 33 ; f
11
(x) = 6x - 22
misal kita ambil titik awal x
0
= 6
N x
n
F(x
n
) f
1
(x
n
) f
11
(x
n
) x
n+1

0 6,000 9,000 15,000 14,000 5,167
1 5,167
2
3
4



Avid-06
10
Fisika Komputasi
2. Satu mole gas ideal suhunya 300
0
K, volumenya diperbesar pada suhu tetap
(isotermis). Berapa liter volume gas ideal tersebut pada saat tekanannya 15 atmosfer.
(tetapan gas universal 0,0823 l atm/mole
0
K )
jawab:
Persamaan gas ideal :
PV = n R T
Diket :
N = 1 mole
R = 0,0823 l atm / mole
0
K
T = 300
0
K
P = n R T / V = 1. 0,0823 . 300/ V = 24,69 / V
Jika dimisalkan P = f(x) dan V = x maka f(x) = 24,69/x








Karena yang dicari adalah nilai V saat P = 15 maka
15
69 , 24
) ( atau 15
69 , 24
= =
x
x f
V
P
sehingga
2
1
69 , 24
) (
x
x f =
Dengan iterasi Newton-Rapshon orde-1

) (
) (
'
1
n
n
n n
x f
x f
x x =
+

misal x
0
= 1,5
n x
n
f(x
n
) f
1
(x
n
) x
n+1

0 1,500
1
2


P
1
=15
V
V
1
=?
P
x
f(x)
f(x)
1
=15
x
1
=?


Avid-06
11
Fisika Komputasi
x=? 0
x
y
1
=1/2 x
1
f(x)
3. Suatu celah lebarnya 0,4 mm disinari dengan cahaya dengan panjang
gelombang 5900 . Pola difraksi yang terjadi ditangkap layar yang jaraknya 70 cm dari
celah. Berapa jarak dari tengah-tengah terang pusat sampai intensitas cahaya tinggal
nya.
Jawab :
Pola difraksi pada celah ditentukan dengan :

2
2
0
|
| Sin I
I =
dimana,
I
0
= intensitas cahaya yang datang
= k b sin
k = bilangan gelombang = 2/ ; sin = / D
b = lebar celah
= sudut antara normal pada celah dengan arah sinar yang menjadi pusat
perhatian
Jika I/I
0
disubstitusi menjadi y dan disubstitusi menjadi x maka :

2
2
sin
x
x
y =
karena yang dicari adalah nilai x saat y = (I / I
0
= atau I = I
0
)
Jadi persamaan yang dicari solusinya adalah :
5 , 0
sin
2
2
=
x
x
y









Untuk mendapatkan titik potong f(x) dengan sumbu x maka dipakai iterasi Newton-
Rapshon orde-1.


Avid-06
12
Fisika Komputasi
5 , 0
sin
) (
2
2
=
x
x
x f

2
2
3
2
1
sin sin 2
) (
x
x
x
x
x f +

=
misal x
0
= 1,25
n x
n
f(x
n
) f
1
(x
n
) x
n+1

0 1,250
1
2



Dari perhitungan didapatkan titik potong x = 1,39155738 sehingga
u

t
u sin sin
2
1
392 , 1 b kb = =

4 , 0 .
10 . 9 , 5
. 392 , 1 sin
4
t
u

=
2. 3 Akar Akar Dari Polinom
Bentuk Umum Polinom adalah :

0 1
2
2
1
1
... ) ( a a x a x a x a x f
n
n
n
n
n
n
+ + + + + =

..(2.4)
contoh :
3 orde polinom 45 33 11 ) (
2 3
+ = x x x x f
2 - orde polinom 8 2 ) (
2
= x x x f
2. 3. 1 Pembagian Si ntetik
adalah metode untuk mencari nilai fungsi f(x) dan nilai turunan fungsi f
1
(x).
Adapun langkah-langkahnya adalah :
1.Tuliskan koefisien-koefisien polinom dengan urutan :

0 2 1
... a a a a
n n n

bila ada suku yang tidak hadir tulis 0 untuk koefisien dari suku tsb.
2.Nilai x dimana nilai fungsi akan dicari diletakkan paling kiri dalam deretan koefisien-
koefisien.

0 2 1
... a a a a x
n n n



Avid-06
13
Fisika Komputasi
3.Selang satu baris dari deretan koefisien tersebut buat garis lurus sebagai garis
penjumlahan.

0 2 1
... a a a a x
n n n


4.Turunkan a
n
hingga ke bawah garis penjumlahan. Sebut a
n
dengan b
n
.

0 2 1
... a a a a x
n n n

n
b
5.Kalikan x dengan b
n
dan letakkan hasilnya diatas garis penjumlahan tepat di bawah a
n-1
.
Jumlahkan a
n-1
dengan hasil kali tadi dan letakkan hasilnya di bawah garis penjumlahan,
satu kolom dengan a
n-1
. Beri nama hasil penjumlahan tadi dengan b
n-1


0 2 1
... a a a a x
n n n

n
b

6.Kalikan x dengan b
n-1
dan letakkan hasilnya diatas garis penjumlahan di bawah a
n-2
.
Jumlahkan a
n-2
dengan hasil kali tadi dan letakkan hasilnya di bawah garis penjumlahan,
satu kolom dengan a
n-2
. Beri nama hasil penjumlahan tadi dengan b
n-2


0 2 1
... a a a a x
n n n



7.Lakukan operasi yang sama untuk koefisien-koefisien yang lain sehingga di bawah garis
penjumlahan akan didapatkan deretan :

0 2 1
... b b b b
n n n

8.Nilai b
0
merupakan nilai fungsi f(x) yang dicari.
Jika pembagian sintetik dilanjutkan untuk deretan

0 2 1
... b b b b
n n n

maka akan didapatkan nilai dari turunan f
1
(x).
Jika langkah-langkah tersebut diatas dirangkum maka akan tampak seperti berikut ini :

3 2 1 n n n n
a a a a x
) ( ) ( ) (
2 1
x b x b x b
n n n


3 2 1 n n n n
b b b b
+
+
+
n
b x.
1
1
) . (

=
+
n
n n
b
b x a

+
1 n
b
2
1 2
) . (


=
+
n
n n
b
b x a

n
b
1
.
n
b x
+


Avid-06
14
Fisika Komputasi
dimana,

n n
a b =
x b a b
n n n
+ =
1 1

x b a b
n n n 1 2 2
+ =
x b a b
n n n 2 3 3
+ =
Nilai
3 n
b merupakan nilai dari fungsi f(x) pada x yang bersangkutan. Sedangkan untuk
menentukan nilai dari turunan dari fungsi f(x) tersebut adalah dengan meneruskan
pembagian sintetik dimana nilai
3 2 1
, , ,
n n n n
a a a a diganti dengan nilai
2 1 ,
,
n n n
b b b .

2 1 n n n
b b b x
) ( ) (
1
x c x c
n n


2 1 n n n
c c c
dimana,

n n
b c =
x c b c
n n n
+ =
1 1

x c b c
n n n 1 2 2
+ =
Nilai dari
2 n
c merupakan nilai turunan dari persamaan f(x) pada x yang bersangkutan.
Contoh :
Misalkan kita memiliki persamaan polinom orde 3 yaitu :
45 39 11 ) (
2 3
+ = x x x x f
Tentukan nilai fungsi dan turunannya untuk x=2
Jawab :
-Secara Analitik :
Untuk x = 2 maka f(2) = -3 dan f
1
(2) = 7
-Dengan Pembagian Sintetik maka hasilnya adalah :
2 1 -11 39 -45
2 -18 42
1 -9 21 -3

2 1 -9 21
2 14
1 -7 7
+


Avid-06
15
Fisika Komputasi
Jadi didapatkan nilai f(x) pada x=2 adalah 3, sedangkan nilai turunannya adalah 7. Hasil
ini sama dengan hasil yang didapatkan secara analitik.
Soal :
1. Tentukan akar dari persamaan : f(x) = x
3
6x
2
+ 11x 6
2. Tentukan akar dari persamaan : f(x) = x
2
- 2x 8
catatan : gunakan metode Iterasi Newton Rapshon orde 1 dan orde-2

2. 3. 2 Akar Ganda
Bila suatu fungsi mempunyai beberapa akar maka untuk mencari akar akar yang
lain dipakai iterasi Newton-Rapshon dengan titik awal yang lain juga.
Jika suatu fungsi mempunyai akar ganda (lebih dari 1 akar pada titik yang sama)
maka kalau hanya memakai metode Newton-Rapshon tidak akan dapat menentukan akar
ganda tersebut.
Contoh :
45 39 11 ) (
2 3
+ = x x x x f
) 5 )( 3 )( 3 ( = x x x
Persamaan tersebut mempunyai akar ganda di x=3 dan akar tunggal di x=5. Untuk
menyelesaikan masalah akar ganda maka kita memakai langkah-langkah berikut. Untuk
suatu polinom orde n, yaitu f
n
(x) maka langkah-langkah mencari akar adalah :
1.Tentukan akar f
n
(x) paling kanan dengan metode Newton-Rapshon. Misalkan akar
tersebut adalah x = x
1

2.Bagi f
n
(x) dengan (x-x
1
), hasilnya polinom yang ordenya lebih rendah 1 tingkat yaitu :
f
n-1
(x)
3.Tentukan akar paling kanan f
n-1
(x) dengan Newton-Rapshon. Misalkan akar tersebut
adalah x=x
2

4.Bagi f
n-1
(x) dengan (x-x
2
). Hasilnya adalah polinom yang ordenya lebih rendah 2
tingkat dari semula yaitu f
n-2
(x)
5.Langkah diteruskan sampai didapatkan polinom orde-1
contoh :
45 39 11 ) (
2 3
+ = x x x x f
3 orde polinom ) 5 )( 3 )( 3 ( = x x x
-bagilah f(x) dengan (x-5) hasilnya :
2 - orde polinom ) 3 )( 3 ( ) ( = x x x f
-bagi f(x) dengan (x-3) hasilnya :


Avid-06
16
Fisika Komputasi
1 - orde polinom ) 3 ( ) ( = x x f
Adapun langkah langkah membagi suatu polinom orde-n dengan polinom orde -1
adalah :
1.Tuliskan koefisien-koefisien dari polinom semula
a
n
a
n-1
a
n-2
a
0

2.Lakukan pembagian sintetik untuk suatu nilai x (x didapat dari Newton-Rapshon)
sehingga didapatkan :
b
n
b
n-1
b
n-2
b
0

b
0
= 0 = nilai fungsi
3.Ubah b
n
menjadi a
n-1
, b
n-1
menjadi a
n-2
, b
1
menjadi a
0
Setelah langkah ke-3 maka akan didapatkan koefisien-koefisien polinom baru yang
ordenya 1 tingkat lebih rendah yaitu :
a
n-1
a
n-2
a
0

Jika langkah tersebut dilanjutkan sampai didapatkan koefisien-koefisien polinom orde-
1, maka akar terakhir akan didapatkan dari polinom orde 1 ini.
Contoh :
3 - orde 45 39 11 ) (
2 3
+ = x x x x f
Langkah-langkah :
1. a
3
a
2
a
1
a
0

1 -11 39 -45
2. 5 1 -11 39 -45 x = 5
5 -30 45
1 -6 9 0
3. 2 - orde 9 6 ) (
2
+ = x x x f
sehingga a
2
= 1
a
1
= -6
a
0
= 9
Ulangi langkah-langkah tsb :
1 1 -6 9
2. 3 1 -6 9 x = 3
3 -9
1 -3 0
3. 1 - orde 3 ) ( = x x f
sehingga a
1
= 1


Avid-06
17
Fisika Komputasi
a
0
= -3
Jadi akar-akar dari fungsi tsb adalah :
x
1
= 5
x
2
= 3
x
3
= 3

2. 4 Program Komputer
1) Program komputer iterasi Newton-Rapshon orde 1, dimana persamaan yang dicari
akarnya adalah :
45 39 11 ) (
2 3
+ = x x x x f
//**********************************************************************************
// Menghitung Akar dari Fungsi dengan Metode Newton Rapshon Orde 1
// Iterasi dibatasi hanya sampai 15 kali iterasi
// Compiler : Visual C++
//**********************************************************************************
#include <iostream.h>
#include <math.h> //header untuk fungsi fabs()
#include <iomanip.h> //header untuk widht,setiosflags,...
void main()
{
double y[100];
double x,fx,dx;
int n;
cout <<endl;
cout << "Titik awal xo : ";
cin >> y[0];
cout <<endl<<endl;
//cout <<setprecision(2);
for (n=1; n<=15; n++) //hanya 15 iterasi
{

x=y[n-1];
//*****************************
fx=x*(x*x)-11*(x*x)+39*x-45; //persamaan yg akan dicari akarnya
dx=3*(x*x)-22*x+39; // Nilai turunan pertama dari persamaan
//*****************************
y[n]=x-fx/dx; //rumus Newton Rapshon orde-1
cout.width(15); //tampilkan 15 digit
cout <<setiosflags(ios::left); //rata kiri


Avid-06
18
Fisika Komputasi
cout << n ;
cout.width(15);
cout <<setiosflags(ios::left);

cout <<y[n];
cout.width(15);
cout <<setiosflags(ios::left);
cout <<fabs(y[n]-x) ;
cout <<endl<<endl;
}
}

Dalam program diatas iterasi dibatasi hanya sampai 15 iterasi. Sehingga program akan
berhenti begitu 15 iterasi tercapai. Program berikut ini merupakan modifikasi dari
program diatas dimana iterasi akan berhenti jika selisih antara 2 nilai iterasi yang
berturutan lebih kecil atau sama dengan suatu konstanta ( epsilon). Adapun implementasi
dari program tersebut adalah seperti dibawah ini :

//***********************************************************************
// Menghitung akar dari fungsi dengan Newton Rapshon orde-1
// iterasi dibatasi oleh selisih antar 2 nilai iterasi yg berurutan
// Compiler : Visual C++
//***********************************************************************
#include <iostream.h>
#include <math.h>
void main()
{
double eps=1e-5; //konstanta (epsilon)
double y[100];
double x,fx,dx,selisih;
int n;
cout <<endl;
cout << "Titik awal xo : ";
cin >> y[0];
cout <<endl<<endl;
n=0;
selisih = 10;
while (selisih >= eps)
{
n=n+1;


Avid-06
19
Fisika Komputasi
x=y[n-1];
//bentuk berikut dpt berubah sesuai bentuk fungsinya
//*****************************
fx=x*(x*x)-11*(x*x)+39*x-45; //Fungsi yg dicari akarnya
dx=3*(x*x)-22*x+39; //Turunan pertama dari fungsi
//*****************************
y[n]=x-fx/dx; //pers. Metode Newton-Rapshon orde-1
selisih=fabs(y[n]-x); //selisih 2 nilai iterasi yg berurutan
}

cout << "Jumlah iterasi = "<<n <<endl;
cout << "Akar = " << y[n] <<endl;
}

2) Program komputer iterasi Newton-Rapshon orde 2, dimana persamaan yang dicari
akarnya adalah :

45 39 11 ) (
2 3
+ = x x x x f

// **********************************************************************
// Menghitung akar dari fungsi dengan Newton Rapshon orde-2
// iterasi dibatasi oleh selisih antar 2 nilai yg berurutan
// Compiler : Visual C++
// **********************************************************************
#include <iostream.h>
#include <math.h>
#include <iomanip.h>
void main()
{
double eps=1e-5;
double y[100];
double x,fx,d1,d2,pen,selisih;
int n;
cout <<endl;
cout << "Titik awal xo : ";
cin >> y[0];
cout <<endl<<endl;
n=0;
selisih = 10;
while (selisih >= eps) //iterasi sampai selisih 2 nilai berurutan <= eps


Avid-06
20
Fisika Komputasi
{
n=n+1;
x=y[n-1];
//bentuk berikut dpt berubah sesuai bentuk fungsinya
//*****************************
fx=x*(x*x)-11*(x*x)+39*x-45; //Fungsi yg dicari akarnya
d1=3*(x*x)-22*x+39; //Turunan pertama dari fungsi
d2=6*x-22; //Turunan kedua dari fungsi
//*****************************
pen=d1-d2*fx/(2*d1);
y[n]=x-fx/pen; //pers. Iterasi Newton-Rapshon orde-2
cout.width(10);
cout << setiosflags(ios::left);
cout << n; //tampilkan iterasi ke-n
cout.width(15);
cout << setiosflags(ios::left);
cout << y[n]; //tampilkan nilai iterasi ke-n
selisih=fabs(y[n]-x); //selisih 2 nilai iterasi yg berurutan
cout.width(15);
cout << setiosflags(ios::left);
cout << selisih;
cout << endl<<endl;
}
cout << "Jumlah iterasi = "<<n <<endl;
cout << "Akar = " << y[n] <<endl;
}
Latihan :
1) Buatlah program komputer untuk menghitung persoalan gas ideal. Dimana 1 mole gas
ideal yang suhunya 300
0
K volumenya diperbesar pada suhu tetap. Berapa liter volume
gas tersebut ketika tekanannya 15 atmosfir (tetapan gas universal 0,0823 l.atm/mole
0
K).
Petunjuk :
pV = nRT
Dimana, n=1 mole, R=0.0823 l.atm/mole
0
K, dan T=300
0
K. Sehingga :
p = 24.69/V
untuk menentukan berapa volume gas pada saat tekanannya 15 atmosfir maka persamaan
tersebut akan menjadi :
p = 24.69/V -15
Atau jika p disubstitusi menjadi y dan V menjadi x maka :
y = 24.69/x 15


Avid-06
21
Fisika Komputasi
Dengan menggunakan iterasi Newton-Rapshon maka akan dapat ditentukan solusinya.
Buatlah program komputer dari masalah ini.

2) Buatlah program komputer untuk masalah difraksi pada celah. Dimana suatu celah
dengan lebar 0.4 mm disinari dengan cahaya dengan panjang gelombang 5900 A. Pola
difraksi yang terjadi ditangkap oleh sebuah layar yang jaraknya 70 cm dari celah tsb.
Hitung jarak dari tengah-tengah terang pusat sampai intensitas cahaya tinggal nya.
Petunjuk :
Pola difraksi pada celah dinyatakan dengan :

2
2
0
|
| Sin I
I =
dimana, I
0
intensitas cahaya yang datang dan u | sin
2
1
kb = . Jika kita mensubstitusikan
I/I
0
menjadi y dan | menjadi x maka persamaan tersebut akan menjadi

2
2
sin
x
x
y =
untuk mendapatkan nilai dimana I/I
0
= 0.5 maka persamaan tersebut diubah menjadi :
5 . 0
sin
2
2
=
x
x
y
Dengan memakai iterasi Newton-Rapshon maka solusi persamaan ini akan dapat dicari.
Buatlah programnya!.

Tugas selanjutnya adalah bagaimana kita membuat program komputer dari
Pembagian Sintetik ini. Adapun implementasi dari program komputer untuk metode
Pembagian Sintetik ini dinyatakan seperti berikut ini :
//*************************************************************
//Menentukan nilai fungsi dan turunan dengan Metode
//pembagian Sintetik
//Compiler : Visual C++
//*************************************************************
#include <iostream.h>
#include <iomanip.h>
void pemsin(double a[100],int n,double x,double b[100]);
void main()
{
double a[100];


Avid-06
22
Fisika Komputasi
double b[100];
double c[100];
double x;
int i,orde;
cout<<"Orde dari polinom = ";
cin >> orde;
for (i=orde; i>=0; i--)
{
cout<< "a"<<i<<" = ";
cin >>a[i]; //input koefisien dari masing-masing suku
}
cout <<endl;
cout << "tentukan titik xo : ";
cin >>x;
cout <<endl<<endl;
pemsin(a,orde,x,b); //panggil fungsi pemsin --->pembagian sintetik
for (i=orde;i>=0;i--)
{
if (i!=0 )
{
cout.width(15); //pesan tempat 15 digit
cout<<setiosflags(ios::left); //tampilkan rata kiri
cout<<i;
cout<<setw(15);
cout<<setiosflags(ios::left);
cout<<b[i];
}
else
{
cout<<setw(15);
cout<<setiosflags(ios::left);
cout<<i;
cout<<setw(15);
cout<<setiosflags(ios::left);
cout<<b[i];
cout<<"Nilai Fungsi";
}
cout <<endl;
}
cout<<endl;
pemsin(b,orde,x,c);


Avid-06
23
Fisika Komputasi
for(i=orde;i>=0;i--)
{
if (i!=1)
{
cout<<setw(15);
cout<<setiosflags(ios::left);
cout<<i;
cout<<setw(15);
cout<<setiosflags(ios::left);
cout<<c[i];
}
else
{
cout<<setw(15);
cout<<setiosflags(ios::left);
cout<<i;
cout<<setw(15);
cout<<setiosflags(ios::left);
cout<<c[i];
cout<<" Nilai Turunan";
}
cout <<endl;
}
}
void pemsin(double a[100],int n,double x,double b[100])
{
int j;
b[n]=a[n];
for (j=n-1; j>=0; j--)
{
b[j]=a[j]+x*b[j+1];
}
}
Jika metode Pembagian Sintetik ini kita padukan dengan iterasi Newton-Rapshon dalam
penentuan akar-akar persamaan Polinom maka bentuk program komputer dari Iterasi
Newton-Rapshon akan mengalami perubahan seperti di bawah ini :

//******************************************************************************
//Menentukan Akar dari Polinom dengan Newton-Rapshon dimana
//nilai fungsi dan turunan ditentukan dgn metode Pembagian Sintetik
//Compilar : Visual C++


Avid-06
24
Fisika Komputasi
//******************************************************************************
#include <iostream.h>
#include <iomanip.h>
#include <math.h>
void pemsin(double a[100],int n,double x,double b[100]); //deklarasi fungsi
pembagian sintetik
void main()
{
double eps = 1e-5;
double a[100];
double b[100];
double c[100];
double y[100];
double x,fx,dx;
int i,n,orde;
cout<<"Orde dari polinom = ";
cin >> orde;
for (i=orde; i>=0; i--)
{
cout<< "a"<<i<<" = ";
cin >>a[i]; //input koefisien dari masing-masing suku
}
cout <<endl;
cout << "tentukan titik awal xo : ";
cin >>y[0];
cout <<endl<<endl;
n=0;
while (fabs(y[n]-x)>=eps)
{
n=n+1;
x=y[n-1];
pemsin(a,orde,x,b);
fx=b[0];
pemsin(b,orde,x,c);
dx=c[1];
y[n]=x-fx/dx;
` }
cout << "Jumlah iterasi : "<<n<<endl;
cout << "Akar : "<<y[n];
cout <<endl;
}


Avid-06
25
Fisika Komputasi
void pemsin(double a[100],int n,double x,double b[100])
{
int j;
b[n]=a[n];
for (j=n-1; j>=0; j--)
{
b[j]=a[j]+x*b[j+1];
}
}
Latihan :
1) Buatlah program komputer untuk menyelesaikan masalah gerak peluru. Dimana sebuah
peluru ditembakkan dengan kecepatan awal V
0
= 100 m/s dan sudut elevasi o = 45
0
.
Percepatan grafitasi g = 9,8 m/dt
2
.Tentukan berapa jauh peluru akan melayang di udara.
Petunjuk :
Persamaan lintasan peluru dinyatakan dengan :
x x
v
g
y ) (tan
) cos ( 2
2
2
0
o
o
+ =
atau bisa ditulis menjadi polinom orde-2 yaitu :
x a x a y
1
2
2
+ =
dimana,

1 3
2
0
2
10 . 1
) cos ( 2

= = m
v
g
a
o

1 tan
1
= = o a
0
0
= a
Dengan memakai iterasi Newton-Rapshon yang dikombinasikan dengan metode
pembagian Sintetik maka solusi permasalahan diatas akan dapat dicari. Buat program
komputernya.










Avid-06
26
Fisika Komputasi
IN NT TE EG GR RA AL L D DA AN N D DI IF FE ER RE EN NS SI IA AL L
3. 1 INTEGRAL
Nilai Integral I dari suatu fungsi f(x) menyatakan luas bidang dibawah fungsi f(x)
antara x=a dan x=b atau ditulis :

}
=
b
a
dx x f I ) ( ...(3.1)
Ada beberapa metode yang dapat dipakai untuk menghitung integral diantaranya : metode
persegi panjang, metode trapesium, metode Simpson, metode Romberg dll. Berikut ini
akan dijelaskan beberapa metode tersebut.

3. 1. 1 Metode Persegi Panjang
Dalam metode ini luas bidang dibawah kurva f(x) antara x = a dan x = b dapat
dicari dengan membagi bidang tersebut menjadi n buah pita yang berbentuk persegi
panjang, yang panjangnya f(x
i
) dan lebarnya x A , sehingga










luas masing-masing pita dapat dinyatakan :
x x f L
i i
A = A ) ( ....(3.2)
Karena antara x = a dan x = b terdapat n buah pita maka luas seluruhnya menjadi :

=
A =
n
i
x xi f L
1
) ( ...(3.3)
untuk x sangat sempit (x 0) maka persamaan (3.3) adalah persamaan integral seperti
yang dirumuskan dalam persamaan (3.1). Metode untuk menghitung integral seperti yang
disebutkan di atas dikenal dengan metode Persegi Panjang.
f(x)
a b
y
x
Gambar 3.1 Metode Persegi Panjang
Pita ke-1
Pita ke-n
Pita ke-i
x A
III


Avid-06
27
Fisika Komputasi
3. 1. 2 Metode Trapesium
Dalam metode trapesium ini luas bidang di bawah fungsi f(x) antara x = a dan x =
b dapat dicari dengan membagi bidang antara x = a dan x = b menjadi n buah pita yang
berbentuk trapesium yang masing-masing lebarnya x A seperti diperlihatkan dalam
gambar 3.2 .










Dari gambar 3.2 maka luas pita ke-i yang terletak antara x
i
dan x
i+1
adalah :
)] ( ) ( [
2
1
1 +
+ A =
i i i
x f x f x A
Sehingga untuk n buah pita maka luas seluruhnya menjadi :
)] ( ) ( [
2
1
... )] ( ) ( [
2
1
)] ( ) ( [
2
1
1 3 2 2 1 +
+ A + + + A + + A =
n n
x f x f x x f x f x x f x f x A
karena f(x
1
) = f(a) dan f(x
n+1
) = f(b) maka persamaan tersebut menjadi :
)] ( ) ( 2 ... ) ( 2 ) ( 2 ) ( 2 ) ( [
2
1
4 3 2
b f x f x f x f x f a f x A
n
+ + + + + + A = (3.4)
contoh :
Jika diketahui panas jenis suatu zat seperti tabel berikut ini :
t (
0
C ) c (kkal/kg
0
C)
-100 0,11904
-50 0,12486
0 0,13200
50 0,14046
100 0,15024
150 0,16134
200 0,17376
f(x)
a b
y
x
Gambar 3.2 Metode Trapesium
x A
x
i
x
i+1
f(x
i
) f(x
i+1
)
Pita ke-i
Pita ke-1
Pita ke-n


Avid-06
28
Fisika Komputasi
Tentukan panas yg diperlukan untuk memanaskan 1 kg zat dari 100
0
C - 200
0
C.
Jawab:
a) Metode Persegi Panjang
n x f(x
n
) Luas(L
n
)
1 50 0,11904
2 50 0,12486
3 50 0,13200
4 50 0,14046
5 50 0,15024
6 50 0,16134
Jumlah

a) Metode Trapesium
n x f(x
n
) f(x
n+1
) Luas(L
n
)
1 50 0,11904 0,12486 6,0975
2 50 0,12486 0,13200 6,4215
3 50 0,13200 0,14046 6,8115
4 50 0,14046 0,15024 7,2675
5 50 0,15024 0,16134 7,7895
6 50 0,16134 0,17376 8,3775
Jumlah 42,7650

Jadi panas yang diperlukan adalah 42,7650 kkal.

3.1.3 Program Komputer metode Trapesium
1) Membuat program komputer untuk menghitung integral dengan metode Trapesium.
Dimana fungsi yang akan dicari integralnya adalah :
f(x) = 6 6x
5

Adapun program komputernya adalah seperti berikut ini :

//*******************************************************
//Menghitung integral dengan metode Trapesium
//Compiler : Visual C++
//*******************************************************
#include <iostream.h>


Avid-06
29
Fisika Komputasi
#include <math.h>
#include <iomanip.h>
void main()
{
double eps=1e-5;
double trap[100];
double x,x1,x2,delt,delx,pita,fx;
int i;
cout << " Batas bawah : ";
cin >>x1;
cout << " Batas Atas : ";
cin >>x2;
cout <<endl<<endl;
i=0;
delt=100; //delt = selisih antara 2 hasil integral(iterasi) yg berurutan
while (fabs(delt)>eps) //iterasi selama delt lebih besar dari eps
{
i=i+1;
trap[i]=0;
x=x1;
pita=pow(2,i-1); //2^i-1 (pow = pangkat)
delx=(x2-x1)/pita; //pita= jumlah pita
while (x<x2) //delx=lebar masing-masing pita;
{
//***************************
fx=6-6*pow(x,5); //bentuk pers. 6-6x^5
//***************************
//fx=fabs(x); //contoh : pers. garis y=x
//fx=1/x ; //contoh : pers. flux magnet pada kawat berarus
if (x==x1 || x==x2)
trap[i]=trap[i]+fx;
else
trap[i]=trap[i]+2*fx;
x=x+delx;
}
trap[i]=trap[i]*delx/2;
if (i==1)
{
cout<<setw(10); //10 lokasi digit
cout<<setiosflags(ios::left); //rata kiri
cout<< pita;


Avid-06
30
Fisika Komputasi
cout<<setw(15);
cout<<setiosflags(ios::left);
cout<< trap[i];
}
else
{
delt=trap[i]-trap[i-1];
cout<<setw(10);
cout<<setiosflags(ios::left);
cout<<pita;
cout<<setw(15);
cout<<setiosflags(ios::left);
cout<<trap[i];
cout<<setw(15);
cout<<setiosflags(ios::left);
cout<<delt;
}
cout<<endl;
}
cout <<endl<<endl;
cout<<"Harga Integrasi : "<<trap[i];
cout <<endl<<endl;
}

Coba jalankan program tersebut dengan batas-batas integral x=0 dan x=1. Bagaimanakah
hasilnya.Jika programnya benar anda akan mendapatkan hasil integrasi = 4.99999761
Latihan :
1) Buatlah program komputer untuk menghitung integral dari fungsi :
f(x) = 4
Eksekusi program tersebut dengan memasukkan batas-batas integrasi x = 0 dan x = 5. Jika
programnya benar maka akan didapatkan hasil integrasi = 20. Program ini mengandung
arti yaitu kita mencari luas segi empat dengan panjang 5 dan lebar 4.





2) Coba buat program komputer untuk menghitung integral dari fungsi :
x
f(x)
f(x) = 4 4
0 5


Avid-06
31
Fisika Komputasi
-x
x
f(x) = 1/x
Coba eksekusi program tersebut dengan batas-batas integrasi adalah x=0.01 dan x=0.09.
Jika programnya benar maka anda akan mendapatkan harga integrasi = 2.19723

3. 1. 4 Metode Si mpson
Kesalahan kesalahan yang terjadi pada metode persegi panjang maupun metode
trapesium adalah karena kurva antara x = a dan x = b didekati dengan potongan
potongan garis lurus. Kesalahan ini dapat diperkecil jika kita tidak menggunakan garis
lurus tetapi kurva lain. Salah satu pendekatan yang dipakai adalah parabola atau polinom
orde dua.
Untuk menurunkan rumus integrasinya maka dimisalkan x
i+1
ditempatkan di x = 0
sehingga x
i
berada di x = -x serta x
i+2
berada di x = x.
Jika persamaan parabola yang dipakai adalah :

0 1
2
2
) ( a x a x a x f + + = ..(3.5)
maka luas pasangan pita di bawah parabola :

dx a x a x a A
x
x
i
}
A
A
+ + = ) (
0 1
2
2
....(3.6)

x a x a x a
0
2
1
3
2
2
1
3
1
+ + =

x a x a A + A =
0
3
2
2
3
2
..(3.7)
Nilai fungsi pada ketiga titik tersebut adalah :

0 1
2
2
) ( ) ( ) ( a x a x a x f
i
+ A + A = ...(3.8)

0 1
) ( a x f
i
=
+
(3.9)

0 1
2
2 2
) ( ) ( ) ( a x a x a x f
i
+ A + A =
+
...(3.10)
Dari persamaan (3.8), (3.9), dan (3.10) maka didapatkan koefisien-koefisien :

2
2 1
2
2
) ( ) ( 2 ) (
x
x f x f x f
a
i i i
A
+
=
+ +
..(3.11)

x
x f x f
a
i i
A

=
+
2
) ( ) (
2
1
.(3.12)
) (
1 0 +
=
i
x f a ..(3.13)


Avid-06
32
Fisika Komputasi
Sehingga persamaan (3.7) menjadi :
)] ( ) ( 4 ( [
3
1
2 1 + +
+ + A =
i i i i
x f x f x f x A (3.14)
Maka luas semua pasangan pita adalah :
)] ( ) ( 4 ( [
3
1
3 2 1
x f x f x f x A + + A =
... )] ( ) ( 4 ( [
3
1
5 4 3
+ + + A + x f x f x f x
)] ( ) ( 4 ( [
3
1
1 2 n n n
x f x f x f x + + A +

....(3.15)
atau
... ) ( 4 ) ( 4 ) ( 4 ) ( [
3
1
8 6 2 1
+ + + + A = x f x f x f x f x A
)] ( ... ) ( 2 ) ( 2 ) ( 2
7 5 3 n
x f x f x f x f + + + + + (3.16)
contoh :
1)Jika diketahui panas jenis suatu zat seperti tabel berikut ini :
t (
0
C ) c (kkal/kg
0
C)
-100 0,11904
-50 0,12486
0 0,13200
50 0,14046
100 0,15024
150 0,16134
200 0,17376
Tentukan panas yang diperlukan untuk memanaskan 1 kg zat dari 100
0
C sampai
200
0
C.
Jawab:
n x f(x
n
) f(x
n+1
) f(x
n+2
) Luas(L
n
)
1 50 0,11904 0,12486 0,13200 12,5080
2 50 0,13200 0,14046 0,15024 14,0680
3 50 0,15024 0,16134 0,17376 16,1560
Jumlah 42,7320
Jadi panas yang diperlukan adalah 42,7320 kkal
2)Suatu kawat yang sangat panjang dialiri arus listrik 30 A. Hitung besar flux
magnet yang menembus suatu persegi panjang yang sisi panjangnya sejajar dan


Avid-06
33
Fisika Komputasi
8 cm
30 cm
r
dr
pita = dA = Ldr
1 cm
sisi pendeknya tegak lurus kawat. Panjang persegi panjang 30 cm, lebar 8 cm.
Jarak salah satu sisi panjang persegi panjang ke kawat adalah 1 cm (
0
= 4 .
10
-7
weber/amp.m)






Jawab :
Besar flux magnet :
dA B d . = u
Ambil suatu pita sejajar dengan kawat berarus panjang L = 30 cm, dan lebarnya
dr. Maka luas pita dA = L.dr. Sehingga flux magnet yang menembus pita ini adalah :

r
i
B
t

2
0
=
Maka

r
dr iL
dr L
r
i
d
t

2 2
0
0
= = u

}
= u
09 , 0
01 , 0
1 0
2
dr
iL
r
t


3.1.5 Program komputer metode Simpson
1) Membuat program komputer untuk menghitung integral dengan metode Simpson.
Dimana fungsi yang akan dicari integralnya adalah :
f(x) = 6 6x
5

Adapun program komputernya adalah seperti berikut ini :
//*******************************************************
//Menghitung integral dengan metode Simpson
//Compiler : Visual C++
//*******************************************************
#include <iostream.h>
#include <math.h>
#include <iomanip.h>
void main()
{
double eps=1e-5;
L


Avid-06
34
Fisika Komputasi
double simp[100];
double x,x1,x2,delt,delx,pita,fx;
int i,j;
cout << " Batas bawah : ";
cin >>x1;
cout << " Batas Atas : ";
cin >>x2;
cout <<endl<<endl;
i=0;
delt=100; //delt = selisih antara 2 hasil integral(iterasi) yg berurutan
while (fabs(delt)>eps) //iterasi selama delt lebih besar dari eps
{
i=i+1;
j=0;
simp[i]=0;
x=x1;
pita=2*pow(2,i-1); //2^i-1 (pow = pangkat)
delx=(x2-x1)/pita; //pita= jumlah pita
while (x<x2) //delx=lebar masing-masing pita;
{
//***************************
fx=6-6*pow(x,5); //contoh : bentuk pers. 6-6x^5
//***************************
//fx=fabs(x); //contoh : pers. garis y=x
//fx=1/x ; //contoh : pers. flux magnet pada kawat berarus
j=j+1;
if (x==x1 || x==x2)
simp[i]=simp[i]+fx;
else
{
if (x>x1 && x<x2 && j % 2 ==0) //suku genap
simp[i]=simp[i]+4*fx;
if (x>x1 && x<x2 && j % 2 ==1) //suku ganjil
simp[i]=simp[i]+2*fx;
}
x=x+delx;
}
simp[i]=simp[i]*delx/3;
if (i==1)
{
cout<<setw(10); //10 lokasi digit


Avid-06
35
Fisika Komputasi
cout<<setiosflags(ios::left); //rata kiri
cout<< pita;
cout<<setw(15);
cout<<setiosflags(ios::left);
cout<< simp[i];
}
else
{
delt=simp[i]-simp[i-1];
cout<<setw(10);
cout<<setiosflags(ios::left);
cout<<pita;
cout<<setw(15);
cout<<setiosflags(ios::left);
cout<<simp[i];
cout<<setw(15);
cout<<setiosflags(ios::left);
cout<<delt;
}
cout<<endl;
}
cout <<endl<<endl;
cout<<"Harga Integrasi : "<<simp[i];
cout <<endl<<endl;
}

Latihan :
1) Coba buat program yang sama seperti pada latihan untuk metode Trapesium.
Bandingkan hasilnya.

3. 2 DIFERENSIAL
Diferensial atau sering disebut turunan dapat dihitung dengan memakai uraian
deret Taylor. Jika uraian deret Taylor di sekitar x dinyatakan dengan f(x+h) dan f(x-h).
Dimana masing-masing dinyatakan dengan persamaan :
... ) (
6
1
) (
2
1
) ( ) ( ) (
' ' ' 3 ' ' 2 '
+ + + + = + x f h x f h x hf x f h x f ..(3.17)
... ) (
6
1
) (
2
1
) ( ) ( ) (
' ' ' 3 ' ' 2 '
+ + = x f h x f h x hf x f h x f .......(3.18)
3. 2. 1 Turunan Pertama


Avid-06
36
Fisika Komputasi
Jika kita mengambil selisih antara kedua persamaan tersebut (3.17 dan 3.18) maka
akan didapatkan :
... ) (
6
1
2
) ( ) (
) (
' ' ' 2 '

+
= x f h
h
h x f h x f
x f ..........(3.19)

Dari persamaan (3.19) jika kita mengambil nilai h yang sangat kecil maka suku-suku
dengan h pangkat 2 atau lebih bisa diabaikan. Sehingga akan didapatkan persamaan
Turunan Pertama dari suatu fungsi f(x) yaitu :


h
h x f h x f
x f
2
) ( ) (
) (
'
+
= ..(3.20)
3. 2. 2 Turunan Kedua
Untuk mendapatkan Turunan Kedua dari fungsi f(x) maka kita menjumlahkan
kedua persamaan f(x+h) dan f(x-h) dalam persamaan (3.17) dan 3.18). Sehingga
didapatkan persamaan yaitu :

... ) (
12
1 ) ( ) ( 2 ) (
) (
2
2
' '

+ +
= x f h
h
h x f x f h x f
x f
IV
....(3.21)

Bila h sangat kecil maka suku dengan h pangkat 2 atau lebih bisa diabaikan. Sehingga
akan didapatkan persamaan Turunan Kedua dari f(x) yaitu :


2
' '
) ( ) ( 2 ) (
) (
h
h x f x f h x f
x f
+ +
= (3.22)
Kedua metode untuk mencari turunan diatas disebut dengan metode Beda Sentral
(central difference).
Contoh :
1.Tentukan turunan pertama dari fungsi y = x
2
saat x = 1
jawab :

h
h x f h x f
x f
2
) ( ) (
) (
'
+
=
a)Secara analitik
2 2
1
= =
=
x
dx
dy
x

b)Secara Numerik (Metode Beda Sentral)


Avid-06
37
Fisika Komputasi
h = 1 ; h
n+1
= h
n
/ 2
n

h
n
f(x+h) f(x-h) f
1
(x) =f(x+h)-f(x-h)/2h
1 1,00 4,0000 0,0000 2,00
2 0,50 2,2500 0,2500 2,00
3 0,25 1,5625 0,5625 2,00



2.Tentukan turunan pertama dan kedua dari fungsi y = x
2
+ x saat x = 1
Jawab :
Turunan Pertama :
a)Secara analitik
3 1 2
1
= + =
=
x
dx
dy
x

b)Secara Numerik (Metode Beda Sentral)
h = 1 ; h
n+1
= h
n
/ 2
n

h
n
f(x+h) f(x-h) f
1
(x) =f(x+h)-f(x-h)/2h
1 1,00 6,0000 0,0000 3,00
2 0,50 3,7500 0,7500 3,00



Turunan Kedua :
a)Secara analitik
2
1
=
= x
dx
dy

b)Secara Numerik (Metode Beda Sentral)
h = 1 ; h
n+1
= h
n
/ 2
n

h
n
f(x) f(x+h) f(x-h) f
11
(x)
1 1,00 2 6,0000 0,0000 2,00
2 0,50 2 3,7500 0,7500 2,00



3. 2. 3 Program Komputer
1)Program komputer untuk menghitung Turunan Pertama dari fungsi. Dimana fungsi
yang dicari turunannya adalah :


Avid-06
38
Fisika Komputasi
f(x) = x
2
5x
Adapun implementasi program komputernya adalah seperti berikut ini :

//***********************************************************************************
//Menghitung Turunan pertama suatu fungsi dengan metode beda sentral
//compiler : Visual C++
//***********************************************************************************
#include <iostream.h>
#include <math.h>
#include <iomanip.h>
void main()
{
double eps=1e-5;
double z[10];
double fx,del,dx,zz,x,y,h;
int i,n;

cout << " Masukkan nilai x : ";
cin >>y;
cout <<endl<<endl;
h=1;
n=0;
zz=0;
del=10;

while (fabs(del)>=eps) //iterasi selama del lebih besar dari eps
{
n+=1;
for (i=1;i<=2;i++)
{
if (i==1)
x=y+h;
else
x=y-h;

//fx=9.8*68.1*(1-exp(-12.5*x/68.1));
//fx=fx/12.5;
//*****************
fx=x*x-5*x; //fungsi yang dicari turunannya : x^2 - 5x
//*****************
z[i]=fx;
}
dx=(z[1]-z[2])/(2*h);
del=zz-dx;
cout.width(15);
cout<<h;
cout.width(15);
cout<<dx;
cout.width(15);
cout<<del;
cout<<endl;
zz=dx;
h=h/10;
}
cout<<endl;
cout<<"Jumlah iterasi : "<<n<<endl;
cout<<"Turunan pertama dari f(x) : "<<dx;
cout<<endl;
}


Avid-06
39
Fisika Komputasi
Coba jalankan (eksekusi) program tersebut. Jika anda masukkan nilai x =1 maka akan
didapatkan hasil turunan pertama adalah 3. Cobalah untuk memasukkan nilai x yang lain
dan lihat hasilnya. Bandingkan dengan perhitungan secara manual.
2) Membuat program komputer untuk menghitung Turunan kedua dari fungsi. Dimana
fungsi yang dicari turunannya adalah :
f(x) = x
3
5x
Adapun implementasi program komputernya adalah seperti berikut ini :
//******************************************************************
//Menghitung Turunan pertama suatu fungsi dengan metode beda sentral
//compiler : Visual C++
//******************************************************************
#include <iostream.h>
#include <math.h>
#include <iomanip.h>
void main()
{
double eps=1e-5;
double z[10];
double fx,del,dx,zz,x,y,h;
int i,n;
cout << " Masukkan nilai x : ";
cin >>y;
cout <<endl<<endl;
h=1;
n=0;
zz=0;
del=10;
while (fabs(del)>=eps) //iterasi selama del lebih besar dari eps
{
n+=1;
for (i=1;i<=3;i++)
{
switch(i)
{
case (1):
{
x=y+h;
break;
}
case(2):
{
x=y;
break;
}
case(3):
{
x=y-h;
break;
}
}

//fx=9.8*68.1*(1-exp(-12.5*x/68.1));
//fx=fx/12.5;
//*****************
fx=x*x*x-5*x; //fungsi yang dicari turunannya : x^3 - 5x
//*****************


Avid-06
40
Fisika Komputasi
z[i]=fx;
}
dx=(z[1]-2*z[2]+z[3])/(h*h);
del=zz-dx;
cout.width(15);
cout<<h;
cout.width(15);
cout<<dx;
cout.width(15);
cout<<del;
cout<<endl;
zz=dx;
h=h/10;
}
cout<<endl;
cout<<"Jumlah iterasi = "<<n<<endl;
cout<<"Turunan kedua dari f(x) = "<<dx;
cout<<endl;
}
Coba jalankan (eksekusi) program tersebut. Jika anda masukkan nilai x =2 maka akan
didapatkan hasil turunan pertama adalah 12. Cobalah untuk memasukkan nilai x yang lain
dan lihat hasilnya. Dan bandingkan dengan perhitungan secara manual.
Latihan :
1) Coba buat program komputer untuk menentukan turunan pertama dari suatu masalah
penerjun payung Dimana diketahui persamaan laju penerjun payung setelah payungnya
mengembang adalah :
] 1 [ ) (
/ m ct
e
c
gm
t v

=
dimana g = 9.8 ms
-2
, massa penerjun m = 68.1 kg, hambatan oleh udara c = 12.5 kg.s
-1
.
Ditanyakan berapa percepatan penerjun payung pada saat t = 10 s.
2) Coba buat program komputer untuk menentukan turunan kedua dari suatu masalah
penerjun payung Dimana diketahui persamaan laju penerjun payung setelah payungnya
mengembang adalah :
] 1 [ ) (
/ m ct
e
c
gm
t v

=
dimana g = 9.8 ms
-2
, massa penerjun m = 68.1 kg, hambatan oleh udara c = 12.5 kg.s
-1
.
Ditanyakan berapa percepatan penerjun payung pada saat t = 10 s.








Avid-06
41
Fisika Komputasi
ME EN NY YE EL LE ES SA AI IK KA AN N P PE ER RS SA AM MA AA AN N D DI IF FE ER RE EN NS SI IA AL L B BI IA AS SA A
4.1 Solusi Persamaan Diferensial dengan syarat awal
Misalkan kita memiliki persamaan diferensial seperti di bawah ini :
) 1 . 4 ......( .......... .......... .......... .......... .......... .......... .......... 0
2
2
= + + km
dt
dx
r
dt
x d
m
secara analisis maka solusi dari persamaan tersebut adalah :
km r untuk t Ae x
t
4 , ) sin(
0
< + =

u e
o

km r untuk e t B B x
t
4 , ) (
2 1
= + =
|

km r untuk e C e C x
t t
4 ,
2 1
2 1
> + =


Sedangkan secara numerik kita tidak akan mendapatkan solusi seperti diatas, tetapi kita
akan mencari solusi pada suatu waktu tertentu. Sehingga diperlukan suatu syarat awal
agar solusi dapat dicari yaitu misalkan pada waktu mula-mula solusi melalui suatu titik
tertentu. Syarat semacam ini diperlukan karena solusi persamaan diferensial dapat
berbeda-beda karena adanya suatu konstanta. Andaikan kita mempunyai persamaan
diferensial :
5 4 ) (
'
+ = x x f
solusi secara analisis matematik dari persamaan ini adalah :
5 4
) (
+ = x
dx
x df


}
+ + = + = C x x dx x x f 5 2 5 4 ) (
2

dapat dilihat bahwa solusinya tidak hanya satu tetapi tergantung dari nilai C. Sedangkan
solusi secara numerik kita menentukan suatu syarat awal terhadap fungsi tersebut
misalnya bahwa solusi persamaan tersebut melalui titik (1,1). Sehingga akan didapatkan
hanya sebuah solusi yaitu :
6 5 2 ) (
2
+ = x x x f
misal kita masukkan nilai x = 2 maka solusi dari persamaan diferensial tersebut adalah :
12 ) 2 ( = f
Jadi dapat disimpulkan bahwa solusi dari persamaan diferensial 5 4 ) (
'
+ = x x f di x = 2
dan syarat awal (1,1) adalah 12. Ada beberapa metode yang dapat diterapkan untuk
mencari solusi dari persamaan diferensial yaitu : metode Euler, Runge-Kutta dll.

IV


Avid-06
42
Fisika Komputasi
4. 2 Metode Eul er
Untuk mencari solusi persamaan diferensial biasa dengan syarat awal dapat
dilakukan dengan metode Euler. Metode Euler terdiri dari 2 metode yaitu : orde 1 dan
orde 2. Berikut ini kita akan membahasa satu persatu dari ke dua metode tersebut.
4. 2. 1 Metode Euler orde 1
Metode ini diturunkan dari uraian deret Taylor disekitar x dinyatakan dengan
f(x+h) yaitu :
... ) ( ' ' '
3
1
) (
2
1
) ( ) ( ) (
3 2 ' ' '
+ + + + = + h x f h x f h x f x f h x f
Jika diambil sampai suku h pangkat 1 maka persamaan tersebut menjadi :
h x f x f h x f ) ( ) ( ) (
'
+ = +
dimana dalam Persamaan Diferensial Biasa ) (
'
x f dapat ditulis menjadi :
) , ( ) (
'
y x f x f =
sehingga persamaan diatas menjadi :
h y x f x f h x f ) , ( ) ( ) ( + = +
persamaan ini bisa ditulis dalam bentuk iterasi :
) 2 . 4 ........( .......... .......... .......... .......... .......... .......... .......... ) , (
1
h y x f y y
i i
+ =
+

persamaan ini sering disebut dengan iterasi Euler orde 1. Jika kita menentukan syarat
awal adalah titik (x
0
,y
0
) dan kita menginginkan solusi persamaan diferensial di titik x
p

maka kita harus membagi selang antara x
0
dan x
p
menjadi n buah pita yang masing-
masing lebarnya h sehingga diperoleh titik-titik x
0
, x
1
, x
2
, x
p
.
Dari syarat awal yaitu titik (x
0
,y
0
) maka dengan rumus iterasi Euler kita dapat
menentukan y
1
dengan absis x
1
= x
0
+ h. Selanjutnya dari titik (x
1
,y
1
) kita dapat
menentukan y
2
dengan absis x
2
= x
1
+ h. Demikian seterusnya sampai didapatkan y
p
yang
absisnya adalah x
p
. Dengan demikian nilai y
p
merupakan solusi dari persamaan diferensial
pada titik x
p.
Contoh :
Hitunglah solusi persamaan diferensial berikut pada x = 2:
5 4 + = x
dx
dy
,dimana syarat awal (x
0
,y
0
) = (1,1)
Jawab :
Jika kita membagi antara x=1 dan x=2 menjadi 10 pita maka lebar masing-masing
pita (h) adalah :


Avid-06
43
Fisika Komputasi
1 . 0
10
1 2
1 2
=

=
pita
x x
h
h y x f y y
i i
) , (
1
+ =
+

9 . 1 9 . 0 1 1 , 0 ). 5 1 . 4 ( 1 ). 5 . 4 (
0 0 1
= + = + + = + + = h x y y
84 . 2 94 . 0 9 . 1 1 , 0 ). 5 ) 1 . 1 .( 4 ( 9 . 1 ). 5 . 4 (
1 1 2
= + = + + = + + = h x y y
hasil selengkapnya dapat dilihat dalam tabel berikut ini.
i x
i
y
i
f(x,y) y
i+1
0 1 1 9 1.9
1 1.1 1.9 9.4 2.84
2 1.2 2.84 9.8 3.82
3 1.3 3.82 10.2 4.84
4 1.4 4.84 10.6 5.9
5 1.5 5.9 11.0 7.00
6 1.6 7.00 11.4 8.14
7 1.7 8.14 11.8 9.32
8 1.8 9.32 12.2 10.54
9 1.9 10.54 12.6 11.8
10 2.0 11.8

Jadi solusi persamaan difrensial pada x = 2 adalah 11.8
Contoh :
Sebuah benda bergerak lurus sepanjang sumbu x. Laju benda V(t) setiap setengah
detik adalah :
t 0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0
V(t) 14.3 26.4 37.3 47.3 56.8 65.8 74.4 82.6 90.4 97.7

Berapa panjang jalan x yang ditempuh sampai dengan detik ke 5. Jika mula-mula (t
0
)
benda berada pada posisi x = 3.7
Jawab :
) (t v
dt
dx
=
Iterasi Euler orde 1 :
5 . 0 ; ) (
1
= + =
+
h h t v x x
i i
detik


Avid-06
44
Fisika Komputasi
Awal t
0
= 0.5, x
0
= 3.7
Saat i = 0 , h t v x x ) (
0 1
+ =
85 . 10 5 . 7 7 . 3 ) 5 . 0 ).( 3 . 14 ( 7 . 3
1
= + = + = x
05 . 24 20 . 13 85 . 10 ) 5 . 0 ).( 4 . 26 ( 85 . 10
2
= + = + = x
hasil selanjutnya dapat dilihat dalam tabel di bawah ini :
i t
i
x
i
v(t) x
i+1
0 0.5 3.7 14.3 10.85
1 1.0 10.85 26.4 24.05
2 1.5 24.05 37.3 42.70
3 2.0 42.70 47.3 66.35
4 2.5 66.35 56.8 94.75
5 3.0 94.75 65.8 127.65
6 3.5 127.5 74.4 164.85
7 4.0 164.85 82.6 206.15
8 4.5 206.15 90.4 251.35
9 5.0 251.35 97.7

Sehingga jarak yang ditempuh sampai dengan detik ke 5 adalah 251.35 m
Latihan :
1.Tentukan solusi persamaan diferensial :
y
dx
dy
=
pada saat x = 2 dan syarat awal adalah (0,1)
2.Tentukan solusi persamaan diferensial :
f (x) = x
2
+ 2
saat x = 3 dan syarat awal (1,1)
4.2.2 Program Komputer metode Euler orde 1
1) Membuat program komputer untuk mencari solusi persamaan diferensial biasa dengan
iterasi Euler orde-1. Dimana bentuk persamaan diferensial yang dicari solusinya adalah :
f

(x) = 4x+5
Adapun implementasi program komputernya adalah seperti berikut ini :
//****************************************************************************
//Menghitung Persamaan Diferensial dengan metode Euler orde satu
//compiler : Visual C++
//****************************************************************************
#include <iostream.h>


Avid-06
45
Fisika Komputasi
#include <math.h>
#include <iomanip.h>
void main()
{
double eps=1e-3;
double x,x1,x2,y,y1,y2,fx,delx,delt,pita;
int n;
cout << " Masukkan titik awal (xo,yo) : "; //masukkan nilai xo <spasi> yo
cin >>x1>>y1;
cout << " Masukkan titik akhir (x) : ";
cin >>x2;
cout <<endl<<endl;
n=0;
delt=100;
while (fabs(delt)>eps) //iterasi selama delt lebih besar dari eps
{
n+=1;
pita=pow(2,n); //2^n
delx=(x2-x1)/pita;
x=x1;
y=y1;
while (x<x2)
{
//*************************
//fx=y;
fx=4*x+5;
//*************************
y=y+fx*delx; //iterasi Euler orde-1
x=x+delx;
}
if (n==1)
{
cout.width(15);
cout<<pita;
cout.width(15);
cout<<y;
}
else
{
delt=y-y2;
cout.width(15);
cout<<pita;
cout.width(15);
cout<<y;
cout.width(15);
cout<<delt;
}
cout<<endl;
y2=y;
}
cout<<"Nilai Fungsi di "<<x2<<" adalah : "<<y;
cout<<endl;
}

Coba jalankan program tersebut dan berikan masukan syarat awal (x
0
,y
0
) = (1 1), serta
berikan masukan untuk nilai x = 2. Jika programnya berjalan dengan benar maka anda
akan mendapatkan output berupa nilai fungsi di x = 2 adalah 11.999.
4. 2. 3 Metode Euler orde 2


Avid-06
46
Fisika Komputasi
Dari uraian deret Taylor untuk f(x+h), jika kita menyertakan suku-suku dengan h
pangkat 2 maka akan didapatkan persamaan :
) 3 . 4 .( .......... .......... .......... .......... .......... ) ( ' '
2
1
) ( ' ) ( ) (
2
h x f h x f x f h x f + + = +
dimana
) , ( ) ( ' y x f x f =
) , ( ) , ( ) , ( ) , ( ' ) ( ' ' y x f y x f y x f y x f x f
y x
+ = =
persamaan (4.3) dapat dinyatakan dalam bentuk iterasi :
) 4 . 4 .......( .......... .......... .......... .......... .......... .......... ) , ( '
2
1
) , (
2
1
h y x f h y x f y y
i i
+ + =
+

Persamaan ini disebut sebagai iterasi Euler orde 2.
4. 2. 4 Program komputer Metode Eul er orde 2
Program komputer untuk mencari solusi persamaan diferensial biasa dengan
iterasi Euler orde-2, dimana bentuk persamaan diferensial yang dicari solusinya adalah :
f

(x) = 4x+5
Adapun implementasi program komputernya adalah seperti berikut ini :
//***************************************************************************
//Menghitung Persamaan Difrensial dengan metode Euler orde dua
//compiler : Visual C++
//***************************************************************************
#include <iostream.h>
#include <math.h>
#include <iomanip.h>
void main()
{
double eps=1e-3;
double x,x1,x2,y,y1,y2,fx,dx,delx,delt,pita;
int n;

cout << " Masukkan titik awal (xo,yo) : "; //masukkan nilai xo <spasi> yo
cin >>x1>>y1;
cout << " Masukkan titik akhir (x) : ";
cin >>x2;
cout <<endl<<endl;
n=0;
delt=100;

while (fabs(delt)>eps) //iterasi selama delt lebih besar dari eps
{
n+=1;
pita=pow(2,n); //2^n
delx=(x2-x1)/pita;
x=x1;
y=y1;
while (x<x2)
{ //************************
//fx=y; //bentuk fungsi
//dx=y; //turunan
fx=4*x+5;


Avid-06
47
Fisika Komputasi
dx=4;
//*************************
y=y+fx*delx+dx*pow(delx,2)/2; //iterasi Euler orde 2
x=x+delx;
}
if (n==1)
{
cout.width(15);
cout<<pita;
cout.width(15);
cout<<y;
}
else
{
delt=y-y2;
cout.width(15);
cout<<pita;
cout.width(15);
cout<<y;
cout.width(15);
cout<<delt;
}
cout<<endl;
y2=y;
}
cout<<"Nilai Fungsi di x= "<<x2<<" adalah : "<<y;
cout<<endl;
}
Coba jalankan program tersebut dan berikan masukan syarat awal (x
0
,y
0
) = (1 1), serta
berikan masukan untuk nilai x = 2. Jika programnya berjalan dengan benar maka anda
akan mendapatkan output berupa nilai fungsi di x = 2 adalah 11.9993.

4. 3 Metode Runge-Kutta
Persamaan umum iterasi Runge-Kutta adalah :
) 5 . 4 ........( .......... .......... .......... .......... .......... .......... .......... )......... , , (
1
h y x f y y
n n n n
+ =
+

dimana

m m n n
k a k a k a h y x f + + + = ... ) , , (
2 2 1 1


n n
x x h =
+1

dengan
) , (
1 n n
y x hf k =

1 11 1 2
, ( k q y h p x hf k
n n
+ + =
) , (
2 22 1 21 2 3
k q k q y h p x hf k
n n
+ + + =
... ... ...

1 1 , 1 2 2 , 1 1 1 , 1 1
... , (

+ + + + + =
m m m m m n m n m
k q k q k q y h p x hf k
4. 3. 1 Runge-Kutta orde 1


Avid-06
48
Fisika Komputasi
Jika diambil m = 1 maka akan menghasilkan iterasi Runge-Kutta orde 1 yaitu :
) 6 . 4 ........( .......... .......... .......... .......... .......... .......... .......... .......... ..........
1 1 1
k a y y
n n
+ =
+

) 7 . 4 .....( .......... .......... .......... .......... .......... .......... .......... )......... , (
1 1 n n n n
y x hf a y y + =
+
karena
1 1
) , , ( k a h y x f
n n
= dan ) , (
1 n n
y x hf k = . Dengan mengambil 1
1
= a maka persamaan
(4.7) sama dengan persamaan iterasi Euler orde-1 yaitu :
) , (
1 n n n n
y x hf y y + =
+

4. 3. 2 Runge-Kutta orde 2
Jika diambil m = 2 maka akan menghasilkan iterasi Runge-Kutta orde 2 yaitu :
) 8 . 4 .......( .......... .......... .......... .......... .......... .......... .......... ..........
2 2 1 1 1
k a k a y y
n n
+ + =
+
dimana
) , (
1 n n
y x hf k =
) , (
1 11 1 2
k q y h p x hf k
n n
+ + =
jadi dalam hal ini kita perlu menentukan nilai-nilai dari
11 1 2 1
dan , , , q p a a . Untuk
mendapatkan nilai dari konstanta-konstanta tersebut maka pertama-tama kita lihat uraian
deret Taylor sampai orde 2 yaitu :
) 8 . 4 .( .......... .......... .......... .......... .......... ) , ( ' '
2
1
) ( ' ) ( ) (
2
h y x f h x f x f h x f + + = +
dimana
) , ( ) ( ' y x f x f =
) , ( ) , ( ) , ( ) , ( ' ) ( ' ' y x f y x f y x f y x f x f
y x
+ = =
sehingga persamaan (4.7) menjadi :
| | ) 9 . 4 ( .......... .......... ) , ( ) , ( ) , (
2
1
) , ( ) ( ) (
2
h y x f y x f y x f h y x f x f h x f
y x
+ + + = +
Jika dinyatakan dengan rumus iterasi maka persamaan (4.8) menjadi :
| | ) 10 . 4 ..( .......... .......... ) , ( ) , ( ) , (
2
1
) , (
2
1
h y x f y x f y x f h y x f y y
n n n n y n n x n n n n
+ + + =
+
untuk k
2
jika diuraikan dalam deret Taylor akan menjadi :
| |h k q y x f h p y x f y x f k
n n y n n x n n 1 11 1 2
) , ( ) , ( ) , ( + + =
sehingga rumus iterasi (persamaan (4.10)) menjadi :
+ + + + =
+
2
1 2 2 1 1
) , ( ) , ( ) , ( h p a y x f h a y x f h a y x f y y
n n x n n n n n n


2
11 2
) , ( ) , ( h q a y x f y x f
n n n n y

| | | ) , ( ) , ( ) , ( ) , ( ) , (
1 2 2 1 n n n n y n n x n n n n n
y x f y x f p a y x f h a y x f a y x f y + + + =
| ) 11 . 4 .......( .......... .......... .......... .......... .......... .......... .......... .......... ..........
2
11 2
h q a



Avid-06
49
Fisika Komputasi
dari persamaan (4.10) dan (4.11) didapatkan :
) 12 . 4 ....( .......... .......... .......... .......... .......... .......... .......... .......... .......... .......... 1
2 1
= + a a
) 13 . 4 ......( .......... .......... .......... .......... .......... .......... .......... .......... .......... ..........
2
1
1 2
= p a
) 14 . 4 .....( .......... .......... .......... .......... .......... .......... .......... .......... .......... ..........
2
1
11 2
= q a
a) Metode Heun
Dalam metode ini diambil nilai dari konstanta :
2
1
2 1
= = a a
1
11 1
= = q p
Sehingga persamaan iterasi Runge-Kutta orde 2 menjadi :
) 15 . 4 .....( .......... .......... .......... .......... .......... .......... .......... ..........
2 2
1
1 2
1
1
k k y y
n n
+ + =
+
dimana
) , (
1 n n
y x hf k =
) , (
1 2
k y h x hf k
n n
+ + =
b) Metode Raltson
Dalam metode ini diambil nilai dari konstanta :
3
1
1
= a
3
2
2
= a
4
3
11 1
= = q p
Sehingga persamaan iterasi Runge-Kutta orde 2 menjadi :
) 16 . 4 .....( .......... .......... .......... .......... .......... .......... .......... )......... 2 (
2 1 3
1
1
k k y y
n n
+ + =
+
dimana
) , (
1 n n
y x hf k =
) , (
1 4
3
4
3
2
k y h x hf k
n n
+ + =
c) Metode Poligon
Dalam metode ini diambil nilai dari konstanta :
0
1
= a 1
2
= a
2
1
11 1
= = q p
Sehingga persamaan iterasi Runge-Kutta orde 2 menjadi :
) 17 . 4 .........( .......... .......... .......... .......... .......... .......... .......... .......... ..........
2 1
k y y
n n
+ =
+
dimana
) , (
1 n n
y x hf k =
) , (
1 2
1
2
1
2
k y h x hf k
n n
+ + =
Contoh :


Avid-06
50
Fisika Komputasi
Hitunglah solusi persamaan difrensial berikut pada x = 2 dengan metode Heun:
5 4 + = x
dx
dy

dimana syarat awal (x
0
,y
0
) = (1,1)
Jawab :
Jika kita membagi antara x=1 dan x=2 menjadi 10 pita maka lebar masing-masing
pita (h) adalah :
1 . 0
10
1 2
1 2
=

=
pita
x x
h
2 2
1
1 2
1
1
k k y y
n n
+ + =
+

dimana
) , (
1 n n
y x hf k =
) , (
1 2
k y h x hf k
n n
+ + =
sehingga :

2 2
1
1 2
1
0 1
k k y y + + =
9 . 0 ) 5 1 . 4 ( 1 . 0 ) 5 . 4 .( 1 . 0
0 1
= + = + = x k
94 . 0 ) 4 . 9 ( 1 . 0 ) 5 ) 1 . 0 1 .( 4 ( 1 . 0 ) 5 ) .( 4 .( 1 . 0
0 2
= = + + = + + = h x k
jadi
) 94 . 0 ( ) 9 . 0 ( 1
2
1
2
1
2 2
1
1 2
1
0 1
+ + = + + = k k y y
92 . 1 47 . 0 45 . 0 1
1
= + + = y
hasil selengkapnya dapat dilihat dalam tabel berikut ini.
i x
i
y
i
k
1
k
2
y
i+1
0 1 1 0.9 0.94 1.92
1 1.1 1.92 0.94 0.98 2.88
2 1.2 2.88 0.98 1.02 3.88
3 1.3 3.88 1.02 1.06 4.92
4 1.4 4.92 1.06 1.10 6.00
5 1.5 6.00 1.10 1.14 7.12
6 1.6 7.12 1.14 1.18 8.28
7 1.7 8.28 1.18 1.22 9.48
8 1.8 9.48 1.22 1.26 10.72
9 1.9 10.72 1.26 1.30 12.00



Avid-06
51
Fisika Komputasi
Jadi solusi persamaan difrensial pada x = 2 adalah 12.00
4. 3. 3 Program komputer Metode Runge Kutta orde 2 - Heun
1) Membuat program komputer untuk mencari solusi persamaan diferensial biasa dengan
iterasi Runge-Kutta orde 2 berdasarkan metode Heun. Dimana bentuk persamaan
diferensial yang dicari solusinya adalah :
f

(x) = 4x+5
Adapun implementasi program komputernya adalah seperti berikut ini :
//********************************************************************************************
//Menghitung Persamaan Diferensial dengan metode Runge-kutta orde dua-Heun
//compiler : Visual C++
//********************************************************************************************
#include <iostream.h>
#include <math.h>
#include <iomanip.h>
void main()
{
double eps=1e-3;
double k[4];
double xx,x,x1,x2,yy,y,y1,y2,fx,delx,delt,pita;
int i,n;

cout << " Masukkan titik awal (xo,yo) : "; //masukkan nilai xo <spasi> yo
cin >>x1>>y1;
cout << " Masukkan titik akhir (x) : ";
cin >>x2;
cout <<endl<<endl;
n=0;
delt=100;

while (fabs(delt)>eps) //iterasi selama delt lebih besar dari eps
{
n+=1;
pita=pow(2,n); //2^n
delx=(x2-x1)/pita;
xx=x1;
yy=y1;
while (xx<x2)
{
x=xx;
y=yy;
for (i=1;i<=2;i++)
{
//************************
//fx=y; //bentuk fungsi

fx=4*x+5;

//fx=1-exp(-12.5*x/68.1);
//fx=fx*9.8*68.1/12.5;
//*************************
k[i]=delx*fx;
if (i==1)
{
x=xx+delx;
y=yy+k[i];
}


Avid-06
52
Fisika Komputasi
} //for
xx=xx+delx;
yy=yy+(k[1]+k[2])/2;
} //while
if (n==1)
{
cout.width(15);
cout<<pita;
cout.width(15);
cout<<yy;
}
else
{
delt=yy-y2;
cout.width(15);
cout<<pita;
cout.width(15);
cout<<yy;
cout.width(15);
cout<<delt;
}
cout<<endl;
y2=yy;
} //while
cout<<"Nilai Fungsi di x= "<<x2<<" adalah : "<<yy;
cout <<endl;
cout<<"Banyaknya iterasi = "<<n;
cout<<endl;
}
Coba jalankan program tersebut dan berikan masukan syarat awal (x
0
,y
0
) = (1 1), serta
berikan masukan untuk nilai x = 2. Jika programnya berjalan dengan benar maka anda
akan mendapatkan output berupa nilai fungsi di x = 2 adalah 12.

2) Membuat program komputer untuk mencari solusi persamaan diferensial biasa dengan
iterasi Runge-Kutta orde 2 berdasarkan metode Raltson. Dimana bentuk persamaan
diferensial yang dicari solusinya adalah :
f

(x) = 4x+5
Adapun implementasi program komputernya adalah seperti berikut ini :
//**********************************************************************************************
//Menghitung Persamaan Diferensial dengan metode Runge-kutta orde dua-Raltson
//compiler : Visual C++
//**********************************************************************************************
#include <iostream.h>
#include <math.h>
#include <iomanip.h>
void main()
{
double eps=1e-3;
double k[4];
double xx,x,x1,x2,yy,y,y1,y2,fx,delx,delt,pita;
int i,n;

cout << " Masukkan titik awal (xo,yo) : "; //masukkan nilai xo <spasi> yo
cin >>x1>>y1;


Avid-06
53
Fisika Komputasi
cout << " Masukkan titik akhir (x) : ";
cin >>x2;
cout <<endl<<endl;
n=0;
delt=100;
while (fabs(delt)>eps) //iterasi selama delt lebih besar dari eps
{
n+=1;
pita=pow(2,n); //2^n
delx=(x2-x1)/pita;
xx=x1;
yy=y1;
while (xx<x2)
{
x=xx;
y=yy;
for (i=1;i<=2;i++)
{
//************************
//fx=y; //bentuk fungsi

fx=4*x+5;

//fx=1-exp(-12.5*x/68.1); //bentuk fungsi
//fx=fx*9.8*68.1/12.5;
//*************************
k[i]=delx*fx;
if (i==1)
{
x=xx+3*delx/4;
y=yy+3*k[i]/4;
}
} //for
xx=xx+delx;
yy=yy+(k[1]+2*k[2])/3; //iterasi runge-kutta orde 2 - Raltson
} //while
if (n==1)
{
cout.width(15);
cout<<pita;
cout.width(15);
cout<<yy;
}
else
{
delt=yy-y2;
cout.width(15);
cout<<pita;
cout.width(15);
cout<<yy;
cout.width(15);
cout<<delt;
}
cout<<endl;
y2=yy;
} //while
cout<<"Nilai Fungsi di x= "<<x2<<" adalah : "<<yy;
cout <<endl;
cout<<"Banyaknya iterasi = "<<n;
cout<<endl;
}


Avid-06
54
Fisika Komputasi
Coba jalankan program tersebut dan berikan masukan syarat awal (x
0
,y
0
) = (1 1), serta
berikan masukan untuk nilai x = 2. Jika programnya berjalan dengan benar maka anda
akan mendapatkan output berupa nilai fungsi di x = 2 adalah 12.

3) Membuat program komputer untuk mencari solusi persamaan diferensial biasa dengan
iterasi Runge-Kutta orde 2 berdasarkan metode Poligon. Dimana bentuk persamaan
diferensial yang dicari solusinya adalah :
f

(x) = 4x+5
Adapun implementasi program komputernya adalah seperti berikut ini :
//******************************************************************
//Menghitung Persamaan Diferensial dengan metode Runge-kutta orde dua-Poligon
//compiler : Visual C++
//******************************************************************
#include <iostream.h>
#include <math.h>
#include <iomanip.h>
void main()
{
double eps=1e-3;
double k[4];
double xx,x,x1,x2,yy,y,y1,y2,fx,delx,delt,pita;
int i,n;

cout << " Masukkan titik awal (xo,yo) : "; //masukkan nilai xo <spasi> yo
cin >>x1>>y1;
cout << " Masukkan titik akhir (x) : ";
cin >>x2;
cout <<endl<<endl;
n=0;
delt=100;

while (fabs(delt)>eps) //iterasi selama delt lebih besar dari eps
{
n+=1;
pita=pow(2,n); //2^n
delx=(x2-x1)/pita;
xx=x1;
yy=y1;
while (xx<x2)
{
x=xx;
y=yy;
for (i=1;i<=2;i++)
{
//************************
//fx=y; //bentuk fungsi

fx=4*x+5;

//fx=1-exp(-12.5*x/68.1); //bentuk fungsi
//fx=fx*9.8*68.1/12.5;
//*************************
k[i]=delx*fx;
if (i==1)


Avid-06
55
Fisika Komputasi
{
x=xx+delx/2;
y=yy+k[i]/2;
}
} //for
xx=xx+delx;
yy=yy+k[2]; //iterasi runge-kutta orde 2 - Poligon
} //while
if (n==1)
{
cout.width(15);
cout<<pita;
cout.width(15);
cout<<yy;
}
else
{
delt=yy-y2;
cout.width(15);
cout<<pita;
cout.width(15);
cout<<yy;
cout.width(15);
cout<<delt;
}
cout<<endl;
y2=yy;
} //while
cout<<"Nilai Fungsi di x= "<<x2<<" adalah : "<<yy;
cout <<endl;
cout<<"Banyaknya iterasi = "<<n;
cout<<endl;
}

Coba jalankan program tersebut dan berikan masukan syarat awal (x
0
,y
0
) = (1 1), serta
berikan masukan untuk nilai x = 2. Jika programnya berjalan dengan benar maka anda
akan mendapatkan output berupa nilai fungsi di x = 2 adalah 12.

4. 3. 4 Runge-Kutta orde 3
Rumus iterasi dari metode ini didapatkan dengan menyertakan suku-suku orde-3
dalam uraian deret Taylor. Jika diambil m=3 dalam persamaan (4.1) maka didapat rumus
iterasi Runge-Kutta orde 3 adalah :
) 18 . 4 .......( .......... .......... .......... .......... .......... .......... )......... 4 (
3 2 1 6
1
1
k k k y y
n n
+ + + =
+
dengan
) , (
1 n n
y x hf k =
) , (
1 2
1
2
1
2
k y h x hf k
n n
+ + =
) 2 , (
2 1 3
k k y h x hf k
n n
+ + =
4. 3. 5 Program Komputer Runge-Kutta orde 3


Avid-06
56
Fisika Komputasi
1) Membuat program komputer untuk mencari solusi persamaan diferensial biasa dengan
iterasi Runge-Kutta orde 3. Dimana bentuk persamaan diferensial yang dicari solusinya
adalah :
f

(x) = 4x+5
Adapun implementasi program komputernya adalah seperti berikut ini :
//**************************************************************************************
//Menghitung Persamaan Diferensial dengan metode Runge-Kutta orde Tiga
//compiler : Visual C++
//**************************************************************************************
#include <iostream.h>
#include <math.h>
#include <iomanip.h>
void main()
{
double eps=1e-3;
double k[4];
double xx,x,x1,x2,yy,y,y1,y2,fx,delx,delt,pita;
int i,n;

cout << " Masukkan titik awal (xo,yo) : "; //masukkan nilai xo <spasi> yo
cin >>x1>>y1;
cout << " Masukkan titik akhir (x) : ";
cin >>x2;
cout <<endl<<endl;
n=0;
delt=100;

while (fabs(delt)>eps) //iterasi selama delt lebih besar dari eps
{
n+=1;
pita=pow(2,n); //2^n
delx=(x2-x1)/pita;
xx=x1;
yy=y1;
while (xx<x2)
{
x=xx;
y=yy;
for (i=1;i<=3;i++)
{
//************************
//fx=y; //bentuk fungsi

fx=4*x+5;

//fx=1-exp(-12.5*x/68.1); //bentuk fungsi
f//x=fx*9.8*68.1/12.5;
//*************************
k[i]=delx*fx;
switch(i)
{
case (1):
{
x=xx+delx/2;
y=yy+k[i]/2;
break;
}
case(2):


Avid-06
57
Fisika Komputasi
{
x=xx+delx/2;
y=yy-k[1]+2*k[2];
break;
}
}

} //for
xx=xx+delx;
yy=yy+(k[1]+4*k[2]+k[3])/6; //iterasi Runge-Kutta orde 3
} //while
if (n==1)
{
cout.width(15);
cout<<pita;
cout.width(15);
cout<<yy;
}
else
{
delt=yy-y2;
cout.width(15);
cout<<pita;
cout.width(15);
cout<<yy;
cout.width(15);
cout<<delt;
}
cout<<endl;
y2=yy;
} //while
cout<<"Nilai Fungsi di x= "<<x2<<" adalah : "<<yy;
cout <<endl;
cout<<"Banyaknya iterasi = "<<n;
cout<<endl;
}

Coba jalankan program tersebut dan berikan masukan syarat awal (x
0
,y
0
) = (1 1), serta
berikan masukan untuk nilai x = 2. Jika programnya berjalan dengan benar maka anda
akan mendapatkan output berupa nilai fungsi di x = 2 adalah 11.993.

4. 3. 6 Runge-Kutta orde 4
Metode ini dinyatakan dengan menyertakan suku-suku orde-4 dalam uraian deret
Taylor. Adapun rumus iterasi Runge-Kutta orde 4 adalah :
) 19 . 4 .......( .......... .......... .......... .......... .......... )......... 2 2 (
4 3 2 1 6
1
1
k k k k y y
n n
+ + + + =
+
dengan
) , (
1 n n
y x hf k =
) , (
1 2
1
2
1
2
k y h x hf k
n n
+ + =
) , (
2 2
1
2
1
3
k y h x hf k
n n
+ + =
) , (
3 4
k y h x hf k
n n
+ + =


Avid-06
58
Fisika Komputasi
4. 3. 7 Program Komputer Runge-Kutta orde 4
1) Membuat program komputer untuk mencari solusi persamaan diferensial biasa dengan
iterasi Runge-Kutta orde 4. Dimana bentuk persamaan diferensial yang dicari solusinya
adalah :
f

(x) = 4x+5
Adapun implementasi program komputernya adalah seperti berikut ini :
//******************************************************************
//Menghitung Persamaan Diferensial dengan metode Runge-Kutta orde Empat
//compiler : Visual C++
//******************************************************************
#include <iostream.h>
#include <math.h>
#include <iomanip.h>
void main()
{
double eps=1e-3;
double k[4];
double xx,x,x1,x2,yy,y,y1,y2,fx,delx,delt,pita;
int i,n;

cout << " Masukkan titik awal (xo,yo) : "; //masukkan nilai xo <spasi> yo
cin >>x1>>y1;
cout << " Masukkan titik akhir (x) : ";
cin >>x2;
cout <<endl<<endl;
n=0;
delt=100;

while (fabs(delt)>eps) //iterasi selama delt lebih besar dari eps
{
n+=1; //cacah iterasi
pita=pow(2,n); //2^n
delx=(x2-x1)/pita;
xx=x1;
yy=y1;
while (xx<x2)
{
x=xx;
y=yy;
for (i=1;i<=4;i++)
{
//************************
//fx=y; //bentuk fungsi

fx=4*x+5;

//fx=1-exp(-12.5*x/68.1); //bentuk fungsi
//fx=fx*9.8*68.1/12.5;
//*************************
k[i]=delx*fx;
if(i==1||i==2)
{
x=xx+delx/2;
y=yy+k[i]/2;
}
else
if (i==3)


Avid-06
59
Fisika Komputasi
{
x=xx+delx;
y=yy+k[3];
}

} //for
xx=xx+delx;
yy=yy+(k[1]+2*(k[2]+k[3])+k[4])/6; //iterasi Runge-Kutta orde 4
} //while
if (n==1)
{
cout.width(15);
cout<<pita;
cout.width(15);
cout<<yy;
}
else
{
delt=yy-y2;
cout.width(15);
cout<<pita;
cout.width(15);
cout<<yy;
cout.width(15);
cout<<delt;
}
cout<<endl;
y2=yy;
} //while
cout<<"Nilai Fungsi di x= "<<x2<<" adalah : "<<yy;
cout <<endl;
cout<<"Banyaknya iterasi = "<<n;
cout<<endl;
}

Coba jalankan program tersebut dan berikan masukan syarat awal (x
0
,y
0
) = (1 1), serta
berikan masukan untuk nilai x = 2. Jika programnya berjalan dengan benar maka anda
akan mendapatkan output berupa nilai fungsi di x = 2 adalah 12.














Avid-06
60
Fisika Komputasi
ME EN NY YE EL LE ES SA AI IK KA AN N S SI IS ST TE EM M P PE ER RS SA AM MA AA AN N L LI IN NE EA AR R
5.1 Sistem Persamaan Linear
Persamaan Linear adalah suatu fungsi atau persamaan dimana pangkat tertinggi
dari variabel-variabelnya adalah 1, misalnya :
k cz by ax = + +
Dimana
x,y,z = variabel
a,b,c = koefisien
k = konstanta
Sedangkan yang dimaksud dengan Sistem persamaan Linear adalah beberapa persamaan
linear yang saling berhubungan dimana banyaknya koefisien, variabel, dan konstanta
adalah sama. Agar sistem persamaan linear tersebut dapat dicari solusinya (dapat dihitung
nilai variabelnya) maka banyaknya persamaan dalam sistem persamaan linear harus sama
dengan banyaknya variabel. Contoh sistem persamaan linear :
7 3 = + + z y x
15 3 4 4 = + + z y x
25 2 8 5 = + + z y x
Atau persamaan diatas bisa ditulis :
7 3
3 2 1
= + + x x x
15 3 4 4
3 2 1
= + + x x x
25 2 8 5
3 2 1
= + + x x x
Tampak dalam sistem persamaan linear diatas banyaknya persamaan dan variabel adalah
sama yaitu 3.
Secara umum sistem persamaan linear dinyatakan dengan :

1 1 3 13 2 12 1 11
... b x a x a x a x a
n n
= + + + +

2 2 3 23 2 22 1 21
... b x a x a x a x a
n n
= + + + +

3 3 3 33 2 32 1 31
... b x a x a x a x a
n n
= + + + + .................................................................(5.1)
........ .......... .......... .......... .......... ..........

m n mn m m m
b x a x a x a x a = + + + + ...
3 3 2 2 1 1

Sistem persamaan linear tersebut terdiri dari m persamaan dan n variabel. Persamaan
linear tersebut akan dapat diselesaikan jika jumlah m = n. Penyelesaian persaman linear
V


Avid-06
61
Fisika Komputasi
adalah mencari nilai x
i
(i = 1,2,...,n). Sistem persamaan linear (5.1) dapat dinyatakan
dalam bentuk matrik yaitu :

(
(
(
(

=
(
(
(
(

(
(
(
(

m n mn m m
n
n
b
b
b
x
x
x
a a a
a a a
a a a
... ...
...
... ... ... ...
...
...
2
1
2
1
2 1
2 22 21
1 12 11
..........................................................(5.2)
Atau bisa dinyatakan dengan :
Ax = B
Dimana :
A =
(
(
(
(

mn m m
n
n
a a a
a a a
a a a
...
... ... ... ...
...
...
2 1
2 22 21
1 12 11
, x =
(
(
(
(

n
x
x
x
...
2
1
, dan B =
(
(
(
(

m
b
b
b
...
2
1

Matrik A disebut matrik koefisi en atau matrik Jacobi an. Vektor x disebut sebagai
vektor vari abel dan vektor B disebut sebagai vektor Konstant a.
Augmented Matrix (matrik perluasan) adalah perluasan dari matrik koefisien A dengan
menambahkan vektor B pada kolom terakhir dari matrik A.
Augmented (A) = [A B]
Sehingga Augmented Matrik dari persamaan linear simultan (5.2) dapat dituliskan :

(
(
(
(

m mn m m
n
n
b
b
b
a a a
a a a
a a a
...
...
... ... ... ...
...
...
2
1
2 1
2 22 21
1 12 11
.........................................................................(5.3)


Contoh permasalahan yang dapat dinyatakan dalam bentuk sistem persamaan linear
misalnya :
Contoh 1 :
Seorang pembuat boneka ingin membuat 2 macam boneka yaitu boneka A dan
boneka B. Kedua boneka tersebut dibuat dengan menggunakan 2 macam bahan yaitu kain
dan kancing. Andaikan boneka A memerlukan 10 meter kain dan 6 kancing sedangkan
boneka B memerlukan 8 meter kain dan 8 kancing maka hitunglah berapa buah boneka A
dan boneka B yang dapat dihasilkan jika kita memiliki 82 meter kain dan 62 kancing.
Masalah ini dapat dimodelkan dengan menyatakan :
x
1
= jumlah boneka A


Avid-06
62
Fisika Komputasi
x
2
= jumlah boneka B
Sehingga untuk setiap bahan (kain dan kancing) dapat dinyatakan persamaan :
10 untuk boneka A + 8 untuk boneka B = 82 --- > kain
6 untuk boneka A + 8 untuk boneka B = 62 --- > kancing
Persamaan diatas dapat dinyatakan dengan :
10 x
1
+ 8 x
2
= 82
6 x
1
+ 8 x
2
= 62
Penyelesaian dari persamaan tersebut adalah nilai x
1
dan x
2
yang memenuhi kedua
persamaan diatas. Ada beberapa metode yang dapat dipakai untuk mencari solusi dari
sistem persamaan linear. Metode metode ini akan dijelaskan pada sub bab berikutnya.
Teorema 5.1
Suatu sistem persamaan linear mempunyai penyelesaian tunggal bila memenuhi
syarat-syarat sebagai berikut :
- bentuk sistem persamaan linear bujursangkar, dimana jumlah persamaan linear sama
dengan jumlah variabel bebas
- sistem persamaan linear bersifat non-homogen, yaitu minimal ada satu nilai vektor
konstanta B tidak nol atau ada b
n
0
- determinan dari matrik koefisien A tidak sama dengan nol
Untuk menyelesaikan permasalahan-permasalahan sistem persamaan linear dapat
dilakukan dengan menggunakan metode-metode analitik seperti pemakaian metode grafis,
aturan Crammer, atau invers matrik. Metode-metode tersebut dapat dilakukan dengan
mudah apabila jumlah variabel dan jumlah persamaannya di bawah 4, tetapi bila
ukurannya besar maka metode-metode diatas menjadi sulit dilakukan, sehingga
pemakaian metode numerik menjadi suatu alternatif yang banyak digunakan. Metode
numerik yang dapat digunakan untuk menyelesaikan permasalahan sistem persamaan
linear antara lain :
- metode Eliminasi Gauss
- metode Eliminasi Gauss-Jordan
- Metode Iterasi Gauss-Seidal
5.2 Metode Eliminasi Gauss
Metode Eliminasi Gauss merupakan metode yang dikembangkan dari metode
eliminasi, yaitu menghilangkan atau mengurangi jumlah variabel sehingga dapat
diperoleh nilai dari suatu variabel. Untuk menggunakan metode Eliminasi Gauss ini,
terlebih dahulu bentuk matrik diubah menjadi Augmented Matrik sebagai berikut :


Avid-06
63
Fisika Komputasi

(
(
(
(

m mn m m
n
n
b
b
b
a a a
a a a
a a a
...
...
... ... ... ...
...
...
2
1
2 1
2 22 21
1 12 11
.........................................................................(5.4)
Metode Eliminasi Gauss adalah suatu metode dimana Augmented matrik (5.4) pada
bagian kiri diubah menjadi matrik segitiga atas atau segitiga bawah dengan menerapkan
Operasi Baris Elementer (OBE).


(
(
(
(
(
(

n nn n n n
n
n
n
b a a a a
b a a a a
b a a a a
b a a a a
...
... ... ... ... ... ...
...
...
...
3 2 1
3 3 33 32 31
2 2 23 22 21
1 1 13 12 11

(
(
(
(
(
(

n nn
n
n
n
d a
d c c
d c c c
d c c c c
... 0 0 0
... ... ... ... ... ...
... 0 0
... 0
...
3 3 33
2 2 23 22
1 1 13 12 11

Sehingga penyelesaiannya adalah :

nn
n
n
c
d
x =
) (
1
, 1 1
1 , 1
1 n n n n
n n
n
x c d
c
x

=
.................................
) ... (
1
2 4 24 3 23 2
22
2 n n
x c x c x c d
c
x =
) ... (
1
1 3 13 2 12 1
11
1 n n
x c x c x c d
c
x =

Operasi Baris Elementer adalah (OBE) adalah suatu operasi perubahan nilai elemen
matrik berdasarkan barisnya, tanpa mengubah matriknya. OBE pada baris ke i+k dengan
dasar baris ke i dapat ditulis :

j i, j k, i j k, i
c.a a a =
+ +

Dimana c adalah konstanta pengali yang diambil dari perbandingan antara nilai
i k, i
a
+
dan
i i ,
a
Contoh :
Selesaikan sistem persamaan linear berikut ini :
6
3 2 1
= + + x x x
2 2
3 2 1
= + x x x


Avid-06
64
Fisika Komputasi
10 2 2
3 2 1
= + + x x x
Jawab :
Augmented matrik dari sistem persamaan linear tersebut adalah :

(
(
(

10 2 1 2
2 1 2 1
6 1 1 1

Lakukan OBE sebagai berikut :

(
(
(



=
=
2 0 1 0
4 2 1 0
6 1 1 1
2
1 3 3
1 2 2
B B B
B B B

(
(
(



+ = 6 2 0 0
4 2 1 0
6 1 1 1
2 3 3
B B B

Sehingga didapat penyelesaian yaitu :
3
2
6
3
=

= x
2 )) 3 )( 2 ( 4 (
1
1
2
= = x
1 ) 3 2 6 (
1
1
1
= = x
5.2.1 Algoritma Metode Eliminasi Gauss
Adapun algoritma dari metode Eliminasi Gauss adalah :
1.Masukkan matrik A dan vektor B beserta ukurannya
2.Buat Augmented Matrik [A|B], namakan dengan A
3.Untuk baris ke-i dimana i=1 sampai n, perhatikan apakah nilai a
i,i
sama dengan nol.
Jika Ya :
Tukarkan baris ke-i dengan baris i+k n, dimana a
i+k,i
tidak sama dengan nol, bila tidak
ada berarti perhitungan tidak bisa dilanjutkan dan proses dihentikan tanpa penyelesaian
Jika tidak : lanjutkan
4.Untuk baris ke-j, dimana j = i+1 sampai n, Lakukan Operasi Baris Elementer OBE :
- hitung
i i,
i j,
a
a
c =
-untuk kolom k dimana k = 1 sampai n+1 hitung

k i, k j, k j,
a . c a a =


Avid-06
65
Fisika Komputasi
5.Hitung nilai x
i
, untuk i = n sampai 1 (bergerak dari baris ke-n sampai baris ke-1)
) x a ... x a x a (b
a
1
x
n n i, 2 i 2 j i, 1 i 1 j i, i
i i,
i
=
+ + + +

dimana nilai i+k n

5.2.2 Program komputer Metode Eliminasi Gauss
Berdasarkan algoritma yang dinyatakan dalam sub bab sebelumnya maka kita
dapat menuliskan atau mengimplementasikan algoritma tersebut menjadi kode program
(source code) dengan bahasa Visual C++ seperti berikut ini :

//*****Metode Eliminasi Gauss - solusi sistem pers. Linear****
#include <iostream.h>
void main()
{
double A[10][10];
double B[10],X[10];
double c;
int n,i,j,k;
cout << " Ukuran Matrik : ";
cin >>n;
cout<<"Matrik A : "<<endl;
for (i=1;i<=n;i++)
{
for (j=1;j<=n;j++)
{
cout<<"A["<<i<<j<<"] = ";
cin>>A[i][j];
}
}
cout<<endl;
cout<<" Vektor B : "<<endl;
for (i=1;i<=n;i++)
{
cout<<"B["<<i<<"] = ";
cin>>B[i];
}
cout <<endl;
//Augmented Matrik
for (i=1;i<=n;i++)
{
A[i][n+1]=B[i];
}
for (i=1;i<=n;i++)
{
if (A[i][i]==0)
{
//tukar baris
for (k=i+1;k<=n;k++)
{
}
}
else
{


Avid-06
66
Fisika Komputasi
for (j=i+1;j<=n;j++)
{
//operasi baris elementer
c= A[j][i]/A[i][i];
for (k=1;k<=n+1;k++)
{
A[j][k]=A[j][k]-c*A[i][k];
}
}
}
}

//tampilkan matrik hasil operasi baris elementer
for (i=1;i<=n;i++)
{
for (j=1;j<=n+1;j++)
{
cout<<"A["<<i<<j<<"] = "<<A[i][j];
cout <<endl;
}
cout<<endl;
}

//hitung variabel X
for (i=n;i>=1;i--)
{
if (i==n)
{
X[i]=A[i][n+1]/A[i][i];
}
else
{

X[i]=A[i][n+1];
for (j=i+1;j<=n;j++)
{
X[i]=X[i]-A[i][j]*X[j];
}
X[i]=X[i]/A[i][i];
}
}
//tampilkan X
for (i=1;i<=n;i++)
{
cout<<"X["<<i<<"] = "<<X[i]<<endl;
}
}

Cobalah jalankan program tersebut dan kemudian cobalah untuk menyelesaikan masalah
sistem persamaan linear berikut ini :
6
3 2 1
= + + x x x
2 2
3 2 1
= + x x x
10 2 2
3 2 1
= + + x x x
Berikut ini adalah hasil eksekusi program untuk masalah tersebut diatas :
Ukuran Matrik : 3


Avid-06
67
Fisika Komputasi
Matrik A :
A[11] = 1
A[12] = 1
A[13] = 1
A[21] = 1
A[22] = 2
A[23] = -1
A[31] = 2
A[32] = 1
A[33] = 2

Vektor B :
B[1] = 6
B[2] = 2
B[3] = 10

A[11] = 1
A[12] = 1
A[13] = 1
A[14] = 6

A[21] = 0
A[22] = 1
A[23] = -2
A[24] = -4

A[31] = 0
A[32] = 0
A[33] = -2
A[34] = -6

X[1] = 1
X[2] = 2
X[3] = 3

5.3 Metode Eliminasi Gauss-Jordan
Metode Eliminasi Gauss Jordan hampir mirip dengan metode Gauss, hanya saja
pada metode ini, di bagian sebelah kiri dari Augmented matrik diubah menjadi matrik
diagonal seperti diperlihatkan berikut ini :

(
(
(
(
(
(

n nn n n n
n
n
n
b a a a a
b a a a a
b a a a a
b a a a a
...
... ... ... ... ... ...
...
...
...
3 2 1
3 3 33 32 31
2 2 23 22 21
1 1 13 12 11

(
(
(
(
(
(

n
d
d
d
d
1 ... 0 0 0
... ... ... ... ... ...
0 ... 1 0 0
0 ... 0 1 0
0 ... 0 0 1
3
2
1


Penyelesaian dari sistem persamaan linear ini adalah nilai d
1
,d
2
,d
3
,...,d
n
dan atau :
x
1
= d
1
, x
2
= d
2
, x
3
= d
3
, ..., x
n
= d
n

Cara yang digunakan untuk mendapatkan matrik diagonal dalam metode Gauss Jordan
adalah sama seperti metode Gauss yaitu dengan menerapkan Operasi Baris Elementer
(OBE).
Contoh :
Selesaikan sistem persamaan linear berikut ini :


Avid-06
68
Fisika Komputasi
3
2 1
= + x x
8 4 2
2 1
= + x x
Jawab :
Augmented matrik dari sistem persamaan linear tersebut adalah :

(

8 4 2
3 1 1

Lakukan OBE sebagai berikut :

1 2 2
2B B B =
(

2 2 0
3 1 1

2
2 2
B B =
(

1 1 0
3 1 1


2 1 1
B B B =
(

1 1 0
2 0 1

Sehingga didapat penyelesaian yaitu :
2
1
= x
1
2
= x
5.3.1 Algoritma Metode Eliminasi Gauss Jordan
Dari uraian diatas maka dapat dibuat algoritma dari metode Gauss Jordan seperti
berikut ini :
1.Masukkan matrik A dan vektor B beserta ukurannya
2.Buat Augmented Matrik [A|B], namakan dengan A
3.Untuk baris ke-i dimana i=1 sampai n, perhatikan apakah nilai a
i,i
sama dengan nol.
Jika Ya :
Tukarkan baris ke-i dengan baris i+k n, dimana a
i+k,i
tidak sama dengan nol, bila tidak
ada berarti perhitungan tidak bisa dilanjutkan dan proses dihentikan tanpa penyelesaian
Jika tidak : lanjutkan
Jadikan nilai diagonalnya menjadi satu, dengan cara untuk setiap kolom k dimana k = 1
sampai n+1, hitung
i i
k i
k i
a
a
a
,
,
,
=
4.Untuk baris ke-j, dimana j = i+1 sampai n, Lakukan Operasi Baris Elementer OBE :
- hitung
i j
a c
,
=
-untuk kolom k dimana k = 1 sampai n+1 hitung

k i k j k j
a c a a
, , ,
. =


Avid-06
69
Fisika Komputasi
5.Hitung nilai x
i
, untuk i = 1 sampai n

1 , +
=
n i i
a x
5.3.2 Program komputer Metode Eliminasi Gauss Jordan
Dari algoritma Metode Gauss Jordan yang sudah dijabarkan dalam sub bab
sebelumnya maka selanjutnya kita dapat mengimplementasikan dalam bentuk program
komputer ( Compiler Visual C++) :
//Metode Gauss - Jordan : solusi sistem pers. linear
#include <iostream.h>
void main()
{
double A[10][10];
double B[10],X[10];
double c;
int n,i,j,k,brs,kol;
cout << " Ukuran Matrik : ";
cin >>n;
cout<<"Matrik A : "<<endl;
for (i=1;i<=n;i++)
{
for (j=1;j<=n;j++)
{
cout<<"A["<<i<<j<<"] = ";
cin>>A[i][j];
}
}
cout<<endl;
cout<<" Vektor B : "<<endl;
for (i=1;i<=n;i++)
{
cout<<"B["<<i<<"] = ";
cin>>B[i];
}
cout <<endl;
//Augmented Matrik
for (i=1;i<=n;i++)
{
A[i][n+1]=B[i];
}
cout<<"Augmented Matrik"<<endl;
for (i=1;i<=n;i++)
{
for (j=1;j<=n+1;j++)
{
cout<<"A["<<i<<j<<"] = "<<A[i][j];
cout<<endl;
}
}
cout<<endl;

for (i=1;i<=n;i++)
{
if (A[i][i]==0)
{
//tukar baris
for (k=i+1;k<=n;k++)
{


Avid-06
70
Fisika Komputasi
}
}
else
{
c=A[i][i];
for (kol=1;kol<=n+1;kol++) //elemen diagonal dibuat 1
{
A[i][kol]=A[i][kol]/c;
}
for (brs=1;brs<=n;brs++)
{
//operasi baris elementer
if (brs!=i)
{
c=A[brs][i];
for (kol=1;kol<=n+1;kol++)
{
A[brs][kol]=A[brs][kol]-c*A[i][kol];
}
}
}
}
}

//tampilkan matrik hasil operasi baris elementer
for (i=1;i<=n;i++)
{
for (j=1;j<=n+1;j++)
{
cout<<"A["<<i<<j<<"] = "<<A[i][j];
cout <<endl;
}
cout<<endl;
}

//hitung variabel X
for (i=1;i<=n;i++)
{
X[i]=A[i][n+1];
}
//tampilkan X
for (i=1;i<=n;i++)
{
cout<<"X["<<i<<"] = "<<X[i]<<endl;
}
}

Eksekusilah program tersebut dan kemudian cobalah untuk menyelesaikan masalah sistem
persamaan linear berikut ini :
3
2 1
= + x x
8 4 2
1
= + x x
Berikut ini adalah hasil eksekusi program untuk masalah tersebut diatas :
Ukuran Matrik : 2
Matrik A :
A[11] = 1
A[12] = 1
A[21] = 2


Avid-06
71
Fisika Komputasi
A[22] = 4

Vektor B :
B[1] = 3
B[2] = 8

Augmented Matrik
A[11] = 1
A[12] = 1
A[13] = 3
A[21] = 2
A[22] = 4
A[23] = 8

A[11] = 1
A[12] = 0
A[13] = 2

A[21] = 0
A[22] = 1
A[23] = 1

X[1] = 2
X[2] = 1

5.4 Metode Iterasi Gauss Seidal
Berbeda dengan 2 metode sebelumnya yang menggunakan Operasi Baris
Elementer (OBE) maka dalam Metode Gauss Seidal kita menggunakan proses iterasi
hingga diperoleh nilai yang konvergen (bertambah kecil sampai lebih kecil dari suatu
konstanta ). Bila diberikan sistem persamaan linear :

1 1 3 13 2 12 1 11
... b x a x a x a x a
n n
= + + + +

2 2 3 23 2 22 1 21
... b x a x a x a x a
n n
= + + + +

3 3 3 33 2 32 1 31
... b x a x a x a x a
n n
= + + + +
........ .......... .......... .......... .......... ..........

m n mn m m m
b x a x a x a x a = + + + + ...
3 3 2 2 1 1

Berilah nilai awal untuk setiap x
i
( i = 1 sampai n) kemudian sistem persamaan linear
diatas ditulis menjadi :
) ... (
1
1 3 13 2 12 1
11
1 n n
x a x a x a b
a
x =
) ... (
1
2 3 23 1 21 2
22
2 n n
x a x a x a b
a
x =
...............................................................
) ... (
1
1 1 2 2 1 1
=
n nn n n n
nn
n
x a x a x a b
a
x
Dengan menghitung nilai-nilai x
i
(i = 1 sampai n) dengan memakai persamaan
diatas secara terus menerus hingga diperoleh suatu nilai x
i
yang sama (mendekati) dengan


Avid-06
72
Fisika Komputasi
nilai x
i
pada iterasi sebelumnya. Atau proses iterasi akan dihentikan jika sudah didapatkan
selisih antara 2 nilai iterasi berurutan sudah lebih kecil dari suatu toleransi error yang
ditentukan.
Contoh :
Selesaikan sistem persamaan linear berikut ini :
5
2 1
= + x x
14 4 2
2 1
= + x x
Jawab :
Berikan nilai awal : x
1
= 0 dan x
2
= 0
Susun persamaan menjadi :

2 1
5 x x =
) 2 14 (
4
1
1 2
x x =
Iterasi 1 :
5 0 5
1
= = x
1 ) 5 . 2 14 (
4
1
2
= = x
Iterasi 2 :
4 1 5
1
= = x

2
3
) 4 . 2 14 (
4
1
2
= = x
Iterasi 3 :

2
7
2
3
5
1
= = x

4
7
)
2
7
. 2 14 (
4
1
2
= = x
Iterasi 4 :

4
13
4
7
5
1
= = x

8
15
)
4
13
. 2 14 (
4
1
2
= = x
Iterasi 5 :

8
25
8
15
5
1
= = x


Avid-06
73
Fisika Komputasi

16
31
)
8
25
. 2 14 (
4
1
2
= = x
Iterasi 6 :

16
49
16
31
5
1
= = x

32
63
)
16
49
. 2 14 (
4
1
2
= = x

Iterasi 7 :

32
97
32
63
5
1
= = x

64
127
)
32
97
. 2 14 (
4
1
2
= = x
Dapat dilihat nilai x
1
dan x
2
pada iterasi yang ke-7 sudah tidak berbeda jauh dengan nilai
pada iterasi ke-6, sehingga proses iterasi dapat dihentikan dan didapatkan penyelesaian :

32
97
1
= x
64
127
2
= x

5.4.1 Algoritma Metode Iterasi Gauss Seidal
Algoritma dari metode Iterasi Gauss Seidal dapat dinyatakan seperti berikut ini :
1.Masukkan matrik A dan vektor B beserta ukurannya n
2.Tentukan batas maksimum iterasi, max_iter
3.Tentukan toleransi error c
4.Tentukan nilai awal dari x
i
, untuk i = 1 sampai n
5.Simpan x
i
dalam s
i
, untuk i = 1 sampai n
6.Untuk i = 1 sampai n hitung :

=
=
i j
j j i i
i i
i
x a b
a
x ) (
1
,
,


i i i
s x e =
7.Iterasi <-- iterasi + 1
8.Jika iterasi lebih dari max_iter atau terdapat e
i
< c untuk i = 1 sampai n maka proses
dihentikan dan penyelesaiannya adalah x
i
(i =1 sampai n). Jika tidak , ulangi langkah 5
5.4.2 Program komputer Metode Iterasi Gauss Seidal
Dari algoritma Metode Iterasi Gauss Seidal maka selanjutnya kita dapat
mengimplementasikannnya dalam bentuk program komputer (bahasa Visual C++) :


Avid-06
74
Fisika Komputasi
//Metode Gauss - Seidal : solusi sistem pers. linear
#include <iostream.h>
void main()
{
double A[10][10];
double B[10],X[10],S[10],err[10];
double eps,sum;
bool loop;
int n,i,j,max_iterasi,iterasi;
cout << " Ukuran Matrik : ";
cin >>n;
cout<<"Matrik A : "<<endl;
for (i=1;i<=n;i++)
{
for (j=1;j<=n;j++)
{
cout<<"A["<<i<<j<<"] = ";
cin>>A[i][j];
}
}
cout<<endl;
cout<<" Vektor B : "<<endl;
for (i=1;i<=n;i++)
{
cout<<"B["<<i<<"] = ";
cin>>B[i];
}
cout <<endl;
max_iterasi = 10;
eps=0.0001;
iterasi=1;
for (i=1;i<=n;i++)
{
X[i]=0;
S[i]=X[i];
}
loop=true;
while ((loop==true) && (iterasi<=max_iterasi))
{
for (i=1;i<=n;i++)
{
sum=0;
for (j=1;j<=n;j++)
{
if (j!=i)
{
sum=sum+A[i][j]*X[j];
}
}
X[i]=(B[i]-sum)/A[i][i];
err[i]=X[i]-S[i];
if (err[i]<eps)
loop==false;
}
iterasi=iterasi+1;
}
cout<<"jumlah iterasi = "<<iterasi<<endl;
for (i=1;i<=n;i++)
{
cout<<"X["<<i<<"] = "<<X[i]<<endl;
}
}


Avid-06
75
Fisika Komputasi
T
4 kg
2 kg
Eksekusilah program tersebut dan kemudian cobalah untuk menyelesaikan masalah sistem
persamaan linear berikut ini :
5
2 1
= + x x
14 4 2
1
= + x x
Berikut ini adalah hasil eksekusi program untuk masalah tersebut diatas :
Ukuran Matrik : 2
Matrik A :
A[11] = 1
A[12] = 1
A[21] = 2
A[22] = 4

Vektor B :
B[1] = 5
B[2] = 14

jumlah iterasi = 11
X[1] = 3.00391
X[2] = 1.99805

Soal Latihan :
1.Sebuah balok dengan massa 4 kg didorong dengan gaya 50 N. Di depan balok ini
terdapat balok lain yang massanya 2 kg. Setelah ke dua balok menempel, hitunglah
besar gaya kontak T antara kedua balok dan percepatannya a. Lantai dianggap licin.












5.4.3 Eigen Value dan Eigen Vektor
Untuk membahas tentang Eigen value dan Eigen vektor pertama-tama kita akan
melihat sebuah contoh kasus pencerminan pada koordinat kartesius. Andaikan pada
sistem pada koordinat kartesius ditempatkan sebuah cermin sepanjang garis : y= -x seperti
diperlihatkan dalam gambar 5.1 berikut ini.






(a)
(b)
4 kg
2 kg
50 N
F T
y
x
cermin
y=-x
Gambar 5.1. Ilustrasi Eigen value dan Eigen Vektor


Avid-06
76
Fisika Komputasi



Bagaimanakah hasil pencerminan sebuah vektor yang ada di atas cermin? Misalnya
vektor (0,1) jika dicerminkan pada garis y = -x maka hasilnya adalah vektor (-1,0)









Pencerminan dapat dipandang sebagai sebuah transformasi sebuah vektor. Pada
transformasi pencerminan, setiap vektor yang tidak mengalami perubahan atau hanya
berubah arahnya merupakan vektor khusus atau sering disebut dengan istilah Eigen
vektor. Semua vektor yang ditunjukkan dalam gambar 5.3 merupakan Eigen vektor pada
transformasi pencerminan.









Jika ) , ( y x r melambangkan sebuah vektor. Sementara transformasi pencerminan
dinyatakan dalam bentuk matrik P. Hasil pencerminan vektor r dinyatakan dengan r:
r = P r
Untuk cermin seperti dalam gambar (5.1) dinyatakan dalam bentuk matrik P yaitu :

|
|
.
|

\
|


=
0 1
1 0
P
Sedangkan transformasi pencerminan vektor (0,1) seperti diperlihatkan dalam gambar
(5.2) dinyatakan dengan :
|
|
.
|

\
|
=
|
|
.
|

\
|
|
|
.
|

\
|


0
1
1
0
0 1
1 0




y
x
cermin
y=-x
Gambar 5.2. Pencerminan vektor (0,1)
y
x
cermin
y=-x
Gambar 5.2. Beberapa Eigen vektor pada pencerminan


Avid-06
77
Fisika Komputasi
IN NT TE ER RP PO OL LA AS SI I
Interpolasi merupakan proses untuk menentukan titik-titik antara dari n buah titik
dengan menggunakan suatu fungsi pendekatan. Ada beberapa metode Interpolasi yaitu :
-Interpolasi Linier
- Interpolasi Kuadratik
- Interpolasi Polinomial
- Interpolasi Lagrange

6.1 Interpolasi Linear
Interpolasi Linear merupakan proses menentukan titik-titik antara dari 2 buah titik
dengan menggunakan fungsi pendekatan yang berbentuk garis lurus


Persamaan garis lurus yang melalui 2 titik P1(x1,y1) dan P2(x2,y2) dapat dinyatakan dengan:
1 2
1
1 2
1
x x
x x
y y
y y


Sehingga persamaan dari interpolasi linier adalah :

1 1
1 2
1 2
) ( y x x
x x
y y
y +

=
Contoh :
Hitunglah nilai y untuk titik x = 2.1 yang berada diantara titik (1,1.5) dan (3,2.5)
Jawab :
) 5 . 2 , 3 ( ) 5 . 1 , 1 (
2 1
= = P P
VI
Gambar 6.1. Interpolasi Linier


Avid-06
78
Fisika Komputasi


x = 2.1
1 1
1 2
1 2
) ( y x x
x x
y y
y +

=
5 . 1 ) 1 1 . 2 (
1 3
5 . 1 5 . 2
+

= y
05 . 2 =
Jadi titik P
3
(2.1,2.05)
Algoritma Interpolasi Linier :
1.Tentukan dua titik P1 dan P2 dengan koordinatnya masing-masing (x1,y1)
dan(x2,y2)
2.Tentukan nilai x dari titik yang akan dicari
3.Hitung nilai y dengan :

1 1
1 2
1 2
) ( y x x
x x
y y
y +

=
4.Tampilkan nilai titik yang baru Q(x,y)

6.2 Interpolasi Kuadratik
Interpolasi Kuadratik dipakai untuk menentukan titik-titik antara dari 3 buah titik
P1(x1,y1), P2(x2,y2) dan P3(x3,y3) dengan menggunakan fungsi pendekatan yang berupa
fungsi kuadrat
Gambar 6.2. Contoh Interpolasi Linier


Avid-06
79
Fisika Komputasi


Untuk memperoleh titik Q(x,y) digunakan interpolasi kuadratik sebagai berikut:
) )( (
) )( (
) )( (
) )( (
) )( (
) )( (
2 3 1 3
2 1
3
3 2 1 2
3 1
2
3 1 2 1
3 2
1
x x x x
x x x x
y
x x x x
x x x x
y
x x x x
x x x x
y y


+


+


=
Contoh :
Hitunglah nilai y untuk titik x = 2.5 yang berada diantara titik (1,5), (2,2) dan (3,3)
Jawab :
) 3 , 3 ( ) 2 , 2 ( ) 5 , 1 (
3 2 1
= = = P P P


x = 2.5
) )( (
) )( (
) )( (
) )( (
) )( (
) )( (
2 3 1 3
2 1
3
3 2 1 2
3 1
2
3 1 2 1
3 2
1
x x x x
x x x x
y
x x x x
x x x x
y
x x x x
x x x x
y y


+


+


=
Gambar 6.3. Interpolasi Kuadratik
Gambar 6.4. Contoh Interpolasi Kuadratik


Avid-06
80
Fisika Komputasi
) 2 3 )( 1 3 (
) 2 5 . 2 )( 1 5 . 2 (
3
) 3 2 )( 1 2 (
) 3 5 . 2 )( 1 5 . 2 (
2
) 3 1 )( 2 1 (
) 3 5 . 2 )( 2 5 . 2 (
5


+


+


= y
2 =
Jadi titik P
4
(2.5,2)
Algoritma Interpolasi Kuadratik :
1.Tentukan 3 titik input P1(x1,y1), P2(x2,y2) dan P3(x3,y3)
2.Tentukan nilai x dari titik yang akan dicari
3.Hitung nilai y dari titik yang dicari menggunakan rumus dari interpolasi kuadratik:


) )( (
) )( (
) )( (
) )( (
) )( (
) )( (
2 3 1 3
2 1
3
3 2 1 2
3 1
2
3 1 2 1
3 2
1
x x x x
x x x x
y
x x x x
x x x x
y
x x x x
x x x x
y y


+


+


=
4.Tampilkan nilai titik yang baru Q(x,y)

6.3 Interpolasi Polinomial
Interpolasi Polinomial dipakai untuk menentukan titik-titik antara dari n buah titik
P1(x1,y1), P2(x2,y2), P3(x3,y3), , Pn(xn,yn) dengan menggunakan pendekatan fungsi
polinomial pangkat n-1:

1
1
2
2 1 0
...

+ + + + =
n
n
x a x a x a a y
Masukkan nilai dari setiap titik ke dalam persamaan polynomial di atas dan diperoleh
persamaan simultan dengan n persamaan dan n variabel bebas:
1
1 1
2
1 2 1 1 0 1
...

+ + + + =
n
n
x a x a x a a y
1
2 1
2
2 2 2 1 0 2
...

+ + + + =
n
n
x a x a x a a y
1
3 1
2
3 2 3 1 0 3
...

+ + + + =
n
n
x a x a x a a y
.................................................
1
1
2
2 1 0
...

+ + + + =
n
n n n n n
x a x a x a a y

Penyelesaian persamaan simultan di atas adalah nilai-nilai a0, a1, a2, a3, , an yang
merupakan nilai-nilai koefisien dari fungsi pendekatan polynomial yang akan digunakan.
Dengan memasukkan nilai x dari titik yang dicari pada fungsi polinomialnya, akan
diperoleh nilai y dari titik tersebut.
Contoh :
Hitunglah nilai y untuk titik x = 3 yang berada diantara titik (3.2,22), (2.7,17.8),
(1,14.2), dan (4.8,38.3)
Jawab :
22 ) 2 . 3 ( ) 2 . 3 ( ) 2 . 3 ( 2 . 3
2 3
= + + + = d c b a x
8 . 17 ) 7 . 2 ( ) 7 . 2 ( ) 7 . 2 ( 7 . 2
2 3
= + + + = d c b a x


Avid-06
81
Fisika Komputasi
2 . 14 ) 1 ( ) 1 ( ) 1 ( 1
2 3
= + + + = d c b a x
3 . 38 ) 8 . 4 ( ) 8 . 4 ( ) 8 . 4 ( 8 . 4
2 3
= + + + = d c b a x
Didapatkan:
a = -0.5275
b = 6.4952
c = -16.117
d = 24.3499
Sehingga persamaan polinomialnya adalah :
3499 . 24 117 . 16 4952 . 6 5275 . 0
2 3
+ + = x x x y
Untuk x = 3 maka y = 20.212
Jadi titik P (3,20.212)



Algoritma Interpolasi Polinomial :
1. Tentukan jumlah titik n yang diketahui
2. Memasukkan titik-titik yang diketahui P
i
(x
i
,y
i
) untuk i=1,2,3,,n
3. Menyusun augmented matrik dari titik-titik yang diketahui sebagai berikut:


(
(
(
(
(
(

n
n
n n n
n
n
n
y x x x
y x x x
y x x x
y x x x
J
1 2
3
1
3
2
3 3
2
1
2
2
2 2
1
1
1
2
1 1
... 1
... ... ... ... ... ...
... 1
... 1
... 1

4. Menyelesaikan persamaan simultan dengan augmented matrik di atas dengan
menggunakan metode eliminasi gauss/Jordan
Gambar 6.5. Contoh Interpolasi Polinomial


Avid-06
82
Fisika Komputasi
5. Menyusun koefisien fungsi polinomial berdasarkan penyelesaian persamaan
simultan di atas
} 1 0 ), , ( | { s s = = n i n i J a a a
i i

6. Memasukkan nilai x dari titik yang diketahui
7. Menghitung nilai y dari fungsi polinomial yang dihasilkan

=
=
1
0
n
i
i
i
x a y
8. Menampilkan titik (x,y)
6.4 Interpolasi Lagrange
Interpolasi Lagrange digunakan untuk mencari titik-titik antara dari n buah titik
P1(x1,y1), P2(x2,y2), P3(x3,y3), , Pn(xn,yn) dengan menggunakan pendekatan fungsi
polinomial yang disusun dalam kombinasi deret dan didefinisikan dengan :

=
=

H =
N
i
j i
j
i j
i
x x
x x
y y
1
) (
) (

Jika untuk 3 titik ( n =3) maka uraian dari fungsi Polinomial diatas adalah :
) )( (
) )( (
) )( (
) )( (
) )( (
) )( (
2 3 1 3
2 1
3
3 2 1 2
3 1
2
3 1 2 1
3 2
1
x x x x
x x x x
y
x x x x
x x x x
y
x x x x
x x x x
y y


+


+


=
tampak hasilnya adalah sama dengan interpolasi kuadratik.
Algoritma Interpolasi Lagrange :
1. Tentukan jumlah titik n yang diketahui
2. Tentukan titik-titik P
i
(x
i
,y
i
) yang diketahui dimana i=1,2,3,,n
3. Tentukan x dari titik yang dicari
4. Hitung nilai y dari titik yang dicari dengan formulasi interpolasi Lagrange

=
=

H =
N
i
j i
j
i j
i
x x
x x
y y
1
) (
) (

5. Tampilkan nilai (x,y)










Avid-06
83
Fisika Komputasi
RE EG GR RE ES SI I
Regresi adalah sebuah metode untuk mendapatkan fungsi pendekatan dari
sekumpulan titik-titik data. Ada beberapa metode Regresi yaitu :
- Regresi Linier
- Regresi Eksponensial
- Regresi Polinomial

7.1 Regresi Linear
Regresi Linear adalah metode untuk mendapatkan fungsi pendekatan yang
berbentuk linear dari sekumpulan titik data (x
n
,y
n
).


Fungsi linear merupakan fungsi yang berbentuk garis lurus yang dinyatakan dengan
persamaan :
c mx y + =
Dimana nilai m dan c dalam regresi linear dapat ditentukan dengan :


= =
= = =
|
.
|

\
|

|
.
|

\
|
|
.
|

\
|

=
N
n
N
n
n n
N
n
N
n
n
N
n
n n n
x x N
y x y x N
m
1
2
1
2
1 1 1

N
x
m
N
y
x m y c
N
n
n
N
n
n
= =
= =
1 1

Contoh :
VII
Gambar 7.1 Regresi Linier


Avid-06
84
Fisika Komputasi
Carilah fungsi pendekatan linear dari titik-titik data berikut ini :


Jawab :
N = 7

=
=
7
1
28
n
n
x

=
=
7
1
24
n
n
y

=
=
7
1
2
140
n
n
x

=
=
7
1
5 . 119
n
n n
y x
8392857 . 0
28 ) 140 ( 7
) 24 ( 28 ) 5 . 119 ( 7
2
=

= m
4
7
28
= = x 428571 . 3
7
24
= = y
0714282 . 0 ) 4 )( 8392857 . 0 ( 428571 . 3 = = = x m y c
Sehingga persamaan fungsi linear dari titik-titik data tersebut adalah :
0714282 . 0 8392857 . 0 + = x y


Tabel Data hasil Regresi :
x
n
y
n
1 0.5
2 2.5
3 2.0
4 4.0
5 3.5
6 6.0
7 5.5
Gambar 7.2 Fungsi linear hasil regresi


Avid-06
85
Fisika Komputasi














Algoritma Regresi Linier :
1. Tentukan N titik data yang diketahui dalam (xi,yi) untuk i=1,2,3,,N
2. Hitung nilai m dan c dengan menggunakan persamaan dari regresi linier di atas
3. Tampilkan persamaan fungsi linier
4. Hitung fungsi linier tersebut dalam range x dan step dx tertentu
5. Tampilkan hasil tabel (xn,yn) dari hasil fungsi linier tersebut.

7.2 Regresi Eksponensial
Regresi Eksponensial adalah metode untuk mendapatkan fungsi pendekatan yang
berbentuk eksponensial dari sekumpulan titik data (x
n
,y
n
). Regresi Eksponensial
merupakan pengembangan dari regresi linear dengan menggunakan fungsi logaritma. Jika
kita mempunyai fungsi eksponensial :

b ax
e y
+
=
Jika kita mengambil nilai log dari fungsi tersebut maka didapatkan :
) ln( ln
b ax
e y
+
=
b ax y + = ln
Jika dimisalkan :
b ax z + =
maka :
y z ln =
n x
n
y
n
1 1.0 0.910714
2 1.5 1.33036
3 2.0 1.75
4 2.5 2.16964
5 3.0 2.58929
6 3.5 3.00893
7 4.0 3.42857
8 4.5 3.84821
9 5.0 4.26786
10

5.5 4.6875
11 6.0 5.10714
12 6.5 5.52679
13

7.0 5.94643
14 7.5 6.36607
15 8.0 6.78571
16 8.5 7.20536
17 9.0 7.625
18 9.5 8.04464
19 10.0 8.46429


Avid-06
86
Fisika Komputasi
Jadi untuk menentukan fungsi pendekatan eksponensial dalam regresi eksponensial dapat
digunakan metode regresi linear dimana nilai ordinat (y) dari titik diganti dengan z yaitu :
y z ln =
Contoh :
Carilah fungsi pendekatan eksponensial dari titik-titik data berikut ini :


Jawab :
N = 5

=
=
5
1
15
n
n
x

=
=
5
1
93 . 4
n
n
z

=
=
5
1
2
55
n
n
x

=
=
5
1
6425 . 21
n
n n
z x
685 . 0
15 ) 55 ( 5
) 93 . 4 ( 15 ) 6425 . 21 ( 5
2
=

= a
0 . 3
5
15
= = x 986 . 0
5
93 . 4
= = z
069 . 1 ) 3 )( 685 . 0 ( 986 . 0 = = = x a z b
Sehingga persamaan fungsi linear dari titik-titik data tersebut adalah :

069 . 1 685 . 0
=
x
e y


Tabel Data hasil Regresi :
x
n
y
n
z
n
= ln y
n
1 0.5 -0.6931
2 1.7 0.5306
3 3.4 1.2238
4 5.7 1.7405
5 8.4 2.1282
Gambar 7.3 Fungsi Eksponensial hasil regresi


Avid-06
87
Fisika Komputasi








Algoritma Regresi Eksponensial :
1. Tentukan N titik data yang diketahui dalam (xi,yi) untuk i=1,2,3,,N
2. Ubah nilai y menjadi z dengan z = ln y
3. Hitung nilai a dan b dengan menggunakan persamaan dari regresi linier di atas
4. Tampilkan persamaan fungsi eksponensial
b ax
e y
+
=
5. Hitung fungsi eksponensial tersebut dalam range x dan step dx tertentu
6. Tampilkan hasil tabel (xn,yn) dari hasil fungsi eksponensial tersebut.

7.3 Regresi Polinomial
Regresi Polinomial adalah metode untuk mendapatkan fungsi pendekatan yang
berbentuk polinom dari sekumpulan titik data (x
n
,y
n
). Bentuk persamaan dari fungsi
polinomial dinyatakan dengan :

n
n
x a x a x a a y + + + + = ...
2
2 1 0

Regresi polinomial tingkat n dikembangkan dari model matrik normal yaitu :

(
(
(
(
(
(
(
(
(
(

=
(
(
(
(
(
(

(
(
(
(
(
(
(
(
(
(





=
=

= = =
=

= =

=
+
= =

= =
+
=
+
=
n
i
i
n
i
i
n
i
n
i
i
n
i
n
i
i
n
i
n
n
n
n
i
n
i
n
i
i
n
i
i
n
i
n
i
n
i
n
i
n
i
n
i
n
i
n
i
n
i
n
i
n
i
n
i
n
i
n
i
n
i
n
i
n
i
n
i
n
i
n
i
n
i
n
i
n
i
n
i
y
y x
y x
y x
a
a
a
a
x x x n
x x x x
x x x x
x x x x
1
1
2
1
1
1
0
2
1
1 1
2
1
1
2 2
1 1
1
1
2
1
1 2
1
1
1 1
1
1
2
1
2
1
1
1
...
...
...
... ... ... ... ...
...
...
...

Hasil dari model matrik normal tersebut adalah nilai-nilai dari a
0
,a
1
,a
2
,...a
n
.
Contoh :
Carilah fungsi pendekatan polinomial dari titik-titik data berikut ini :
n x
n
y
n
1 1.0 0.6811
2 1.5 0.9593
3 2.0 1.3512
4 2.5 1.9031
5 3.0 2.6805
6 3.5 3.7754
7 4.0 5.3175
8 4.5 7.4895
9 5.0 10.5487
10

5.5 14.8574


Avid-06
88
Fisika Komputasi


Jawab :
n = 6

=
=
6
1
15
i
i
x 5 . 2 = x

=
=
6
1
6 . 152
i
i
y 433 . 25 = y

=
=
6
1
6 . 585
i
i i
y x

=
=
6
1
2
8 . 2488
i
i i
y x

=
=
6
1
2
55
i
i
x

=
=
6
1
3
225
i
i
x

=
=
6
1
4
979
i
i
x
(
(
(

=
(
(
(

(
(
(

8 . 2488
6 . 585
6 . 152
979 225 55
225 55 15
55 15 6
2
1
0
a
a
a

(
(
(

=
(
(
(

86071 . 1
35929 . 2
47857 . 2
2
1
0
a
a
a

Sehingga persamaan fungsi polinomial dari titik-titik data tersebut adalah :

2
86071 . 1 35929 . 2 47857 . 2 x x y + + =


Tabel Data hasil Regresi :
x
i
y
i
0 2.1
1 7.7
2 13.6
3 27.2
4 40.9
5 61.1
Gambar 7.3 Fungsi polinomial hasil regresi


Avid-06
89
Fisika Komputasi








Algoritma Regresi Eksponensial :
1.Tentukan N titik data yang diketahui dalam (xi,yi) untuk i=1,2,3,,N
2.Hitung nilai-nilai yang berhubungan dengan jumlahan data untuk mengisi matrik
normal
3.Hitung nilai koefisien-koefisien a0, a1, a2, , an dengan menggunakan eliminasi
gauss/jordan
4. Tampilkan persamaan fungsi polinomial
n
n
x a x a x a a y + + + + = ...
2
2 1 0

5. Hitung fungsi polinomial tersebut dalam range x dan step dx tertentu
6. Tampilkan hasil tabel (xn,yn) dari hasil fungsi polinomial tersebut.


















i x
i
y
i
1 1.0 6.69857
2 1.5 10.2041
3 2.0 14.64
4 2.5 20.0062
5 3.0 26.3028
6 3.5 33.5298
7 4.0 41.6871
8 4.5 50.7748
9 5.0 60.7928
10

5.5 71.7411


Avid-06
90
Fisika Komputasi

You might also like