I DERET TAYLOR
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 :
f ( x) ( x x0 ) n …………………………………………..(1.1)
f ( n ) ( x0 )
n!
dimana,
f ( n ) ( x0 )
dn f
x x0 …………………………………………………...(1.2)
dxn
f (0) ( x0 ) f ( x0 ) ………………………………………………………(1.3)
f ( x)
f ( n ) (0) n
x …………………………………………………..(1.4)
n!
dimana,
f ( n ) (0)
dn f
x 0 ……………………………………………………...(1.5)
dxn
f ( 0) (0) f (0) ………………………………………………………….(1.6)
Persamaan (1.4) adalah persamaan dari deret Mac Laurin. Persamaan (1.1) biasa
dituliskan dengan mensubstitusikan x dengan x-x0, sehingga :
f ( x x0 )
f ( n ) ( x0 ) n
( x) …………………………………………..(1.7)
n!
Sehingga Persamaan deret Mac Laurin akan menjadi :
f ( x)
f ( n ) (0) n
( x) …………………………………………...........(1.8)
n!
Contoh :
Hitunglah deret Mac Laurin untuk Sin(x)
© Avid-06 1
Fisika Komputasi
Jawab :
f(x) = sin(x) ; f(0) = 0
f1(x) = cos(x) ; f1(0) = 1
11 11
f (x) = -sin(x) ; f (0) = 0
f111(x) = -cos(x) ; f111(0) = -1
f1V(x) = sin(x) ; f1V(0) = 0
fV(x) = cos(x) ; fV(0) = 1
Dari deret Mac Laurin :
f ( x)
f ( n ) (0) n
( x)
n!
...
f ( 0) (0) x0 f (1) (0) x1 f (11) (0) x2 f (111) (0) x3 f (1V ) (0) x4 f (V ) (0) x5
0! 1! 2! 3! 4! 5!
Sehingga Sin(x) menjadi :
0.1 1.x 0.x2 1.x3 0.x4 1.x5
...
0! 1! 2! 3! 4! 5!
x ...
x3 x5 x 7
3! 5! 7!
Latihan :
1. Buat deret Mac Laurin untuk fungsi cos(x) dan tan(x)
2. Buat deret Taylor untuk ex di sekitar x=0
© Avid-06 2
Fisika Komputasi
if (m>1 )
del= fabs(sinx-s);
sinx=s;
}
cout << "Jumlah suku = "<<m <<endl;
cout << "sin(x) = " << s <<endl;
}
© Avid-06 3
Fisika Komputasi
Latihan :
1. Buatlah program komputer dari deret MacLaurin untuk fungsi exp(x) :
exp( x) 1 x ...
x 2 x3
2! 3!
2. Buatlah program komputer dari deret MacLaurin untuk fungsi cos(x) :
cos( x) 1 ...
x 2 x 4 x6
2! 4! 6!
© Avid-06 4
Fisika Komputasi
II AKAR-AKAR PERSAMAAN
Akar suatu persamaan merupakan titik potong fungsi f(x) dengan sumbu x :
f(x)
x0
x
akar f(x)
V
1
V
x
x=?
© Avid-06 5
Fisika Komputasi
f(x)
x
x0
x0
x
x2 x1
f(x)
xa dan xb terletak
berseberangan terhadap titik
potong x0
xa berada di sebelah kiri x0
xb berada di sebelah kanan x0
x0
x
xa xb
© Avid-06 6
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-11x2 + 39x – 45
untuk 0 x 6, h 0.75
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 :
f ( x) ( x x0 ) n
f ( n ) ( x0 )
n!
f ( 0) ( x0 ) x0 f (1) ( x0 )( x x0 )1 f (11) ( x0 )( x x0 ) 2
...
0! 1! 2!
orde -1
orde -2
© Avid-06 7
Fisika Komputasi
xn 1 xn
f ( xn )
……………………………………………………………..(2.2)
f ' ( xn )
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 – 11x2 + 39x – 45 dengan metode Newton-Rapshon
orde-1.
Jawab :
f1(x) = 3x2 –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 x 4 = 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)
f ( x) ( x x0 ) n
f ( n ) ( x0 )
n!
f ( 0) ( x0 ) x0 f (1) ( x0 )( x x0 )1 f (11) ( x0 )( x x0 ) 2
0! 1! 2!
dengan mensubstitusi x dengan xn+1, dan x0 dengan xn didapatkan
© Avid-06 8
Fisika Komputasi
f 11 ( xn )( xn 1 xn ) 2
f ( xn1 ) f ( xn ) f ( xn )( xn1 xn )
1
2!
Jika xn+1 akar dari f(x) maka
f(xn+1) = 0
f ( xn )
xn 1 xn
f 1 ( xn )
Sehingga
f 11 ( xn )( xn 1 xn ) 2 f ( xn )
0 f ( xn ) f ( xn )( xn 1 xn ) 1
f ( xn )
1
0 f ( xn ) f ( xn )( xn 1 xn ) ( xn1 xn )
1 f 11 ( xn ) f ( xn )
2 f 1 ( xn )
1 f ( xn ) f 11 ( xn )
0 f ( xn ) ( xn 1 xn ) f ( xn )
2 f 1 ( xn )
xn 1 xn
f ( xn )
f ( xn )
' f ( xn ) f '' ( xn )
2 f ' ( xn )
xn 1 xn
f ( xn )
…………………………………………….(2.3)
f ( xn )
' f ( xn ) f '' ( xn )
2 f ' ( xn )
Persamaan 2.3 merupakan persamaan iterasi Newton-Rapshon orde-2.
Contoh :
1. Tentukanlah akar f(x) = x3 – 11x2 + 39x – 45 dengan metode Newton-Rapshon
orde-2.
Jawab :
f1(x) = 3x2 –22x + 33 ; f11(x) = 6x - 22
misal kita ambil titik awal x0 = 6
N xn F(xn) f1(xn) f11(xn) xn+1
0 6,000 9,000 15,000 14,000 5,167
1 5,167
2
3
4
© Avid-06 9
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
P f(x)
P1=15 f(x)1=15
V x
1
V1=? x =?
P 15 atau f ( x) 15
24,69 24,69
V x
sehingga f 1 ( x)
24,69
x2
Dengan iterasi Newton-Rapshon orde-1
xn 1 xn
f ( xn )
f ' ( xn )
misal x0 = 1,5
n xn f(xn) f1(xn) xn+1
0 1,500
1
2
© Avid-06 10
Fisika Komputasi
y
sin 2 x
x2
karena yang dicari adalah nilai x saat y = ½ (I / I0 = ½ atau I = ½ I0 )
Jadi persamaan yang dicari solusinya adalah :
y 0,5
sin 2 x
x2
f(x)
y1=1/2 x1
x
0 x=?
Untuk mendapatkan titik potong f(x) dengan sumbu x maka dipakai iterasi Newton-
Rapshon orde-1.
© Avid-06 11
Fisika Komputasi
f ( x) 0,5
sin 2 x
x2
2 sin 2 x sin 2 x
f ( x)
1
x3 x2
misal x0 = 1,25
n xn f(xn) f1(xn) xn+1
0 1,250
1
2
f ( x) x2 2 x 8 polinom orde - 2
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 :
a n a n1 a n2 ... a 0
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.
x a n a n1 a n2 ... a 0
© Avid-06 12
Fisika Komputasi
3.Selang satu baris dari deretan koefisien tersebut buat garis lurus sebagai garis
penjumlahan.
x a n a n1 a n2 ... a 0
+
bn
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
x an a n1 a n2 ... a 0
x.bn
bn a n 1 ( x.bn ) +
bn 1
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
x an a n1 a n 2 ... a0
x.bn 1
a n 2 ( x.bn 1 )
+
bn bn1
bn 2
7.Lakukan operasi yang sama untuk koefisien-koefisien yang lain sehingga di bawah garis
penjumlahan akan didapatkan deretan :
bn bn1 bn2 ... b0
8.Nilai b0 merupakan nilai fungsi f(x) yang dicari.
Jika pembagian sintetik dilanjutkan untuk deretan
bn bn1 bn2 ... b0
maka akan didapatkan nilai dari turunan f1(x).
Jika langkah-langkah tersebut diatas dirangkum maka akan tampak seperti berikut ini :
x an a n1 a n2 a n 3
© Avid-06 13
Fisika Komputasi
dimana,
bn an
bn1 a n1 bn x
Nilai bn 3 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 a n , a n1 , a n2 , a n3 diganti dengan nilai bn, bn1 , bn2 .
x bn bn1 bn2
(cn x) (cn1 x)
+
cn cn1 cn 2
dimana,
cn b n
cn1 bn1 cn x
Nilai dari c n 2 merupakan nilai turunan dari persamaan f(x) pada x yang bersangkutan.
Contoh :
Misalkan kita memiliki persamaan polinom orde 3 yaitu :
f ( x) x3 11x2 39 x 45
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
© Avid-06 14
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 – 6x2 + 11x – 6
2. Tentukan akar dari persamaan : f(x) = x2 - 2x – 8
catatan : gunakan metode Iterasi Newton – Rapshon orde 1 dan orde-2
f ( x) ( x 3) polinom orde - 1
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 :
f ( x) x3 11x2 39 x 45 orde - 3
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. f ( x) x2 6 x 9 orde - 2
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. f ( x) x 3 orde - 1
sehingga a1 = 1
© Avid-06 16
Fisika Komputasi
a0 = -3
Jadi akar-akar dari fungsi tsb adalah :
x1 = 5
x2 = 3
x3 = 3
x=y[n-1];
//*****************************
fx=x*(x*x)-11*(x*x)+39*x-45; //persamaan yg akan dicari akarnya
dx=3*(x*x)-22*x+39; // Nilai turunan pertama dari persamaan
//*****************************
y[n]=x-fx/dx; //rumus Newton Rapshon orde-1
cout.width(15); //tampilkan 15 digit
cout <<setiosflags(ios::left); //rata kiri
© Avid-06 17
Fisika Komputasi
cout << n ;
cout.width(15);
cout <<setiosflags(ios::left);
cout <<y[n];
cout.width(15);
cout <<setiosflags(ios::left);
cout <<fabs(y[n]-x) ;
cout <<endl<<endl;
}
}
Dalam program diatas iterasi dibatasi hanya sampai 15 iterasi. Sehingga program akan
berhenti begitu 15 iterasi tercapai. Program berikut ini merupakan modifikasi dari
program diatas dimana iterasi akan berhenti jika selisih antara 2 nilai iterasi yang
berturutan lebih kecil atau sama dengan suatu konstanta ( epsilon). Adapun implementasi
dari program tersebut adalah seperti dibawah ini :
//***********************************************************************
// Menghitung akar dari fungsi dengan Newton Rapshon orde-1
// iterasi dibatasi oleh selisih antar 2 nilai iterasi yg berurutan
// Compiler : Visual C++
//***********************************************************************
#include <iostream.h>
#include <math.h>
void main()
{
double eps=1e-5; //konstanta (epsilon)
double y[100];
double x,fx,dx,selisih;
int n;
cout <<endl;
cout << "Titik awal xo : ";
cin >> y[0];
cout <<endl<<endl;
n=0;
selisih = 10;
while (selisih >= eps)
{
n=n+1;
© Avid-06 18
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
}
f ( x) x3 11x2 39 x 45
// **********************************************************************
// Menghitung akar dari fungsi dengan Newton Rapshon orde-2
// iterasi dibatasi oleh selisih antar 2 nilai yg berurutan
// Compiler : Visual C++
// **********************************************************************
#include <iostream.h>
#include <math.h>
#include <iomanip.h>
void main()
{
double eps=1e-5;
double y[100];
double x,fx,d1,d2,pen,selisih;
int n;
cout <<endl;
cout << "Titik awal xo : ";
cin >> y[0];
cout <<endl<<endl;
n=0;
selisih = 10;
while (selisih >= eps) //iterasi sampai selisih 2 nilai berurutan <= eps
© Avid-06 19
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=3000K. Sehingga :
p = 24.69/V
untuk menentukan berapa volume gas pada saat tekanannya 15 atmosfir maka persamaan
tersebut akan menjadi :
p = 24.69/V -15
Atau jika p disubstitusi menjadi y dan V menjadi x maka :
y = 24.69/x –15
© Avid-06 20
Fisika Komputasi
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 :
I 0 Sin 2
I
2
dimana, I0 intensitas cahaya yang datang dan kb sin . Jika kita mensubstitusikan
1
2
I/I0 menjadi y dan menjadi x maka persamaan tersebut akan menjadi
y
sin 2 x
x2
untuk mendapatkan nilai dimana I/I0 = 0.5 maka persamaan tersebut diubah menjadi :
y 0.5
sin 2 x
x2
Dengan memakai iterasi Newton-Rapshon maka solusi persamaan ini akan dapat dicari.
Buatlah programnya!.
© Avid-06 21
Fisika Komputasi
double b[100];
double c[100];
double x;
int i,orde;
cout<<"Orde dari polinom = ";
cin >> orde;
for (i=orde; i>=0; i--)
{
cout<< "a"<<i<<" = ";
cin >>a[i]; //input koefisien dari masing-masing suku
}
cout <<endl;
cout << "tentukan titik xo : ";
cin >>x;
cout <<endl<<endl;
pemsin(a,orde,x,b); //panggil fungsi pemsin --->pembagian sintetik
for (i=orde;i>=0;i--)
{
if (i!=0 )
{
cout.width(15); //pesan tempat 15 digit
cout<<setiosflags(ios::left); //tampilkan rata kiri
cout<<i;
cout<<setw(15);
cout<<setiosflags(ios::left);
cout<<b[i];
}
else
{
cout<<setw(15);
cout<<setiosflags(ios::left);
cout<<i;
cout<<setw(15);
cout<<setiosflags(ios::left);
cout<<b[i];
cout<<"Nilai Fungsi";
}
cout <<endl;
}
cout<<endl;
pemsin(b,orde,x,c);
© Avid-06 22
Fisika Komputasi
for(i=orde;i>=0;i--)
{
if (i!=1)
{
cout<<setw(15);
cout<<setiosflags(ios::left);
cout<<i;
cout<<setw(15);
cout<<setiosflags(ios::left);
cout<<c[i];
}
else
{
cout<<setw(15);
cout<<setiosflags(ios::left);
cout<<i;
cout<<setw(15);
cout<<setiosflags(ios::left);
cout<<c[i];
cout<<" Nilai Turunan";
}
cout <<endl;
}
}
void pemsin(double a[100],int n,double x,double b[100])
{
int j;
b[n]=a[n];
for (j=n-1; j>=0; j--)
{
b[j]=a[j]+x*b[j+1];
}
}
Jika metode Pembagian Sintetik ini kita padukan dengan iterasi Newton-Rapshon dalam
penentuan akar-akar persamaan Polinom maka bentuk program komputer dari Iterasi
Newton-Rapshon akan mengalami perubahan seperti di bawah ini :
//******************************************************************************
//Menentukan Akar dari Polinom dengan Newton-Rapshon dimana
//nilai fungsi dan turunan ditentukan dgn metode Pembagian Sintetik
//Compilar : Visual C++
© Avid-06 23
Fisika Komputasi
//******************************************************************************
#include <iostream.h>
#include <iomanip.h>
#include <math.h>
void pemsin(double a[100],int n,double x,double b[100]); //deklarasi fungsi
pembagian sintetik
void main()
{
double eps = 1e-5;
double a[100];
double b[100];
double c[100];
double y[100];
double x,fx,dx;
int i,n,orde;
cout<<"Orde dari polinom = ";
cin >> orde;
for (i=orde; i>=0; i--)
{
cout<< "a"<<i<<" = ";
cin >>a[i]; //input koefisien dari masing-masing suku
}
cout <<endl;
cout << "tentukan titik awal xo : ";
cin >>y[0];
cout <<endl<<endl;
n=0;
while (fabs(y[n]-x)>=eps)
{
n=n+1;
x=y[n-1];
pemsin(a,orde,x,b);
fx=b[0];
pemsin(b,orde,x,c);
dx=c[1];
y[n]=x-fx/dx;
` }
cout << "Jumlah iterasi : "<<n<<endl;
cout << "Akar : "<<y[n];
cout <<endl;
}
© Avid-06 24
Fisika Komputasi
y x2 (tan ) x
2(v0 cos )
g
2
a2 1.10 3 m1
2(v0 cos ) 2
g
a1 tan 1
a0 0
Dengan memakai iterasi Newton-Rapshon yang dikombinasikan dengan metode
pembagian Sintetik maka solusi permasalahan diatas akan dapat dicari. Buat program
komputernya.
© Avid-06 25
Fisika Komputasi
I f ( x)dx …………………………………………………………...(3.1)
b
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.
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
y
Pita ke-i
Pita ke-1
f(x)
Pita ke-n
x
x
a b
L f ( xi )x ………………………………………………………………...(3.3)
n
i 1
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.
© Avid-06 26
Fisika Komputasi
y
f(xi) f(xi+1)
Pita ke-i
f(x)
Pita ke-n
x
Pita ke-1
x
a xi xi+1 b
Ai x[ f ( xi ) f ( xi 1 )]
1
2
Sehingga untuk n buah pita maka luas seluruhnya menjadi :
© Avid-06 27
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
//*******************************************************
//Menghitung integral dengan metode Trapesium
//Compiler : Visual C++
//*******************************************************
#include <iostream.h>
© Avid-06 28
Fisika Komputasi
#include <math.h>
#include <iomanip.h>
void main()
{
double eps=1e-5;
double trap[100];
double x,x1,x2,delt,delx,pita,fx;
int i;
cout << " Batas bawah : ";
cin >>x1;
cout << " Batas Atas : ";
cin >>x2;
cout <<endl<<endl;
i=0;
delt=100; //delt = selisih antara 2 hasil integral(iterasi) yg berurutan
while (fabs(delt)>eps) //iterasi selama delt lebih besar dari eps
{
i=i+1;
trap[i]=0;
x=x1;
pita=pow(2,i-1); //2^i-1 (pow = pangkat)
delx=(x2-x1)/pita; //pita= jumlah pita
while (x<x2) //delx=lebar masing-masing pita;
{
//***************************
fx=6-6*pow(x,5); //bentuk pers. 6-6x^5
//***************************
//fx=fabs(x); //contoh : pers. garis y=x
//fx=1/x ; //contoh : pers. flux magnet pada kawat berarus
if (x==x1 || x==x2)
trap[i]=trap[i]+fx;
else
trap[i]=trap[i]+2*fx;
x=x+delx;
}
trap[i]=trap[i]*delx/2;
if (i==1)
{
cout<<setw(10); //10 lokasi digit
cout<<setiosflags(ios::left); //rata kiri
cout<< pita;
© Avid-06 29
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.
f(x)
4 f(x) = 4
x
0 5
2) Coba buat program komputer untuk menghitung integral dari fungsi :
© Avid-06 30
Fisika Komputasi
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
(a
x
Ai 2 x2 a1 x a 0 )dx …………………………………………………....(3.6)
x
∆x
a 2 x3 a 1 x 2 a 0 x
1 1
3 2
-∆x
a 2 x3 2a 0 x …………………………………………………………..(3.7)
2
3
Nilai fungsi pada ketiga titik tersebut adalah :
f ( xi ) a 2 (x) 2 a1 (x) a 0 ……………………………………………...(3.8)
f ( xi 1 ) a 0 ……………………………………………………………………(3.λ)
f ( xi 2 ) f ( xi )
a1
2x
……………………………………………………….…(3.12)
a 0 f ( xi 1 ) …………………………………………………………………..(3.13)
© Avid-06 31
Fisika Komputasi
Ai x[ f ( xi 4 f ( xi 1 ) f ( xi 2 )] …………………………………………(3.14)
1
3
Maka luas semua pasangan pita adalah :
A x[ f ( x1 4 f ( x2 ) f ( x3 )]
1
3
x[ f ( x3 4 f ( x4 ) f ( x5 )] ...
1
3
A x[ f ( x1 ) 4 f ( x2 ) 4 f ( x6 ) 4 f ( x8 ) ...
1
3
2 f ( x3 ) 2 f ( x5 ) 2 f ( x7 ) ... f ( xn )] ………………………………(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
© Avid-06 32
Fisika Komputasi
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)
1 cm
r
8 cm dr
L
30 cm
pita = dA = Ldr
Jawab :
Besar flux magnet :
d B.dA
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 :
0 i
B
2 r
Maka
0 i iL dr
d L dr 0
2 r 2 r
0 iL 0,091
2 0,01r
dr
© Avid-06 33
Fisika Komputasi
double simp[100];
double x,x1,x2,delt,delx,pita,fx;
int i,j;
cout << " Batas bawah : ";
cin >>x1;
cout << " Batas Atas : ";
cin >>x2;
cout <<endl<<endl;
i=0;
delt=100; //delt = selisih antara 2 hasil integral(iterasi) yg berurutan
while (fabs(delt)>eps) //iterasi selama delt lebih besar dari eps
{
i=i+1;
j=0;
simp[i]=0;
x=x1;
pita=2*pow(2,i-1); //2^i-1 (pow = pangkat)
delx=(x2-x1)/pita; //pita= jumlah pita
while (x<x2) //delx=lebar masing-masing pita;
{
//***************************
fx=6-6*pow(x,5); //contoh : bentuk pers. 6-6x^5
//***************************
//fx=fabs(x); //contoh : pers. garis y=x
//fx=1/x ; //contoh : pers. flux magnet pada kawat berarus
j=j+1;
if (x==x1 || x==x2)
simp[i]=simp[i]+fx;
else
{
if (x>x1 && x<x2 && j % 2 ==0) //suku genap
simp[i]=simp[i]+4*fx;
if (x>x1 && x<x2 && j % 2 ==1) //suku ganjil
simp[i]=simp[i]+2*fx;
}
x=x+delx;
}
simp[i]=simp[i]*delx/3;
if (i==1)
{
cout<<setw(10); //10 lokasi digit
© Avid-06 34
Fisika Komputasi
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 :
© Avid-06 35
Fisika Komputasi
Jika kita mengambil selisih antara kedua persamaan tersebut (3.17 dan 3.18) maka
akan didapatkan :
f ( x h) f ( x h) 1 2 '''
f ' ( x) h f ( x) ... .......…………………………...(3.1λ)
2h 6
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 :
f ( x h) f ( x h)
f ' ( x) ………………………………………………..(3.20)
2h
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 :
f ( x h) 2 f ( x) f ( x h) 1 2 IV
f '' ( x) h f ( x) ... ...……………….(3.21)
h2 12
Bila h sangat kecil maka suku dengan h pangkat 2 atau lebih bisa diabaikan. Sehingga
akan didapatkan persamaan Turunan Kedua dari f(x) yaitu :
f ( x h) 2 f ( x) f ( x h)
f '' ( x) ………………………………………(3.22)
h2
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 :
f ( x h) f ( x h)
f ' ( x)
2h
a)Secara analitik
2x 2
dy
dx x1
b)Secara Numerik (Metode Beda Sentral)
© Avid-06 36
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
2x 1 3
dy
dx x1
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
2
dy
dx x1
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
© Avid-06 37
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;
//fx=9.8*68.1*(1-exp(-12.5*x/68.1));
//fx=fx/12.5;
//*****************
fx=x*x-5*x; //fungsi yang dicari turunannya : x^2 - 5x
//*****************
z[i]=fx;
}
dx=(z[1]-z[2])/(2*h);
del=zz-dx;
cout.width(15);
cout<<h;
cout.width(15);
cout<<dx;
cout.width(15);
cout<<del;
cout<<endl;
zz=dx;
h=h/10;
}
cout<<endl;
cout<<"Jumlah iterasi : "<<n<<endl;
cout<<"Turunan pertama dari f(x) : "<<dx;
cout<<endl;
}
© Avid-06 38
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
//*****************
© Avid-06 39
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 :
v(t ) [1 e ct / m ]
gm
c
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 :
v(t ) [1 e ct / m ]
gm
c
dimana g = 9.8 ms-2, massa penerjun m = 68.1 kg, hambatan oleh udara c = 12.5 kg.s-1.
Ditanyakan berapa percepatan penerjun payung pada saat t = 10 s.
© Avid-06 40
Fisika Komputasi
r km 0............................................................................(4.1)
d 2x dx
m 2
dt dt
secara analisis maka solusi dari persamaan tersebut adalah :
x Ae t sin(t 0 ) , untuk r 4km
x ( B1 B2 t )e t , untuk r 4km
4x 5
df ( x)
f ( x) 4 x 5 dx 2 x2 5x C
dx
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 :
f ( x) 2 x2 5x 6
misal kita masukkan nilai x = 2 maka solusi dari persamaan diferensial tersebut adalah :
f (2) 12
© Avid-06 41
Fisika Komputasi
f ' ( x) f ( x, y)
sehingga persamaan diatas menjadi :
f ( x h) f ( x) f ( x, y)h
persamaan ini bisa ditulis dalam bentuk iterasi :
yi 1 yi f ( x, y)h..............................................................................(4.2)
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:
© Avid-06 42
Fisika Komputasi
x2 x1 2 1
h 0.1
pita 10
yi 1 yi f ( x, y)h
Berapa panjang jalan x yang ditempuh sampai dengan detik ke 5. Jika mula-mula (t0)
benda berada pada posisi x = 3.7
Jawab :
v(t )
dx
dt
Iterasi Euler orde 1 :
xi 1 xi v(t )h ; h 0.5 detik
© Avid-06 43
Fisika Komputasi
y
dy
dx
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>
© Avid-06 44
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
© Avid-06 45
Fisika Komputasi
Dari uraian deret Taylor untuk f(x+h), jika kita menyertakan suku-suku dengan h
pangkat 2 maka akan didapatkan persamaan :
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;
© Avid-06 46
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.
h xn1 xn
dengan
k1 hf ( xn , yn )
k2 hf ( xn p1h, yn q11k1
k3 hf ( xn p2 h, yn q21k1 q22k2 )
... ... ...
km hf ( xn pm1h, yn qm1,1k1 qm1, 2 k2 ... qm1,m1km1
© Avid-06 47
Fisika Komputasi
k2 hf ( xn p1h, yn q11k1 )
jadi dalam hal ini kita perlu menentukan nilai-nilai dari a1 , a 2 , p1 , dan q11 . Untuk
mendapatkan nilai dari konstanta-konstanta tersebut maka pertama-tama kita lihat uraian
deret Taylor sampai orde 2 yaitu :
sehingga persamaan (4.7) menjadi :
f ( x h) f ( x) f ( x, y)h 1
f ( x, y) f y ( x, y) f ( x, y) h 2 ....................(4.9)
2 x
Jika dinyatakan dengan rumus iterasi maka persamaan (4.8) menjadi :
yn1 yn f ( xn , yn )h
f x ( xn , yn ) f y ( xn , yn ) f ( xn , yn ) h 2 ......................(4.10)
1
2
untuk k2 jika diuraikan dalam deret Taylor akan menjadi :
k2 f ( xn , yn ) f x ( xn , yn ) p1h f y ( xn , yn )q11k1 h
f y ( xn , yn ) f ( xn , yn )a 2 q11h 2
yn f ( xn , yn )a1 f ( xn , yn )a 2 h f x ( xn , yn )a 2 p1 f y ( xn , yn ) f ( xn , yn )
a 2 q11 h 2 .................................................................................................(4.11)
© Avid-06 48
Fisika Komputasi
p1 q11 1
Sehingga persamaan iterasi Runge-Kutta orde 2 menjadi :
yn1 yn 1 2 k1 1 2 k2 .....................................................................................(4.15)
dimana
k1 hf ( xn , yn )
k2 hf ( xn h, yn k1 )
b) Metode Raltson
Dalam metode ini diambil nilai dari konstanta :
a1 1
3 a 2 23
p1 q11 3 4
Sehingga persamaan iterasi Runge-Kutta orde 2 menjadi :
yn1 yn 13 (k1 2k2 )....................................................................................(4.16)
dimana
k1 hf ( xn , yn )
k2 hf ( xn 3 4 h, yn 3 4 k1 )
c) Metode Poligon
Dalam metode ini diambil nilai dari konstanta :
a1 0 a2 1
p1 q11 1
2
k2 hf ( xn 1 2 h, yn 1 2 k1 )
Contoh :
© Avid-06 49
Fisika Komputasi
4x 5
dy
dx
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 :
x2 x1 2 1
h 0.1
pita 10
yn1 yn 1 2 k1 1 2 k2
dimana
k1 hf ( xn , yn )
k2 hf ( xn h, yn k1 )
sehingga :
y1 y0 12 k1 12 k2
© Avid-06 50
Fisika Komputasi
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;
fx=4*x+5;
//fx=1-exp(-12.5*x/68.1);
//fx=fx*9.8*68.1/12.5;
//*************************
k[i]=delx*fx;
if (i==1)
{
x=xx+delx;
y=yy+k[i];
}
© Avid-06 51
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;
© Avid-06 52
Fisika Komputasi
fx=4*x+5;
© Avid-06 53
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;
fx=4*x+5;
© Avid-06 54
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.
k2 hf ( xn 1 2 h, yn 1 2 k1 )
k3 hf ( xn h, yn k1 2k2 )
4.3.5 Program Komputer Runge -Kutta orde 3
© Avid-06 55
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;
fx=4*x+5;
© Avid-06 56
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.
k2 hf ( xn 1 2 h, yn 1 2 k1 )
k3 hf ( xn 1 2 h, yn 1 2 k2 )
k4 hf ( xn h, yn k3 )
© Avid-06 57
Fisika Komputasi
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;
fx=4*x+5;
© Avid-06 58
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.
© Avid-06 59
Fisika Komputasi
4 x1 4 x2 3x3 15
5x1 8x2 2 x3 25
Tampak dalam sistem persamaan linear diatas banyaknya persamaan dan variabel adalah
sama yaitu 3.
Secara umum sistem persamaan linear dinyatakan dengan :
a11x1 a12 x2 a13 x3 ... a1n xn b1
a 21x1 a 22 x2 a 23 x3 ... a 2n xn b2
© Avid-06 60
Fisika Komputasi
adalah mencari nilai xi (i = 1,2,...,n). Sistem persamaan linear (5.1) dapat dinyatakan
dalam bentuk matrik yaitu :
a 11 ... a 1n x1 b1
a ... a 2 n x2 b2
a 12
21 a 22
... ... ... ... ...
..........................................................(5.2)
...
a m1 a m2 ... a mn xn bm
A = 21
a 22 ... a 2 n x2
, dan B = 2
... ... ... ... ...
, x=
...
a m1 a m2 ... a mn xn b m
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 :
a 11 b1
a b2
a 12 ... a 1n
21 a 22 ... a 2 n
... ...
.........................................................................(5.3)
... ... ...
a m1 a m2 ... a mn bm
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
© Avid-06 61
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 :
© Avid-06 62
Fisika Komputasi
a 11 b1
a b2
a 12 ... a 1n
21 a 22 ... a 2 n
... ...
.........................................................................(5.4)
... ... ...
a m1 a m2 ... a mn bm
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).
a 11 a 12 b1 c11 c12 d1
a b2 0 c d 2
a 13 ... a 1n c13 ... c1n
21 a 22 a 23 ... a 2n c 23 ... c2n
a 31 a 32 b3 0 d3
22
a 33 ... a 3n 0 c33 ... c3n
... ... ... ... ... ...
a n1 a n 2 bn 0 d n
... ... ... ... ... ...
a n3 ... a nn 0 0 ... a nn
xn
dn
c nn
xn 1 (d n 1 cn 1,n xn )
1
cn1,n 1
.................................
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 :
aik, j aik, j c.a i,j
Dimana c adalah konstanta pengali yang diambil dari perbandingan antara nilai a ik,i dan
a i,i
Contoh :
Selesaikan sistem persamaan linear berikut ini :
x1 x2 x3 6
x1 2 x2 x3 2
© Avid-06 63
Fisika Komputasi
2 x1 x2 2 x3 10
Jawab :
Augmented matrik dari sistem persamaan linear tersebut adalah :
1 1 1 6
1 2 1 2
2 1 2 10
B3 B3 2 B1 0 1 0 2
1 1 1 6
0 1 2 4
B3 B3 B2 0 0 2 6
x2 (4 (2)(3)) 2
1
1
x1 (6 2 3) 1
1
1
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 c
a j, i
a i, i
-untuk kolom k dimana k = 1 sampai n+1 hitung
a j,k a j,k c . a i,k
© Avid-06 64
Fisika Komputasi
5.Hitung nilai xi, untuk i = n sampai 1 (bergerak dari baris ke-n sampai baris ke-1)
© Avid-06 65
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];
}
}
}
}
//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 :
x1 x2 x3 6
x1 2 x2 x3 2
2 x1 x2 2 x3 10
Berikut ini adalah hasil eksekusi program untuk masalah tersebut diatas :
Ukuran Matrik : 3
© Avid-06 66
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
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 :
© Avid-06 67
Fisika Komputasi
x1 x2 3
2 x1 4 x2 8
Jawab :
Augmented matrik dari sistem persamaan linear tersebut adalah :
1 1 3
2 4 8
Lakukan OBE sebagai berikut :
1 1 3
B2 B2 2B1 0 2 2
1 1 3
B2 B2 2
0 1 1
B1 B1 B2 1 0 2
0 1 1
Sehingga didapat penyelesaian yaitu :
x1 2
x2 1
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
4.Untuk baris ke-j, dimana j = i+1 sampai n, Lakukan Operasi Baris Elementer OBE :
- hitung c a j ,i
© Avid-06 68
Fisika Komputasi
for (i=1;i<=n;i++)
{
if (A[i][i]==0)
{
//tukar baris
for (k=i+1;k<=n;k++)
{
© Avid-06 69
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];
}
}
}
}
}
//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 :
x1 x2 3
2 x1 4 x 8
Berikut ini adalah hasil eksekusi program untuk masalah tersebut diatas :
Ukuran Matrik : 2
Matrik A :
A[11] = 1
A[12] = 1
A[21] = 2
© Avid-06 70
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
a 21x1 a 22 x2 a 23 x3 ... a 2n xn b2
a 31x1 a 32 x2 a 33 x3 ... a 3n xn b3
..........................................................
a m1 x1 a m2 x2 a m3 x3 ... a mn xn bm
Berilah nilai awal untuk setiap xi ( i = 1 sampai n) kemudian sistem persamaan linear
diatas ditulis menjadi :
x2 (b2 a 21 x1 a 23 x3 ... a 2 n xn )
1
a 22
...............................................................
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 :
x1 x2 5
2 x1 4 x2 14
Jawab :
Berikan nilai awal : x1 = 0 dan x2 = 0
Susun persamaan menjadi :
x1 5 x2
x2 (14 2 x1 )
1
4
Iterasi 1 :
x1 5 0 5
x2 (14 2.5) 1
1
4
Iterasi 2 :
x1 5 1 4
x2 (14 2.4)
1 3
4 2
Iterasi 3 :
x1 5
3 7
2 2
x2 (14 2. )
1 7 7
4 2 4
Iterasi 4 :
x1 5
7 13
4 4
x2 (14 2. )
1 13 15
4 4 8
Iterasi 5 :
x1 5
15 25
8 8
© Avid-06 72
Fisika Komputasi
x2 (14 2. )
1 25 31
4 8 16
Iterasi 6 :
x1 5
31 49
16 16
x2 (14 2. )
1 49 63
4 16 32
Iterasi 7 :
x1 5
63 97
32 32
x2 (14 2. )
1 97 127
4 32 64
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 :
x1 x2
97 127
32 64
xi (bi a i , j x j )
1
a i ,i j i
ei xi s i
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++) :
© Avid-06 73
Fisika Komputasi
© Avid-06 74
Fisika Komputasi
Eksekusilah program tersebut dan kemudian cobalah untuk menyelesaikan masalah sistem
persamaan linear berikut ini :
x1 x2 5
2 x1 4 x 14
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.
4 kg
2 kg
50 N
(a)
4 kg
2 kg
F T T
(b)
y=-x
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)
cermin y
y=-x
cermin y
y=-x
dinyatakan dalam bentuk matrik P. Hasil pencerminan vektor r dinyatakan dengan r’:
r’ = P r
0 1
Untuk cermin seperti dalam gambar (5.1) dinyatakan dalam bentuk matrik P yaitu :
P
1 0
Sedangkan transformasi pencerminan vektor (0,1) seperti diperlihatkan dalam gambar
(5.2) dinyatakan dengan :
0 1 0 1
1 0 1 0
© Avid-06 76
Fisika Komputasi
VI I NTERPOLASI
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
y y1 x x1
Persamaan garis lurus yang melalui 2 titik P1(x1,y1) dan P2(x2,y2) dapat dinyatakan dengan:
y2 y1 x2 x1
y y1
Sehingga persamaan dari interpolasi linier adalah :
y 2 ( x x1 ) y1
x2 x1
Contoh :
Hitunglah nilai y untuk titik x = 2.1 yang berada diantara titik (1,1.5) dan (3,2.5)
Jawab :
P1 (1,1.5) P2 (3,2.5)
© Avid-06 77
Fisika Komputasi
2.5 1.5
y (2.1 1) 1.5
3 1
2.05
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 :
y2 y1
y ( x x1 ) y1
x2 x1
4.Tampilkan nilai titik yang baru Q(x,y)
© Avid-06 78
Fisika Komputasi
( x x2 )( x x3 ) ( x x1 )( x x3 ) ( x x1 )( x x2 )
Untuk memperoleh titik Q(x,y) digunakan interpolasi kuadratik sebagai berikut:
y y1 y2 y3
( x1 x2 )( x1 x3 ) ( x2 x1 )( x2 x3 ) ( x3 x1 )( x3 x2 )
Contoh :
Hitunglah nilai y untuk titik x = 2.5 yang berada diantara titik (1,5), (2,2) dan (3,3)
Jawab :
P1 (1,5) P2 (2,2) P3 (3,3)
© Avid-06 79
Fisika Komputasi
( x x2 )( x x3 ) ( x x1 )( x x3 ) ( x x1 )( x x2 )
y y1 y2 y3
( x1 x2 )( x1 x3 ) ( x2 x1 )( x2 x3 ) ( x3 x1 )( x3 x2 )
4.Tampilkan nilai titik yang baru Q(x,y)
y2 a 0 a1 x2 a 2 x2 ... a n1 x2
2 n1
y3 a 0 a1 x3 a 2 x3 ... a n1 x3
2 n1
.................................................
yn a 0 a1 xn a 2 xn ... a n1 xn
2 n1
© Avid-06 80
Fisika Komputasi
1 n 1
y1
x1 x1 2 ... x1
1 y2
2 n 1
J 1 y3
x2 x2 ... x2
n 1
2
x3 x3 ... x3
... ...
1 yn
... ... ... ...
2 n 1
xn xn ... xn
© Avid-06 81
Fisika Komputasi
y a i xi
n 1
i 0
y yi
N ( x xj )
i 1
j i ( xi x j )
Jika untuk 3 titik ( n =3) maka uraian dari fungsi Polinomial diatas adalah :
( x x2 )( x x3 ) ( x x1 )( x x3 ) ( x x1 )( x x2 )
y y1 y2 y3
( x1 x2 )( x1 x3 ) ( x2 x1 )( x2 x3 ) ( x3 x1 )( x3 x2 )
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
y yi
N ( x xj )
i 1
j i ( xi x j )
© Avid-06 82
Fisika Komputasi
VII R EGRESI
Regresi adalah sebuah metode untuk mendapatkan fungsi pendekatan dari
sekumpulan titik-titik data. Ada beberapa metode Regresi yaitu :
- Regresi Linier
- Regresi Eksponensial
- Regresi Polinomial
Fungsi linear merupakan fungsi yang berbentuk garis lurus yang dinyatakan dengan
persamaan :
y mx c
Dimana nilai m dan c dalam regresi linear dapat ditentukan dengan :
N xn yn xn yn
N
N N
m n 1 n 1 n 1
N xn xn
N
N 2
n 1
2
n 1
y x
N N
c y mx n 1
m n 1
n n
N N
Contoh :
© Avid-06 83
Fisika Komputasi
xn 28 y 24
7 7
n 1 n 1
n
x 140 x y 119.5
7 7
2
n 1 n 1
n n n
7(119.5) 28(24)
m 0.8392857
7(140) 282
x 4 y 3.428571
28 24
7 7
c y mx 3.428571 (0.8392857)(4) 0.0714282
Sehingga persamaan fungsi linear dari titik-titik data tersebut adalah :
y 0.8392857 x 0.0714282
© Avid-06 84
Fisika Komputasi
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
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.
© Avid-06 85
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 :
z ln y
Contoh :
Carilah fungsi pendekatan eksponensial dari titik-titik data berikut ini :
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
Jawab :
N=5
x 15 z 4.93
5 5
n 1 n 1
n n
xn 55 x z 21.6425
5 5
2
n 1 n 1
n n
5(21.6425) 15(4.93)
a 0.685
5(55) 152
x 3.0 z 0.986
15 4.93
5 5
b z ax 0.986 (0.685)(3) 1.069
Sehingga persamaan fungsi linear dari titik-titik data tersebut adalah :
y e0.685x1.069
© Avid-06 86
Fisika Komputasi
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
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 y ea x b
5. Hitung fungsi eksponensial tersebut dalam range x dan step dx tertentu
6. Tampilkan hasil tabel (xn,yn) dari hasil fungsi eksponensial tersebut.
xi xi xi xi xi yi
n n n 1 n2 n n
n n n
2n
ni 1 a n ni 1
...
x x a n 1
i 1 i 1 i 1
x n 1 n 1 2 n 1
n 1
n n n
n
... xi xi yi
n n2
xi x x i
i 1 i 1 i 1 i 1 i 1
i i i
i
n 1 2n2
a n2 n2
n n n n
i 1 ... i 1
n
... x x y
i 1 i 1 i 1
... ... a
i i i
0 n
x x yi
n
... ... ... ...
n xi
n n n
i 1
2
...
i 1 i 1 i 1
i i
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 :
© Avid-06 87
Fisika Komputasi
xi yi
0 2.1
1 7.7
2 13.6
3 27.2
4 40.9
5 61.1
Jawab :
n=6
x 15 x 2.5
6
i 1
i
y 152.6 y 25.433
6
i 1
i
xi yi 585.6 x yi 2488.8
6 6
2
i 1 i 1
i
xi 55 xi 225 x 979
6 6 6
2 3 4
i 1 i 1 i 1
i
6 15 55 a 0 152.6
15 55 225 a 585.6
1
55 225 979 a 2 2488.8
a 0 2.47857
a 2.35929
1
a 2 1.86071
© Avid-06 88
Fisika Komputasi
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
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 a 0, a 1, a 2, …, an dengan menggunakan eliminasi
gauss/jordan
4. Tampilkan persamaan fungsi polinomial y a0 a1x a 2 x2 ... a n xn
5. Hitung fungsi polinomial tersebut dalam range x dan step dx tertentu
6. Tampilkan hasil tabel (xn,yn) dari hasil fungsi polinomial tersebut.
© Avid-06 89
Fisika Komputasi
© Avid-06 90