Page 1
© Avid-06 1
Fisika Komputasi
DDEERREETT TTAAYYLLOORR
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 x0 yang berdekatan dengan titik x diketahui.
Uraian deret Taylor disekitar xo dinyatakan dengan f(x) yaitu :
nn
xxn
xfxf )(
!
)()( 0
0
)(
…………………………………………..(1.1)
dimana,
0
)( 0
)(
xxn
nn
dx
fdxf …………………………………………………...(1.2)
)()( 00
)0( xfxf ………………………………………………………(1.3)
1.2 Deret Mac Laurin
Deret Mac Laurin adalah bentuk khusus dari deret Taylor. Dimana dianggap
bahwa titik x0 = 0 sehingga persamaan 1.1 akan berubah menjadi :
nn
xn
fxf
!
)0()(
)(
…………………………………………………..(1.4)
dimana,
0
)( )0( xn
nn
dx
fdf ……………………………………………………...(1.5)
)0()0()0( ff ………………………………………………………….(1.6)
Persamaan (1.4) adalah persamaan dari deret Mac Laurin. Persamaan (1.1) biasa
dituliskan dengan mensubstitusikan x dengan x-x0, sehingga :
nn
xn
xfxxf )(
!
)()( 0
)(
0 …………………………………………..(1.7)
Sehingga Persamaan deret Mac Laurin akan menjadi :
nn
xn
fxf )(
!
)0()(
)(
…………………………………………...........(1.8)
Contoh :
Hitunglah deret Mac Laurin untuk Sin(x)
I
Page 2
© Avid-06 2
Fisika Komputasi
Jawab :
f(x) = sin(x) ; f(0) = 0
f1(x) = cos(x) ; f
1(0) = 1
f11
(x) = -sin(x) ; f11
(0) = 0
f111
(x) = -cos(x) ; f111
(0) = -1
f1V
(x) = sin(x) ; f1V
(0) = 0
fV(x) = cos(x) ; f
V(0) = 1
Dari deret Mac Laurin :
nn
xn
fxf )(
!
)0()(
)(
...!5
)0(
!4
)0(
!3
)0(
!2
)0(
!1
)0(
!0
)0( 5)(4)1(3)111(2)11(1)1(0)0(
xfxfxfxfxfxf VV
Sehingga Sin(x) menjadi :
...!5
.1
!4
.0
!3
.1
!2
.0
!1
.1
!0
1.0 5432
xxxxx
...!7!5!3
753
xxx
x
Latihan :
1. Buat deret Mac Laurin untuk fungsi cos(x) dan tan(x)
2. Buat deret Taylor untuk ex 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;
Page 3
© 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;
}
Page 4
© Avid-06 4
Fisika Komputasi
Latihan :
1. Buatlah program komputer dari deret MacLaurin untuk fungsi exp(x) :
...!3!2
1)exp(32
xx
xx
2. Buatlah program komputer dari deret MacLaurin untuk fungsi cos(x) :
...!6!4!2
1)cos(642
xxx
x
Page 5
© Avid-06 5
Fisika Komputasi
AKKAARR--AAKKAARR PPEERRSSAAMMAAAANN
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 Memperkirakan Letak Akar
Jika diberikan fungsi f(x) dengan letak akar di x0 seperti di gambar 2.4. Untuk
menentukan letak dari akar fungsi f(x) dapat ditempuh langkah - langkah sbb :
f(x)
x x0
akar f(x)
P1
V
V1
P
saat P=P1 berapa nilai V
1
x x=?
f(x)
saat f(x)=0 berapa nilai x
f(x)
V(t)
II
Page 6
© 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 x1
-tentukan titik lain misal x2, dimana x2 = x1- h
-bila f(x1) x f(x2) > 0 , berarti x1 dan x2 berada pada pihak yang sama terhadap x0.
-tentukan titik lain misal : x3 = x2-h
-bila f(x2) x f(x3) > 0 , berarti x2 dan x3 berada pada pihak yang sama terhadap x0.
Gambar 2.5. Perkiraan akar dari persamaan f(x)
-penentuan titik-titik diteruskan sampai diperoleh : f(xa) x f(xb) < 0 (negatif)
Gambar 2.6. Perkiraan akar dari persamaan f(x)
-sehingga daerah pencarian akar-akar akan dipersempit diantara xa dan xb
-langkah-langkah diatas diulang pada daerah : ba xxx
x x0
f(x)
x x0
f(x)
x2 x1
h
f(x2) f(x1)
x1 dan x2 sama-sama
berada disebelah kanan x0
x x0
xa xb
f(x) xa dan xb terletak
berseberangan terhadap titik
potong x0
xa berada di sebelah kiri x0
xb berada di sebelah kanan x0
Page 7
© Avid-06 7
Fisika Komputasi
catatan :
Bila kita menentukan suatu arah dan sampai batas daerah tertentu tidak ditemukan
titik potong (x0), 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) = x3-11x
2 + 39x – 45
untuk 75.0,60 hx
n xn f(xn) xn-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 x0 dinyatakan :
nn
xxn
xfxf )(
!
)()( 0
0
)(
...!2
))((
!1
))((
!0
)( 2
00
)11(1
00
)1(0
0
)0(
xxxfxxxfxxf
2.2.1 Metode Newton-Rapshon orde-1
Uraian deret Taylor dari fungsi f(x) di sekitar x0 sampai suku dengan turunan
pertama dinyatakan :
f(x) = f(x0) + f1(x0)(x-x0)
Jika x disubstitusikan dengan xn+1 dan x0 disubstitusikan dengan xn maka :
f(xn+1) = f(xn) + f1(xn)(xn+1-xn)………………………...……………………….(2.1)
Bila xn+1 adalah akar dari f(x) maka f(xn+1) = 0. Sehingga persamaan 2.1 akan menjadi :
orde -1
orde -2
Page 8
© Avid-06 8
Fisika Komputasi
)(
)('1
n
nnn
xf
xfxx ……………………………………………………………..(2.2)
Persamaan 2.2 disebut dengan persamaan iterasi Newton-Rapshon orde-1. Nilai xn+1 dapat
dicari dari xn (suatu titik dapat dicari dari titik sebelumnya). Jadi bila suatu titik awal x0
diketahui maka dengan persamaan 2.2 dapat dicari x1, x2, dan seterusnya sampai
ditemukan akar dari persamaan atau fungsi yang bersangkutan (nilai x yang menyebabkan
f(x) = 0). Penentuan x0 memegang peranan yang amat penting karena cepat lambatnya
penentuan akar ditentukan oleh pengambilan titik awal x0. Penentuan titik awal x0 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) = x3 – 11x
2 + 39x – 45 dengan metode Newton-Rapshon
orde-1.
Jawab :
f1(x) = 3x
2 –22x + 33
misal kita ambil titik awal x0 = 6
n xn f(xn) f1(xn) xn+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 x4 = x5 =
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)
nn
xxn
xfxf )(
!
)()( 0
0
)(
!2
))((
!1
))((
!0
)( 2
00
)11(1
00
)1(0
0
)0( xxxfxxxfxxf
dengan mensubstitusi x dengan xn+1, dan x0 dengan xn didapatkan
Page 9
© Avid-06 9
Fisika Komputasi
!2
))(())(()()(
2
1
11
1
1
1
nnnnnnnn
xxxfxxxfxfxf
Jika xn+1 akar dari f(x) maka
f(xn+1) = 0
)(
)(11
n
nnn
xf
xfxx
Sehingga
)(
)(
2
))(())(()(0
1
2
1
11
1
1
n
nnnn
nnnnxf
xfxxxfxxxfxf
)()(2
)()())(()(0 11
11
1
1
nn
n
nnnnnn xx
xf
xfxfxxxfxf
)(2
)()()()()(0
1
11
1
1
n
nn
nnnnxf
xfxfxfxxxf
)(2
)()()(
)(
'
''
'
1
n
nn
n
nnn
xf
xfxfxf
xfxx
)(2
)()()(
)(
'
''
'
1
n
nn
n
nnn
xf
xfxfxf
xfxx
…………………………………………….(2.3)
Persamaan 2.3 merupakan persamaan iterasi Newton-Rapshon orde-2.
Contoh :
1. Tentukanlah akar f(x) = x3 – 11x
2 + 39x – 45 dengan metode Newton-Rapshon
orde-2.
Jawab :
f1(x) = 3x
2 –22x + 33 ; f
11(x) = 6x - 22
misal kita ambil titik awal x0 = 6
N xn F(xn) f1(xn) f
11(xn) xn+1
0 6,000 9,000 15,000 14,000 5,167
1 5,167
2
3
4
Page 10
© Avid-06 10
Fisika Komputasi
2. Satu mole gas ideal suhunya 3000 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 0K )
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
1569,24
)(atau1569,24
x
xfV
P
sehingga 2
1 69,24)(
xxf
Dengan iterasi Newton-Rapshon orde-1
)(
)('1
n
nnn
xf
xfxx
misal x0 = 1,5
n xn f(xn) f1(xn) xn+1
0 1,500
1
2
P1=15
V
V1=?
P
x
f(x)
f(x)1=15
x1=?
Page 11
© Avid-06 11
Fisika Komputasi
x=? 0 x
y1=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
SinII
dimana,
I0 = 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/I0 disubstitusi menjadi y dan β disubstitusi menjadi x maka :
2
2sin
x
xy
karena yang dicari adalah nilai x saat y = ½ (I / I0 = ½ atau I = ½ I0 )
Jadi persamaan yang dicari solusinya adalah :
5,0sin
2
2
x
xy
Untuk mendapatkan titik potong f(x) dengan sumbu x maka dipakai iterasi Newton-
Rapshon orde-1.
Page 12
© Avid-06 12
Fisika Komputasi
5,0sin
)(2
2
x
xxf
2
2
3
21 sinsin2
)(x
x
x
xxf
misal x0 = 1,25
n xn f(xn) f1(xn) xn+1
0 1,250
1
2
Dari perhitungan didapatkan titik potong x = 1,39155738 sehingga
sinsin
2
1392,1 bkb
4,0.
10.9,5.392,1sin
4
2.3 Akar – Akar Dari Polinom
Bentuk Umum Polinom adalah :
01
2
2
1
1 ...)( aaxaxaxaxf n
n
n
n
n
n
………………………..(2.4)
contoh :
3 ordepolinom453311)( 23 xxxxf
2-orde polinom82)( 2 xxxf
2.3.1 Pembagian Sintetik
adalah metode untuk mencari nilai fungsi f(x) dan nilai turunan fungsi f1(x).
Adapun langkah-langkahnya adalah :
1.Tuliskan koefisien-koefisien polinom dengan urutan :
021 ... aaaa nnn
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.
021 ... aaaax nnn
Page 13
© Avid-06 13
Fisika Komputasi
3.Selang satu baris dari deretan koefisien tersebut buat garis lurus sebagai garis
penjumlahan.
021 ... aaaax nnn
4.Turunkan an hingga ke bawah garis penjumlahan. Sebut an dengan bn.
021 ... aaaax nnn
nb
5.Kalikan x dengan bn dan letakkan hasilnya diatas garis penjumlahan tepat di bawah an-1.
Jumlahkan an-1 dengan hasil kali tadi dan letakkan hasilnya di bawah garis penjumlahan,
satu kolom dengan an-1. Beri nama hasil penjumlahan tadi dengan bn-1
021 ... aaaax nnn
nb
6.Kalikan x dengan bn-1 dan letakkan hasilnya diatas garis penjumlahan di bawah an-2.
Jumlahkan an-2 dengan hasil kali tadi dan letakkan hasilnya di bawah garis penjumlahan,
satu kolom dengan an-2. Beri nama hasil penjumlahan tadi dengan bn-2
021 ... aaaax nnn
7.Lakukan operasi yang sama untuk koefisien-koefisien yang lain sehingga di bawah garis
penjumlahan akan didapatkan deretan :
021 ... bbbb nnn
8.Nilai b0 merupakan nilai fungsi f(x) yang dicari.
Jika pembagian sintetik dilanjutkan untuk deretan
021 ... bbbb nnn
maka akan didapatkan nilai dari turunan f1(x).
Jika langkah-langkah tersebut diatas dirangkum maka akan tampak seperti berikut ini :
321 nnnn aaaax
)()()( 21 xbxbxb nnn
321 nnnn bbbb
+
+
+ nbx.
1
1 ).(
n
nn
b
bxa
+
1nb
2
12 ).(
n
nn
b
bxa
nb
1. nbx
+
Page 14
© Avid-06 14
Fisika Komputasi
dimana,
nn ab
xbab nnn 11
xbab nnn 122
xbab nnn 233
Nilai 3nb 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 321 ,,, nnnn aaaa diganti dengan nilai 21, , nnn bbb .
21 nnn bbbx
)()( 1xcxc nn
21 nnn ccc
dimana,
nn bc
xcbc nnn 11
xcbc nnn 122
Nilai dari 2nc merupakan nilai turunan dari persamaan f(x) pada x yang bersangkutan.
Contoh :
Misalkan kita memiliki persamaan polinom orde 3 yaitu :
453911)( 23 xxxxf
Tentukan nilai fungsi dan turunannya untuk x=2
Jawab :
-Secara Analitik :
Untuk x = 2 maka f(2) = -3 dan f1(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
+
Page 15
© 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) = x3 – 6x
2 + 11x – 6
2. Tentukan akar dari persamaan : f(x) = x2 - 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 :
453911)( 23 xxxxf
)5)(3)(3( xxx
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 fn(x) maka langkah-langkah mencari akar adalah :
1.Tentukan akar fn(x) paling kanan dengan metode Newton-Rapshon. Misalkan akar
tersebut adalah x = x1
2.Bagi fn(x) dengan (x-x1), hasilnya polinom yang ordenya lebih rendah 1 tingkat yaitu :
fn-1(x)
3.Tentukan akar paling kanan fn-1(x) dengan Newton-Rapshon. Misalkan akar tersebut
adalah x=x2
4.Bagi fn-1(x) dengan (x-x2). Hasilnya adalah polinom yang ordenya lebih rendah 2
tingkat dari semula yaitu fn-2(x)
5.Langkah diteruskan sampai didapatkan polinom orde-1
contoh :
453911)( 23 xxxxf
3orde polinom)5)(3)(3( xxx
-bagilah f(x) dengan (x-5) hasilnya :
2-orde polinom)3)(3()( xxxf
-bagi f(x) dengan (x-3) hasilnya :
Page 16
© Avid-06 16
Fisika Komputasi
1-orde polinom)3()( xxf
Adapun langkah – langkah membagi suatu polinom orde-n dengan polinom orde -1
adalah :
1.Tuliskan koefisien-koefisien dari polinom semula
an an-1 an-2 … a0
2.Lakukan pembagian sintetik untuk suatu nilai x (x didapat dari Newton-Rapshon)
sehingga didapatkan :
bn bn-1 bn-2 … b0
b0 = 0 = nilai fungsi
3.Ubah bn menjadi an-1, bn-1 menjadi an-2, … b1 menjadi a0
Setelah langkah ke-3 maka akan didapatkan koefisien-koefisien polinom baru yang
ordenya 1 tingkat lebih rendah yaitu :
an-1 an-2 … a0
Jika langkah tersebut dilanjutkan sampai didapatkan koefisien-koefisien polinom orde-
1, maka akar terakhir akan didapatkan dari polinom orde 1 ini.
Contoh :
3-orde 453911)( 23 xxxxf
Langkah-langkah :
1. a3 a2 a1 a0
1 -11 39 -45
2. 5 1 -11 39 -45 x = 5
5 -30 45
1 -6 9 0
3. 2 -orde 96)( 2 xxxf
sehingga a2 = 1
a1 = -6
a0 = 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)( xxf
sehingga a1 = 1
Page 17
© Avid-06 17
Fisika Komputasi
a0 = -3
Jadi akar-akar dari fungsi tsb adalah :
x1 = 5
x2 = 3
x3 = 3
2.4 Program Komputer
1) Program komputer iterasi Newton-Rapshon orde 1, dimana persamaan yang dicari
akarnya adalah :
453911)( 23 xxxxf
//**********************************************************************************
// 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
Page 18
© 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;
Page 19
© 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 :
453911)( 23 xxxxf
// **********************************************************************
// 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
Page 20
© 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 3000 K volumenya diperbesar pada suhu tetap. Berapa liter volume
gas tersebut ketika tekanannya 15 atmosfir (tetapan gas universal 0,0823 l.atm/mole0 K).
Petunjuk :
pV = nRT
Dimana, n=1 mole, R=0.0823 l.atm/mole0K, dan T=300
0K. 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
Page 21
© 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
SinII
dimana, I0 intensitas cahaya yang datang dan sin2
1kb . Jika kita mensubstitusikan
I/I0 menjadi y dan menjadi x maka persamaan tersebut akan menjadi
2
2sin
x
xy
untuk mendapatkan nilai dimana I/I0 = 0.5 maka persamaan tersebut diubah menjadi :
5.0sin
2
2
x
xy
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];
Page 22
© 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);
Page 23
© 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++
Page 24
© 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;
}
Page 25
© 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 V0 = 100 m/s dan sudut elevasi = 450.
Percepatan grafitasi g = 9,8 m/dt 2 .Tentukan berapa jauh peluru akan melayang di udara.
Petunjuk :
Persamaan lintasan peluru dinyatakan dengan :
xxv
gy )(tan
)cos(2
2
2
0
atau bisa ditulis menjadi polinom orde-2 yaitu :
xaxay 1
2
2
dimana,
13
2
0
2 10.1)cos(2
mv
ga
1tan1 a
00 a
Dengan memakai iterasi Newton-Rapshon yang dikombinasikan dengan metode
pembagian Sintetik maka solusi permasalahan diatas akan dapat dicari. Buat program
komputernya.
Page 26
© Avid-06 26
Fisika Komputasi
INNTTEEGGRRAALL DDAANN DDIIFFEERREENNSSIIAALL
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
dxxfI )( …………………………………………………………...(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(xi) dan lebarnya x , sehingga
luas masing-masing pita dapat dinyatakan :
xxfL ii )( …………………..……………………………………………..(3.2)
Karena antara x = a dan x = b terdapat n buah pita maka luas seluruhnya menjadi :
n
i
xxifL1
)( ………………………………………………………………...(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
III
Page 27
© 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 seperti diperlihatkan dalam
gambar 3.2 .
Dari gambar 3.2 maka luas pita ke-i yang terletak antara xi dan xi+1 adalah :
)]()([2
11 iii xfxfxA
Sehingga untuk n buah pita maka luas seluruhnya menjadi :
)]()([2
1...)]()([
2
1)]()([
2
113221 nn xfxfxxfxfxxfxfxA
karena f(x1) = f(a) dan f(xn+1) = f(b) maka persamaan tersebut menjadi :
)]()(2...)(2)(2)(2)([2
1432 bfxfxfxfxfafxA n ……………(3.4)
contoh :
Jika diketahui panas jenis suatu zat seperti tabel berikut ini :
t ( 0C ) c (kkal/kg
0C)
-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
xi xi+1
f(xi) f(xi+1)
Pita ke-i
Pita ke-1 Pita ke-n
Page 28
© Avid-06 28
Fisika Komputasi
Tentukan panas yg diperlukan untuk memanaskan 1 kg zat dari –1000C - 200
0C.
Jawab:
a) Metode Persegi Panjang
n ∆x f(xn) Luas(Ln)
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(xn) f(xn+1) Luas(Ln)
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 – 6x5
Adapun program komputernya adalah seperti berikut ini :
//*******************************************************
//Menghitung integral dengan metode Trapesium
//Compiler : Visual C++
//*******************************************************
#include <iostream.h>
Page 29
© 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;
Page 30
© 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
Page 31
© 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 Simpson
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 xi+1 ditempatkan di x = 0
sehingga xi berada di x = -∆x serta xi+2 berada di x = ∆x.
Jika persamaan parabola yang dipakai adalah :
01
2
2)( axaxaxf ………………………………………………………..(3.5)
maka luas pasangan pita di bawah parabola :
dxaxaxaA
x
x
i
)( 01
2
2 …………………………………………………....(3.6)
xaxaxa 0
2
1
3
22
1
3
1
xaxa 0
3
2 23
2…………………………………………………………..(3.7)
Nilai fungsi pada ketiga titik tersebut adalah :
01
2
2 )()()( axaxaxf i ……………………………………………...(3.8)
01)( axf i ……………………………………………………………………(3.9)
01
2
22 )()()( axaxaxf i ……………………………………………...(3.10)
Dari persamaan (3.8), (3.9), dan (3.10) maka didapatkan koefisien-koefisien :
2
212
2
)()(2)(
x
xfxfxfa iii
……………………………………………..(3.11)
x
xfxfa ii
2
)()( 21 ……………………………………………………….…(3.12)
)( 10 ixfa …………………………………………………………………..(3.13)
Page 32
© Avid-06 32
Fisika Komputasi
Sehingga persamaan (3.7) menjadi :
)]()(4([3
121 iiii xfxfxfxA …………………………………………(3.14)
Maka luas semua pasangan pita adalah :
)]()(4([3
1321 xfxfxfxA
...)]()(4([3
1543 xfxfxfx
)]()(4([3
112 nnn xfxfxfx ……………………………………....(3.15)
atau
...)(4)(4)(4)([3
18621 xfxfxfxfxA
)](...)(2)(2)(2 753 nxfxfxfxf ………………………………(3.16)
contoh :
1)Jika diketahui panas jenis suatu zat seperti tabel berikut ini :
t ( 0C ) c (kkal/kg
0C)
-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 –1000C sampai
200 0C.
Jawab:
n ∆x f(xn) f(xn+1) f(xn+2) Luas(Ln)
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
Page 33
© 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 :
dABd .
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
iB
2
0
Maka
r
driLdrL
r
id
22
00
09,0
01,0
10
2dr
iLr
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 – 6x5
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
Page 34
© 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
Page 35
© 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' xfhxfhxhfxfhxf …………………..(3.17)
...)(6
1)(
2
1)()()( '''3''2' xfhxfhxhfxfhxf .....…………………..(3.18)
3.2.1 Turunan Pertama
Page 36
© 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'
xfh
h
hxfhxfxf .......…………………………...(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
hxfhxfxf
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
''
xfhh
hxfxfhxfxf 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
hxfxfhxfxf
………………………………………(3.22)
Kedua metode untuk mencari turunan diatas disebut dengan metode Beda Sentral
(central difference).
Contoh :
1.Tentukan turunan pertama dari fungsi y = x2 saat x = 1
jawab :
h
hxfhxfxf
2
)()()('
a)Secara analitik
221
xdx
dy
x
b)Secara Numerik (Metode Beda Sentral)
Page 37
© Avid-06 37
Fisika Komputasi
h = 1 ; hn+1 = hn / 2
n hn f(x+h) f(x-h) f1(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 = x2 + x saat x = 1
Jawab :
Turunan Pertama :
a)Secara analitik
3121
xdx
dy
x
b)Secara Numerik (Metode Beda Sentral)
h = 1 ; hn+1 = hn / 2
n hn f(x+h) f(x-h) f1(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
21
xdx
dy
b)Secara Numerik (Metode Beda Sentral)
h = 1 ; hn+1 = hn / 2
n hn f(x) f(x+h) f(x-h) f11
(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 :
Page 38
© Avid-06 38
Fisika Komputasi
f(x) = x2– 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; }
Page 39
© 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) = x3– 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 //*****************
Page 40
© 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[)( / mctec
gmtv
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[)( / mctec
gmtv
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.
Page 41
© Avid-06 41
Fisika Komputasi
MEENNYYEELLEESSAAIIKKAANN PPEERRSSAAMMAAAANN DDIIFFEERREENNSSIIAALL BBIIAASSAA
4.1 Solusi Persamaan Diferensial dengan syarat awal
Misalkan kita memiliki persamaan diferensial seperti di bawah ini :
)1.4......(......................................................................02
2
kmdt
dxr
dt
xdm
secara analisis maka solusi dari persamaan tersebut adalah :
kmruntuktAex t 4,)sin( 0
kmruntuketBBx t 4,)( 21
kmruntukeCeCxtt
4,21
21
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 :
54)(' xxf
solusi secara analisis matematik dari persamaan ini adalah :
54)(
xdx
xdf
Cxxdxxxf 5254)( 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 :
652)( 2 xxxf
misal kita masukkan nilai x = 2 maka solusi dari persamaan diferensial tersebut adalah :
12)2( f
Jadi dapat disimpulkan bahwa solusi dari persamaan diferensial 54)(' xxf 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
Page 42
© Avid-06 42
Fisika Komputasi
4.2 Metode Euler
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)()()( 32''' hxfhxfhxfxfhxf
Jika diambil sampai suku h pangkat 1 maka persamaan tersebut menjadi :
hxfxfhxf )()()( '
dimana dalam Persamaan Diferensial Biasa )(' xf dapat ditulis menjadi :
),()(' yxfxf
sehingga persamaan diatas menjadi :
hyxfxfhxf ),()()(
persamaan ini bisa ditulis dalam bentuk iterasi :
)2.4........(......................................................................),(1 hyxfyy ii
persamaan ini sering disebut dengan iterasi Euler orde 1. Jika kita menentukan syarat
awal adalah titik (x0,y0) dan kita menginginkan solusi persamaan diferensial di titik xp
maka kita harus membagi selang antara x0 dan xp menjadi n buah pita yang masing-
masing lebarnya h sehingga diperoleh titik-titik x0, x1, x2, …xp.
Dari syarat awal yaitu titik (x0,y0) maka dengan rumus iterasi Euler kita dapat
menentukan y1 dengan absis x1 = x0 + h. Selanjutnya dari titik (x1,y1) kita dapat
menentukan y2 dengan absis x2 = x1 + h. Demikian seterusnya sampai didapatkan yp yang
absisnya adalah xp. Dengan demikian nilai yp merupakan solusi dari persamaan diferensial
pada titik xp.
Contoh :
Hitunglah solusi persamaan diferensial berikut pada x = 2:
54 xdx
dy ,dimana syarat awal (x0,y0) = (1,1)
Jawab :
Jika kita membagi antara x=1 dan x=2 menjadi 10 pita maka lebar masing-masing
pita (h) adalah :
Page 43
© Avid-06 43
Fisika Komputasi
1.010
1212
pita
xxh
hyxfyy ii ),(1
9.19.011,0).51.4(1).5.4( 001 hxyy
84.294.09.11,0).5)1.1.(4(9.1).5.4( 112 hxyy
hasil selengkapnya dapat dilihat dalam tabel berikut ini.
i xi yi f(x,y) yi+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 (t0)
benda berada pada posisi x = 3.7
Jawab :
)(tvdt
dx
Iterasi Euler orde 1 :
5.0;)(1 hhtvxx ii detik
Page 44
© Avid-06 44
Fisika Komputasi
Awal t0 = 0.5, x0 = 3.7
Saat i = 0 , htvxx )(01
85.105.77.3)5.0).(3.14(7.31 x
05.2420.1385.10)5.0).(4.26(85.102 x
hasil selanjutnya dapat dilihat dalam tabel di bawah ini :
i ti xi v(t) xi+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 :
ydx
dy
pada saat x = 2 dan syarat awal adalah (0,1)
2.Tentukan solusi persamaan diferensial :
f ‘(x) = x2 + 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>
Page 45
© 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 (x0,y0) = (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
Page 46
© 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)(')()( 2hxfhxfxfhxf
dimana
),()(' yxfxf
),(),(),(),(')('' yxfyxfyxfyxfxf yx
persamaan (4.3) dapat dinyatakan dalam bentuk iterasi :
)4.4.......(............................................................),('2
1),( 2
1 hyxfhyxfyy ii
Persamaan ini disebut sebagai iterasi Euler orde 2.
4.2.4 Program komputer Metode Euler 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;
Page 47
© 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 (x0,y0) = (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 hyxfyy nnnn
dimana
mmnn kakakahyxf ...),,( 2211
nn xxh 1
dengan
),(1 nn yxhfk
11112 ,( kqyhpxhfk nn
),( 22212123 kqkqyhpxhfk nn
.........
11,122,111,11 ...,( mmmmmnmnm kqkqkqyhpxhfk
4.3.1 Runge-Kutta orde 1
Page 48
© Avid-06 48
Fisika Komputasi
Jika diambil m = 1 maka akan menghasilkan iterasi Runge-Kutta orde 1 yaitu :
)6.4........(..........................................................................................111 kayy nn
)7.4.....(......................................................................).........,(11 nnnn yxhfayy
karena 11),,( kahyxf nn dan ),(1 nn yxhfk . Dengan mengambil 11 a maka persamaan
(4.7) sama dengan persamaan iterasi Euler orde-1 yaitu :
),(1 nnnn yxhfyy
4.3.2 Runge-Kutta orde 2
Jika diambil m = 2 maka akan menghasilkan iterasi Runge-Kutta orde 2 yaitu :
)8.4.......(................................................................................22111 kakayy nn
dimana
),(1 nn yxhfk
),( 11112 kqyhpxhfk nn
jadi dalam hal ini kita perlu menentukan nilai-nilai dari 11121 dan,,, qpaa . Untuk
mendapatkan nilai dari konstanta-konstanta tersebut maka pertama-tama kita lihat uraian
deret Taylor sampai orde 2 yaitu :
)8.4.(..................................................),(''2
1)(')()( 2hyxfhxfxfhxf
dimana
),()(' yxfxf
),(),(),(),(')('' yxfyxfyxfyxfxf yx
sehingga persamaan (4.7) menjadi :
)9.4(....................),(),(),(2
1),()()( 2hyxfyxfyxfhyxfxfhxf yx
Jika dinyatakan dengan rumus iterasi maka persamaan (4.8) menjadi :
)10.4..(....................),(),(),(2
1),( 2
1 hyxfyxfyxfhyxfyy nnnnynnxnnnn
untuk k2 jika diuraikan dalam deret Taylor akan menjadi :
hkqyxfhpyxfyxfk nnynnxnn 11112 ),(),(),(
sehingga rumus iterasi (persamaan (4.10)) menjadi :
2
12211 ),(),(),( hpayxfhayxfhayxfyy nnxnnnnnn
2
112),(),( hqayxfyxf nnnny
),(),(),(),(),( 1221 nnnnynnxnnnnn yxfyxfpayxfhayxfayxfy
)11.4.......(..........................................................................................2
112 hqa
Page 49
© Avid-06 49
Fisika Komputasi
dari persamaan (4.10) dan (4.11) didapatkan :
)12.4....(....................................................................................................121 aa
)13.4......(....................................................................................................21
12 pa
)14.4.....(....................................................................................................21
112 qa
a) Metode Heun
Dalam metode ini diambil nilai dari konstanta :
21
21 aa
1111 qp
Sehingga persamaan iterasi Runge-Kutta orde 2 menjadi :
)15.4.....(................................................................................221
121
1 kkyy nn
dimana
),(1 nn yxhfk
),( 12 kyhxhfk nn
b) Metode Raltson
Dalam metode ini diambil nilai dari konstanta :
31
1 a 32
2 a
43
111 qp
Sehingga persamaan iterasi Runge-Kutta orde 2 menjadi :
)16.4.....(......................................................................).........2( 2131
1 kkyy nn
dimana
),(1 nn yxhfk
),( 143
43
2 kyhxhfk nn
c) Metode Poligon
Dalam metode ini diambil nilai dari konstanta :
01 a 12 a
21
111 qp
Sehingga persamaan iterasi Runge-Kutta orde 2 menjadi :
)17.4.........(..........................................................................................21 kyy nn
dimana
),(1 nn yxhfk
),( 121
21
2 kyhxhfk nn
Contoh :
Page 50
© Avid-06 50
Fisika Komputasi
Hitunglah solusi persamaan difrensial berikut pada x = 2 dengan metode Heun:
54 xdx
dy
dimana syarat awal (x0,y0) = (1,1)
Jawab :
Jika kita membagi antara x=1 dan x=2 menjadi 10 pita maka lebar masing-masing
pita (h) adalah :
1.010
1212
pita
xxh
221
121
1 kkyy nn
dimana
),(1 nn yxhfk
),( 12 kyhxhfk nn
sehingga :
221
121
01 kkyy
9.0)51.4(1.0)5.4.(1.0 01 xk
94.0)4.9(1.0)5)1.01.(4(1.0)5).(4.(1.0 02 hxk
jadi
)94.0()9.0(121
21
221
121
01 kkyy
92.147.045.011 y
hasil selengkapnya dapat dilihat dalam tabel berikut ini.
i xi yi k1 k2 yi+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
Page 51
© 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]; }
Page 52
© 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 (x0,y0) = (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;
Page 53
© 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; }
Page 54
© Avid-06 54
Fisika Komputasi
Coba jalankan program tersebut dan berikan masukan syarat awal (x0,y0) = (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)
Page 55
© 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 (x0,y0) = (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( 32161
1 kkkyy nn
dengan
),(1 nn yxhfk
),( 121
21
2 kyhxhfk nn
)2,( 213 kkyhxhfk nn
4.3.5 Program Komputer Runge-Kutta orde 3
Page 56
© 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):
Page 57
© 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 (x0,y0) = (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.......(..................................................).........22( 432161
1 kkkkyy nn
dengan
),(1 nn yxhfk
),( 121
21
2 kyhxhfk nn
),( 221
21
3 kyhxhfk nn
),( 34 kyhxhfk nn
Page 58
© 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)
Page 59
© 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 (x0,y0) = (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.
Page 60
© Avid-06 60
Fisika Komputasi
MEENNYYEELLEESSAAIIKKAANN SSIISSTTEEMM PPEERRSSAAMMAAAANN LLIINNEEAARR
5.1 Sistem Persamaan Linear
Persamaan Linear adalah suatu fungsi atau persamaan dimana pangkat tertinggi
dari variabel-variabelnya adalah 1, misalnya :
kczbyax
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 :
73 zyx
15344 zyx
25285 zyx
Atau persamaan diatas bisa ditulis :
73 321 xxx
15344 321 xxx
25285 321 xxx
Tampak dalam sistem persamaan linear diatas banyaknya persamaan dan variabel adalah
sama yaitu 3.
Secara umum sistem persamaan linear dinyatakan dengan :
11313212111 ... bxaxaxaxa nn
22323222121 ... bxaxaxaxa nn
33333232131 ... bxaxaxaxa nn .................................................................(5.1)
..........................................................
mnmnmmm bxaxaxaxa ...332211
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
Page 61
© Avid-06 61
Fisika Komputasi
adalah mencari nilai xi (i = 1,2,...,n). Sistem persamaan linear (5.1) dapat dinyatakan
dalam bentuk matrik yaitu :
mnmnmm
n
n
b
b
b
x
x
x
aaa
aaa
aaa
......
...
............
...
...
2
1
2
1
21
22221
11211
..........................................................(5.2)
Atau bisa dinyatakan dengan :
Ax = B
Dimana :
A =
mnmm
n
n
aaa
aaa
aaa
...
............
...
...
21
22221
11211
, x =
nx
x
x
...
2
1
, dan B =
mb
b
b
...
2
1
Matrik A disebut matrik koefisien atau matrik Jacobian. Vektor x disebut sebagai
vektor variabel dan vektor B disebut sebagai vektor Konstanta.
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 :
mmnmm
n
n
b
b
b
aaa
aaa
aaa
...
...
............
...
...
2
1
21
22221
11211
.........................................................................(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 :
x1 = jumlah boneka A
Page 62
© Avid-06 62
Fisika Komputasi
x2 = 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 x1 + 8 x2 = 82
6 x1 + 8 x2 = 62
Penyelesaian dari persamaan tersebut adalah nilai x1 dan x2 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 bn ≠ 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 :
Page 63
© Avid-06 63
Fisika Komputasi
mmnmm
n
n
b
b
b
aaa
aaa
aaa
...
...
............
...
...
2
1
21
22221
11211
.........................................................................(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).
nnnnnn
n
n
n
baaaa
baaaa
baaaa
baaaa
...
..................
...
...
...
321
33333231
22232221
11131211
nnn
n
n
n
da
dcc
dccc
dcccc
...000
..................
...00
...0
...
3333
222322
11131211
Sehingga penyelesaiannya adalah :
nn
nn
c
dx
)(1
,11
1,1
1 nnnn
nn
n xcdc
x
.................................
)...(1
24243232
22
2 nn xcxcxcdc
x
)...(1
13132121
11
1 nn xcxcxcdc
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 :
ji,jk,ijk,i c.aaa
Dimana c adalah konstanta pengali yang diambil dari perbandingan antara nilai ik,ia dan
ii,a
Contoh :
Selesaikan sistem persamaan linear berikut ini :
6321 xxx
22 321 xxx
Page 64
© Avid-06 64
Fisika Komputasi
1022 321 xxx
Jawab :
Augmented matrik dari sistem persamaan linear tersebut adalah :
10212
2121
6111
Lakukan OBE sebagai berikut :
2010
4210
6111
2 133
122
BBB
BBB
6200
4210
6111
233 BBB
Sehingga didapat penyelesaian yaitu :
32
63
x
2))3)(2(4(1
12 x
1)326(1
11 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 ai,i sama dengan nol.
Jika Ya :
Tukarkan baris ke-i dengan baris i+k ≤n, dimana ai+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 ii,
ij,
a
ac
-untuk kolom k dimana k = 1 sampai n+1 hitung
ki,kj,kj, a.caa
Page 65
© Avid-06 65
Fisika Komputasi
5.Hitung nilai xi, untuk i = n sampai 1 (bergerak dari baris ke-n sampai baris ke-1)
)xa...xaxa(ba
1x nni,2i2ji,1i1ji,i
ii,
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 {
Page 66
© 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 :
6321 xxx
22 321 xxx
1022 321 xxx
Berikut ini adalah hasil eksekusi program untuk masalah tersebut diatas :
Ukuran Matrik : 3
Page 67
© 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 :
nnnnnn
n
n
n
baaaa
baaaa
baaaa
baaaa
...
..................
...
...
...
321
33333231
22232221
11131211
nd
d
d
d
1...000
..................
0...100
0...010
0...001
3
2
1
Penyelesaian dari sistem persamaan linear ini adalah nilai d1,d2,d3,...,dn dan atau :
x1 = d1 , x2 = d2 , x3 = d3 , ..., xn = dn
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 :
Page 68
© Avid-06 68
Fisika Komputasi
321 xx
842 21 xx
Jawab :
Augmented matrik dari sistem persamaan linear tersebut adalah :
842
311
Lakukan OBE sebagai berikut :
122 2BBB
220
311
222 BB
110
311
211 BBB
110
201
Sehingga didapat penyelesaian yaitu :
21 x
12 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 ai,i sama dengan nol.
Jika Ya :
Tukarkan baris ke-i dengan baris i+k ≤n, dimana ai+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 ii
ki
kia
aa
,
,
,
4.Untuk baris ke-j, dimana j = i+1 sampai n, Lakukan Operasi Baris Elementer OBE :
- hitung ijac ,
-untuk kolom k dimana k = 1 sampai n+1 hitung
kikjkj acaa ,,, .
Page 69
© Avid-06 69
Fisika Komputasi
5.Hitung nilai xi, untuk i = 1 sampai n
1, nii ax
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++) {
Page 70
© 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 :
321 xx
842 1 xx
Berikut ini adalah hasil eksekusi program untuk masalah tersebut diatas :
Ukuran Matrik : 2 Matrik A : A[11] = 1 A[12] = 1 A[21] = 2
Page 71
© 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 :
11313212111 ... bxaxaxaxa nn
22323222121 ... bxaxaxaxa nn
33333232131 ... bxaxaxaxa nn
..........................................................
mnmnmmm bxaxaxaxa ...332211
Berilah nilai awal untuk setiap xi ( i = 1 sampai n) kemudian sistem persamaan linear
diatas ditulis menjadi :
)...(1
13132121
11
1 nn xaxaxaba
x
)...(1
23231212
22
2 nn xaxaxaba
x
...............................................................
)...(1
112211 nnnnnn
nn
n xaxaxaba
x
Dengan menghitung nilai-nilai xi (i = 1 sampai n) dengan memakai persamaan
diatas secara terus menerus hingga diperoleh suatu nilai xi yang sama (mendekati) dengan
Page 72
© Avid-06 72
Fisika Komputasi
nilai xi 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 :
521 xx
1442 21 xx
Jawab :
Berikan nilai awal : x1 = 0 dan x2 = 0
Susun persamaan menjadi :
21 5 xx
)214(4
112 xx
Iterasi 1 :
5051 x
1)5.214(4
12 x
Iterasi 2 :
4151 x
2
3)4.214(
4
12 x
Iterasi 3 :
2
7
2
351 x
4
7)
2
7.214(
4
12 x
Iterasi 4 :
4
13
4
751 x
8
15)
4
13.214(
4
12 x
Iterasi 5 :
8
25
8
1551 x
Page 73
© Avid-06 73
Fisika Komputasi
16
31)
8
25.214(
4
12 x
Iterasi 6 :
16
49
16
3151 x
32
63)
16
49.214(
4
12 x
Iterasi 7 :
32
97
32
6351 x
64
127)
32
97.214(
4
12 x
Dapat dilihat nilai x1 dan x2 pada iterasi yang ke-7 sudah tidak berbeda jauh dengan nilai
pada iterasi ke-6, sehingga proses iterasi dapat dihentikan dan didapatkan penyelesaian :
32
971 x
64
1272 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
4.Tentukan nilai awal dari xi, untuk i = 1 sampai n
5.Simpan xi dalam si, untuk i = 1 sampai n
6.Untuk i = 1 sampai n hitung :
ij
jjii
ii
i xaba
x )(1
,
,
iii sxe
7.Iterasi <-- iterasi + 1
8.Jika iterasi lebih dari max_iter atau terdapat ei < untuk i = 1 sampai n maka proses
dihentikan dan penyelesaiannya adalah xi (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++) :
Page 74
© 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; } }
Page 75
© Avid-06 75
Fisika Komputasi
T
4 kg 2 kg
Eksekusilah program tersebut dan kemudian cobalah untuk menyelesaikan masalah sistem
persamaan linear berikut ini :
521 xx
1442 1 xx
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
Page 76
© 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 ),( yxr 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 :
01
10P
Sedangkan transformasi pencerminan vektor (0,1) seperti diperlihatkan dalam gambar
(5.2) dinyatakan dengan :
0
1
1
0
01
10
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
Page 77
© Avid-06 77
Fisika Komputasi
INNTTEERRPPOOLLAASSII
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:
12
1
12
1
xx
xx
yy
yy
Sehingga persamaan dari interpolasi linier adalah :
11
12
12 )( yxxxx
yyy
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( 21 PP
VI
Gambar 6.1. Interpolasi Linier
Page 78
© Avid-06 78
Fisika Komputasi
x = 2.1
11
12
12 )( yxxxx
yyy
5.1)11.2(13
5.15.2
y
05.2
Jadi titik P3 (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 :
11
12
12 )( yxxxx
yyy
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
Page 79
© Avid-06 79
Fisika Komputasi
Untuk memperoleh titik Q(x,y) digunakan interpolasi kuadratik sebagai berikut:
))((
))((
))((
))((
))((
))((
2313
213
3212
312
3121
321
xxxx
xxxxy
xxxx
xxxxy
xxxx
xxxxyy
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( 321 PPP
x = 2.5
))((
))((
))((
))((
))((
))((
2313
213
3212
312
3121
321
xxxx
xxxxy
xxxx
xxxxy
xxxx
xxxxyy
Gambar 6.3. Interpolasi Kuadratik
Gambar 6.4. Contoh Interpolasi Kuadratik
Page 80
© Avid-06 80
Fisika Komputasi
)23)(13(
)25.2)(15.2(3
)32)(12(
)35.2)(15.2(2
)31)(21(
)35.2)(25.2(5
y
2
Jadi titik P4 (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:
))((
))((
))((
))((
))((
))((
2313
213
3212
312
3121
321
xxxx
xxxxy
xxxx
xxxxy
xxxx
xxxxyy
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
210 ...
n
n xaxaxaay
Masukkan nilai dari setiap titik ke dalam persamaan polynomial di atas dan diperoleh
persamaan simultan dengan n persamaan dan n variabel bebas:
1
11
2
121101 ...
n
n xaxaxaay 1
21
2
222102 ...
n
n xaxaxaay 1
31
2
323103 ...
n
n xaxaxaay
................................................. 1
1
2
210 ...
n
nnnnn xaxaxaay
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 23 dcbax
8.17)7.2()7.2()7.2(7.2 23 dcbax
Page 81
© Avid-06 81
Fisika Komputasi
2.14)1()1()1(1 23 dcbax
3.38)8.4()8.4()8.4(8.4 23 dcbax
Didapatkan:
a = -0.5275
b = 6.4952
c = -16.117
d = 24.3499
Sehingga persamaan polinomialnya adalah :
3499.24117.164952.65275.0 23 xxxy
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 Pi(xi,yi) untuk i=1,2,3,…,n
3. Menyusun augmented matrik dari titik-titik yang diketahui sebagai berikut:
n
n
nnn
n
n
n
yxxx
yxxx
yxxx
yxxx
J
12
3
1
3
2
33
2
1
2
2
22
1
1
1
2
11
...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
Page 82
© Avid-06 82
Fisika Komputasi
5. Menyusun koefisien fungsi polinomial berdasarkan penyelesaian persamaan
simultan di atas
}10),,(|{ niniJaaa ii
6. Memasukkan nilai x dari titik yang diketahui
7. Menghitung nilai y dari fungsi polinomial yang dihasilkan
1
0
n
i
i
i xay
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 :
N
i ji
j
iji
xx
xxyy
1 )(
)(
Jika untuk 3 titik ( n =3) maka uraian dari fungsi Polinomial diatas adalah :
))((
))((
))((
))((
))((
))((
2313
213
3212
312
3121
321
xxxx
xxxxy
xxxx
xxxxy
xxxx
xxxxyy
tampak hasilnya adalah sama dengan interpolasi kuadratik.
Algoritma Interpolasi Lagrange :
1. Tentukan jumlah titik n yang diketahui
2. Tentukan titik-titik Pi(xi,yi) 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
N
i ji
j
iji
xx
xxyy
1 )(
)(
5. Tampilkan nilai (x,y)
Page 83
© Avid-06 83
Fisika Komputasi
REEGGRREESSII
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 (xn,yn).
Fungsi linear merupakan fungsi yang berbentuk garis lurus yang dinyatakan dengan
persamaan :
cmxy
Dimana nilai m dan c dalam regresi linear dapat ditentukan dengan :
N
n
N
n
nn
N
n
N
n
n
N
n
nnn
xxN
yxyxN
m
1
2
1
2
1 11
N
x
mN
y
xmyc
N
n
n
N
n
n 11
Contoh :
VII
Gambar 7.1 Regresi Linier
Page 84
© Avid-06 84
Fisika Komputasi
Carilah fungsi pendekatan linear dari titik-titik data berikut ini :
Jawab :
N = 7
7
1
28n
nx
7
1
24n
ny
7
1
2140
n
nx
7
1
5.119n
nn yx
8392857.028)140(7
)24(28)5.119(72
m
47
28x 428571.3
7
24y
0714282.0)4)(8392857.0(428571.3 xmyc
Sehingga persamaan fungsi linear dari titik-titik data tersebut adalah :
0714282.08392857.0 xy
Tabel Data hasil Regresi :
xn yn
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
Page 85
© 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 (xn,yn). Regresi Eksponensial
merupakan pengembangan dari regresi linear dengan menggunakan fungsi logaritma. Jika
kita mempunyai fungsi eksponensial :
baxey
Jika kita mengambil nilai log dari fungsi tersebut maka didapatkan :
)ln(ln baxey
baxy ln
Jika dimisalkan :
baxz
maka :
yz ln
n xn yn
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
Page 86
© 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 :
yz ln
Contoh :
Carilah fungsi pendekatan eksponensial dari titik-titik data berikut ini :
Jawab :
N = 5
5
1
15n
nx
5
1
93.4n
nz
5
1
255
n
nx
5
1
6425.21n
nnzx
685.015)55(5
)93.4(15)6425.21(52
a
0.35
15x 986.0
5
93.4z
069.1)3)(685.0(986.0 xazb
Sehingga persamaan fungsi linear dari titik-titik data tersebut adalah :
069.1685.0 xey
Tabel Data hasil Regresi :
xn yn zn = ln yn
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
Page 87
© 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 baxey
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 (xn,yn). Bentuk persamaan dari fungsi
polinomial dinyatakan dengan :
n
nxaxaxaay ...2
210
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
yx
yx
yx
a
a
a
a
xxxn
xxxx
xxxx
xxxx
1
1
2
1
1
1
0
2
1
11
2
1
1
22
11
1
1
2
1
12
1
1
11
1
1
2
1
2
1
1
1
...
...
...
...............
...
...
...
Hasil dari model matrik normal tersebut adalah nilai-nilai dari a0,a1,a2,...an.
Contoh :
Carilah fungsi pendekatan polinomial dari titik-titik data berikut ini :
n xn yn
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
Page 88
© Avid-06 88
Fisika Komputasi
Jawab :
n = 6
6
1
15i
ix 5.2x
6
1
6.152i
iy 433.25y
6
1
6.585i
ii yx
6
1
28.2488
i
ii yx
6
1
255
i
ix
6
1
3225
i
ix
6
1
4979
i
ix
8.2488
6.585
6.152
97922555
2255515
55156
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 :
286071.135929.247857.2 xxy
Tabel Data hasil Regresi :
xi yi
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
Page 89
© 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
nxaxaxaay ...2
210
5. Hitung fungsi polinomial tersebut dalam range x dan step dx tertentu
6. Tampilkan hasil tabel (xn,yn) dari hasil fungsi polinomial tersebut.
i xi yi
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
Page 90
© Avid-06 90
Fisika Komputasi