,y
+(x
,y
,
)
Formula ini diacu sebagai metode Euler. Sebuah harga y baru diprediksikan dengan
menggunakan slope untuk mengekstrapolasikan secara linier di sepanjang ukuran langkah h.
x
i+h
x
y
x
i
h
Prediksi
Sebenarnya
Kesalahan
3
Untuk mendapatkan solusi unik dari PDB maka dilakukan dengan memperkecil nilai h.
berdasarkan persamaan diatas maka algoritma metode Euler adalah
1. Tentukan rentang nilai x dan h.
2. Tentukan nilai x
0
dan y
0
3. Lakukan iterasi sebanyak N dengan langkah tiap h (diawali dari x
0
dan y
0
), lalu hitung
y
+1
=y
+(x
,y
,
)
4. Nilai y diperoleh dengan rentang x.
D. Metode Heun (Modifikasi Euler)
Suatu cara untuk memperbaiki perkiraan slope termasuk penentuan dua turunan untuk
interval yaitu pertama pada titik awal dan yang lainnya pada titik akhir. Kedua turunan tersebut
kemudian direratakan agar memperoleh suatu perkiraan slope yang diperbaiki untuk keseluruhan
interval. Pendekatan ini disebut metode Heun.
J ika pada metode Euler, maka slope pada awal interval adalah
y
i
=(x
,y
)
Digunakan untuk mengekstrapolasikan secara linier terhadap y
i+1
yaitu
x
i+h
x
y
x
i
h
slopc =(x
+1
,y
+1
0
)
slopc =(x
,y
)
x
i+h
x
y
x
i
h
slopc =
(x
,y
) +(x
+1
,y
+1
0
)
2
4
y
+1
0
=y
+(x
,y
)
Pada metode Euler standar perhitungan hanya sampai disini. Tetapi pada metode Heun, y
+1
0
yang
dihitung sebelumnya bukan jawaban akhir, oleh karenanya diberikan superskrip 0. Persamaan y
i
disebut persamaan Prediktor, dimana persamaan tersebut dapat digunakan untuk memberikan
taksiran y
i+1
yang memungkinkan kalkulasi perkiraan slope pada akhir interval.
y
+1
i
=(x
+1
,y
+1
0
)
Kemudian kedua slope tersebut digabungkan untuk mendapatkan rata-rata sehingga
y
+1
=y
+
(x
,y
) +(x
+1
,y
+1
0
)
2
Persamaan diatas disebut persamaan Korektor.
Algoritma Heun diuraikan sebagai berikut
1. Tentukan rentang nilai x
0
dan nilai x
akhir
2. Tentukan y
0
, dan h
3. Lakukan iterasi sebanyak N
a. k1=h*fd(x,y);
b. k2=h*(fd(x+h,y+k1));
c. y=y+(k1+k2)/2;
d. x:=x+h;
E. Langkah Praktikum
1. Aplikasi menghitung persamaan diferensial biasa dengan metode Euler\
a. Buka aplikasi Delphi
b. Siapkan pembuatan form, simpan seluruh file/project terlebih dahulu
c. Gunakan komponen berikut, atur properti minimal seperti pada tabel berikut, dan atur
properti yang lain sesuai keinginan.
Nama Object Property Nilai
TForm Caption Metode Euler
Name MetodeEuler
TLabel Caption Nilai x0
TLabel Caption Nilai y0
TLabel Caption Nilai h
TLabel Caption Batas x
TEdit Name edX0
Text
TEdit Name edY0
5
Text
TEdit Name edNilaiH
Text
TEdit Name edBatasX
Text
TEdit Name edError
Text
TButton Caption Hitung
StringGrid Name sgPerbandingan
TChart
d. Susun seluruh object dengan bentuk seperti Gambar 1 , atau sesuai kreasi.
Gambar 1. Susunan Object
i. Isikan program sesuai dengan contoh berikut (contoh ini merupakan potongan
program mulai dari baris deklarasi var)
var
Met odeEul er : TMet odeEul er ;
i : i nt eger ;
x: ar r ay[ 1. . 500] of r eal ;
y: ar r ay[ 1. . 500] of r eal ;
yt r ue: ar r ay[ 1. . 500] of r eal ;
er r or : ar r ay[ 1. . 500] of r eal ;
xx, yy, del t ax, h: r eal ;
i mpl ement at i on
6
{$R *. df m}
/ / f ungsi per samaan di f er ensi al
f unct i on f ( z: r eal ) : r eal ;
begi n
f : =- 2*z*z*z+12*z*z- 20*z+85;
end;
/ / f ungsi sebenar nya hasi l i nt egr al anal i t i s
f unct i on f i nt ( z: r eal ) : r eal ;
begi n
f i nt : =- 0. 5*z*z*z*z+4*z*z*z- 10*z*z+8. 5*z+1;
end;
pr ocedur e TMet odeEul er . bt Hi t ungCl i ck( Sender : TObj ect ) ;
var
j : i nt eger ;
Er r Tot al , MeanEr r : r eal ;
begi n
xx: =st r t oi nt ( edX0. Text ) ;
yy: =st r t oi nt ( edY0. Text ) ;
x[ 1] : =xx;
y[ 1] : =yy;
h: =st r t of l oat ( edNi l ai H. Text ) ;
i : =2;
whi l e xx<st r t of l oat ( edBat asX. Text ) do
begi n
yy: =yy+f ( xx) *h;
xx: =xx+h;
y[ i ] : =yy;
x[ i ] : =xx;
i : =i +1;
end;
sgPer bandi ngan. Col Count : =4;
sgPer bandi ngan. RowCount : =i ;
wi t h sgPer bandi ngan do
begi n
cel l s[ 0, 0] : =' x' ;
cel l s[ 1, 0] : =' y- eul er ' ;
cel l s[ 2, 0] : =' y- sebenar nya' ;
cel l s[ 3, 0] : =' kesal ahan' ;
end;
/ / menghi t ung ni l ai y sebenar nya dar i f ungsi f i nt
f or j : =1 t o i do
begi n
yt r ue[ j ] : =f i nt ( x[ j ] ) ;
er r or [ j ] : =yt r ue[ j ] - y[ j ] ;
end;
/ / menghi t ung er r or r er at a
Er r Tot al : =0;
f or j : =1 t o i do
begi n
Er r Tot al : =Er r Tot al +abs( er r or [ j ] ) ;
end;
7
MeanEr r : =Er r Tot al / i ;
edEr r or . Text : =f l oat t ost r f ( MeanEr r , f f Gener al , 2, 2) ;
/ / menampi l kan dat a di t abel dan gr af i k
char t 1. Ser i es[ 0] . Cl ear ;
char t 1. Ser i es[ 1] . Cl ear ;
f or j : =1 t o i do
begi n
wi t h sgPer bandi ngan do
begi n
cel l s[ 0, j ] : =f l oat t ost r ( x[ j ] ) ;
cel l s[ 1, j ] : =f l oat t ost r ( y[ j ] ) ;
cel l s[ 2, j ] : =f l oat t ost r ( yt r ue[ j ] ) ;
cel l s[ 3, j ] : =f l oat t ost r ( abs( er r or [ j ] ) ) ;
char t 1. Ser i es[ 0] . AddXY( x[ j ] , yt r ue[ j ] ) ;
char t 1. Ser i es[ 1] . AddXY( x[ j ] , y[ j ] ) ;
end;
end;
end;
end.
2. Buat Aplikasi untuk menghitung persamaan diferensial dengan algoritma Heun