Materikuliah Pemodelandanmatematikaterapan PDF
Materikuliah Pemodelandanmatematikaterapan PDF
• K =yx • dx A dt = k ⋅ C A ,0 ⋅ ( 1 − x A )
d
• q =mc p ΔT +mλ • (N X C )= FR X CR + R−V YC
dt
⎧ y1 = x1 +2x 2 ⎧ dy1 dθ = k1 y1 ⋅ y2 −k2 y22
• ⎨ 2 • ⎨
⎩ y2 = x1 ⋅x 2 −x 2 2
⎩dy2 dθ = k3 y1
d
{N X C } = FR X CR + R − V YC
dt
FR, XCR
d XC
{N XC } = FR XCR + R − V YC
dt
V, YC
Kasus #1 :
F1
ZZ0
Z
F2
F1, F2
dZ Z
A = F1 − F2
A dt
Model Kasus #1
Kasus # 2 :
k k
A ⎯⎯
⎯
1
→ B ⎯⎯
⎯2
→ C
RA = k1 C A , RB = k1 C A − k2 C B
CA,0, CB,0 dC A
= k1 C A CA, CB
dt
k1, k2 dC B
= k1 C A − k2 C B
dt
Model Kasus #2
y' = f ( x , y ), y( x 0 ) = y0
x0 ≤ x ≤ x N
x N − x0
h =
N
sehingga :
x i = x 0 + i h, i = 0,1, 2,… , N
Jika y(x ) adalah “solusi eksak” dari PDB di atas, maka dengan
melakukan ekspansi dengan “deret Taylor” dengan sisanya akan
diperoleh
( x i +1 − x i ) 2
y( x i +1 ) = y( x i ) + ( x i +1 − x i ) y' ( x i ) + y" ( ξi ),
: 2!
x i ≤ ξi ≤ x i +1
Property of Setijo Bismo Halaman (6)
Seri Mata Kuliah : PEMODELAN dan MATEMATIKA TERAPAN
h2
y( x i +1 ) = y( x i ) + h f ( x i , y( x i )) + f' ( ξi , y( ξ i ))
2!
dengan :
j −1
K j = h f ( x i + c j h, ui + ∑ a jl K l )
l =1
c1 = 0
Perlu dicatat, bila ν = 1 , ω = 1 , dan K1 = h f ( x i , ui ) maka
formula yang akan diperoleh adalah : METODE EULER. Hal ini
berarti bahwa metode EULER adalah order terendah dari METODE
RUNGE-KUTTA.
h2
y( x i +1 ) = y( x i ) + h f ( x i , y( x i )) + f' ( x i , y( x i )) + 0( h 3 )
2!
dfi ∂f ∂f dy
= i + i = ( fx + f y f )i
dx ∂x ∂y dx x = x i
h2
ui +1 = ui + h fi + ( fx + f y f )i
2!
K1 = h f ( x i , ui ) = h fi
K 2 = h f ( x i + c2 h, ui + a21 K1 )
f ( η, φ) ≈ f ( x i , ui ) + ( η − x i ) f ( x i , ui ) + ( φ − ui ) f y ( x i , ui )
K 2 = h ( fi + c2 h fx + a21 K1 f y )
atau
K 2 = hfi + h 2 ( c2 fx + a21 f y f )i
ui +1 = ui + ω1 h fi + ω2 h fi + ω2 h 2 c2 ( fx )i + a21 ω2 h 2 ( f y f )i
ω1 + ω2 = 1,0
ω2 c2 = 0,5
ω2 a21 = 0,5
h
ui +1 = ui + [fi + f ( x i + h, ui + h fi )], i = 0,1,… , N − 1
2
u0 = y0
1 1
ui +1 = ui + ( K1 + K 4 ) + (b K 2 + d K 3 )
6 3
K1 = h f ( x i , ui )
K 2 = h f ( x i + 12 h, ui + 12 K1 )
K 3 = h f ( x i + 12 h, ui + a K1 + b K 2 )
K 4 = h f ( x i + h, ui + c K 2 + d K 3 )
2 −1 2− 2
a = , b =
2 2
2 2
c = − , d = 1+
2 2
untuk :
i = 0, 1, 2,…,N-1 dan
harga awal :
u0 = y0
2. Metode RUNGE-KUTTA-MERSON :
Metode Runge-Kutta-Merson (RKM) tergolong dalam
keluarga metode Runge-Kutta order-4, namun
memiliki ketelitian sampai order-5. Keistimewaan ini
dimungkinkan karena metode RKM memiliki 5 (lima)
buah ‘konstanta perhitungan antara’ yang berperan
untuk memprediksi harga solusi yang diinginkan
pada 2 (dua) keadaan sedemikian rupa sehingga
‘galat pembulatan’ dapat diminimisasi sampai order-
5.
Formulasi ringkas dari metode RKM ini dapat
dituliskan seperti di bawah ini :
1 3
ui +1 = ui + K1 − K 3 + 2 K 4
2 2
1 2 1
ui +1 = ui + K1 + K 4 + K 5
6 3 6
K1 = h f ( x i , ui )
K 2 = h f ( x i + 13 h, ui + 13 K1 )
K 3 = h f ( x i + 13 h, ui + 16 K1 + 16 K 2 )
K 4 = h f ( x i + 12 h , ui + 18 K 1 + 38 K 3 )
K 5 = h f ( x i + h, ui + 12 K1 − 32 K 3 + 2 K 4 )
untuk :
i = 0, 1, 2,…,N-1 dan
harga kondisi awal :
u0 = y0
3. Metode RUNGE-KUTTA-FEHLBERG :
Sama halnya dengan metode RKM, metode Runge-
Kutta-Fehlberg (RKF45) juga tergolong dalam
keluarga metode Runge-Kutta order-4, namun
memiliki ketelitian sampai order-5. Ketelitian yang
tinggi ini dimungkinkan karena metode RKF45
memiliki 6 (enam) buah ‘konstanta perhitungan
antara’ yang berperan untuk meng-update solusi
sampai order-5.
Formulasi ringkas dari metode RKM ini adalah :
K1 = h f ( x i , ui )
K 2 = h f ( x i + 14 h, ui + 14 K1 )
K 3 = h f ( x i + 38 h, ui + 323 K1 + 329 K 2 )
K 4 = h f ( x i + 12
13
h, ui + 1932
2197
K1 − 7200
2197
K 2 + 7296
2197
K3 )
K 5 = h f ( x i + h, ui + 439
216
K1 − 8 K 2 + 3680
513
845
K 3 − 4104 K4 )
K 6 = h f ( x i + 12 h, ui − 278 K 1 + 2 K 2 − 3544
2565
K 3 + 1859
4104
K 4 − 11
40
K5 )
• Formula order-5 :
16 6656 28561 9 2
uˆ i +1 = ui + K1 + K3 + K4 − K5 + K6
135 12825 56437 50 55
untuk :
i = 0, 1, 2,…,N-1 dan u0 = y0
Persamaan Tunggal :
dy
= − 25 y
dt
y = e − 25 t
Contoh 1 :
Type
Real = Extended;
Real01 = Array [0..1] of Real;
Var
I,NP : Integer;
XV : Real01;
Yi,Yf,Eps,h : Real;
Begin
Eps := 1.0E-6;
NP := 200;
xv[0] := 0;
xv[1] := 0.2;
Yi := 1.0;
Writeln(xv[0]:0:4,' ',Yi:13,' ',exp(-25*xv[0]):13);
For I := 1 to 5 do
Begin
DRK2SR(xv,Yi,Yf,NP,Eps);
Writeln(xv[1]:0:4,' ',Yf:13,' ',exp(-25*xv[1]):13);
xv[0] := xv[1];
xv[1] := xv[1] + 0.2;
Yi := Yf;
End;
Readln;
End.
Contoh 2 :
Type
Real = Extended;
Real01 = Array [0..1] of Real;
Real50 = Array [1..50] of Real;
Var
I,NP : Integer;
XV : Real01;
Yi,Yf : Real;
Eps : Real;
Begin
Eps := 1.0E-6;
NP := 200;
xv[0] := 0;
xv[1] := 0.2;
Yi := 1.0;
Writeln(xv[0]:0:4,' ',Yi:13,' ',exp(-25*xv[0]):13);
For I := 1 to 5 do
Begin
DRK2MP(xv,Yi,Yf,NP,Eps);
Writeln(xv[1]:0:4,' ',Yf:13,' ',exp(-25*xv[1]):13);
xv[0] := xv[1];
xv[1] := xv[1] + 0.2;
Yi := Yf;
End;
Readln;
End.
Contoh 3 :
dy ⎡ 3,21 ⎤
= − 0,1744 exp ⎢ * ⎥ y
dx ⎣T ⎦
dT * ⎡ 3,21 ⎤
= 0,06984 exp ⎢ * ⎥ y
dx ⎣T ⎦
Contoh 4 :
Type
Real = Extended;
Real01 = Array [0..1] of Real;
Real50 = Array [1..50] of Real;
{$I DRK2SR}
Var
I,N,NP : Integer;
XV : Real01;
Yi,Yf : Real50;
Eps : Real;
Begin
Eps := 1.0E-6;
N := 2;
NP := 20;
xv[0] := 0;
xv[1] := 0.1;
Yi[1] := 1.0;
Yi[2] := 1.0;
Writeln(xv[0]:0:3,' ',Yi[1]:0:6,' ',Yi[2]:0:6);
For I := 1 to 10 do
Begin
DRK2SR(N,xv,Yi,Yf,NP,Eps);
Writeln(xv[1]:0:3,' ',Yf[1]:0:6,' ',Yf[2]:0:6);
xv[0] := xv[1];
xv[1] := xv[1] + 0.1;
Yi := Yf;
End;
Readln;
End.
Contoh 5 :
Type
Real = Extended;
Real01 = Array [0..1] of Real;
Real50 = Array [1..50] of Real;
{$I DRK2MP}
Var
I,N,NP : Integer;
XV : Real01;
Yi,Yf : Real50;
Eps : Real;
Begin
Eps := 1.0E-6;
N := 2;
NP := 20;
xv[0] := 0;
xv[1] := 0.1;
Yi[1] := 1.0;
Yi[2] := 1.0;
Writeln(xv[0]:0:3,' ',Yi[1]:0:6,' ',Yi[2]:0:6);
For I := 1 to 10 do
Begin
DRK2MP(N,xv,Yi,Yf,NP,Eps);
Writeln(xv[1]:0:3,' ',Yf[1]:0:6,' ',Yf[2]:0:6);
xv[0] := xv[1];
xv[1] := xv[1] + 0.1;
Yi := Yf;
End;
Readln;
End.
Contoh 6 :
Type
Real = Extended;
Real01 = Array [0..1] of Real;
Real50 = Array [1..50] of Real;
{$I DRKGIL}
Var
I,N,NP : Integer;
XV : Real01;
Yi,Yf : Real50;
Eps : Real;
Begin
Eps := 1.0E-6;
N := 2;
NP := 10;
xv[0] := 0;
xv[1] := 0.1;
Yi[1] := 1.0;
Yi[2] := 1.0;
Writeln(xv[0]:0:3,' ',Yi[1]:0:6,' ',Yi[2]:0:6);
For I := 1 to 10 do
Begin
DRKGIL(N,xv,Yi,Yf,NP,Eps);
Writeln(xv[1]:0:3,' ',Yf[1]:0:6,' ',Yf[2]:0:6);
xv[0] := xv[1];
xv[1] := xv[1] + 0.1;
Yi := Yf;
End;
Readln;
End.
Contoh 7 :
Type
Real = Extended;
Real01 = Array [0..1] of Real;
Real02 = Array [0..2] of Real;
Real50 = Array [1..50] of Real;
{$I DRKMER}
Var
I,MSG,N,NP : Integer;
xv : Real01;
s : Real02;
Yi,Yf : Real50;
Eps : Real;
Begin
Eps := 1.0E-4;
N := 2;
NP := 100;
xv[0] := 0;
xv[1] := 0.1;
s[0] := (xv[1] - xv[0])/NP;
s[1] := s[0]/64;
Yi[1] := 1.0;
Yi[2] := 1.0;
Writeln(xv[0]:0:3,' ',Yi[1]:0:6,' ',Yi[2]:0:6);
For I := 1 to 10 do
Begin
DRKMER(N,xv,Yi,Yf,s,Eps,MSG);
Writeln(xv[1]:0:3,' ',Yf[1]:0:6,' ',Yf[2]:0:6,'
',MSG);
xv[0] := xv[1];
xv[1] := xv[1] + 0.1;
Yi := Yf;
End;
Readln;
End.
Contoh 8 :
Type
Real = Extended;
Real01 = Array [0..1] of Real;
Real02 = Array [0..2] of Real;
Real50 = Array [1..50] of Real;
{$I DRKF45}
Var
I,MSG,N,NP : Integer;
xv : Real01;
s : Real02;
Yi,Yf : Real50;
Eps : Real;
Begin
Eps := 1.0E-5;
N := 2;
NP := 100;
xv[0] := 0;
xv[1] := 0.1;
s[0] := (xv[1] - xv[0])/NP;
s[1] := s[0]/64;
Yi[1] := 1.0;
Yi[2] := 1.0;
Writeln(xv[0]:0:3,' ',Yi[1]:0:6,' ',Yi[2]:0:6);
For I := 1 to 10 do
Begin
DRKF45(N,xv,Yi,Yf,s,Eps,MSG);
Writeln(xv[1]:0:3,' ',Yf[1]:0:6,' ',Yf[2]:0:6);
xv[0] := xv[1];
xv[1] := xv[1] + 0.1;
Yi := Yf;
End;
Readln;
End.
⎧ dy1 ⎧ y1 ( −1) = 0
⎪⎪ dx = y2 ⎪
⎨ ⎨
⎪ dy2 = − 1 − ( x 2 + 1 ) y ⎪ y ( −1) = input
⎪⎩ dx 1 ⎩ 2
Contoh 9 :
Type
Real = Extended;
Real01 = Array [0..1] of Real;
Real50 = Array [1..50] of Real;
{$I DRKGIL}
Var
I,N,NP : Integer;
XV : Real01;
Yi,Yf : Real50;
Eps : Real;
Begin
Eps := 1.0E-6;
N := 2;
NP := 10;
xv[0] := -1;
xv[1] := -0.9;
Yi[1] := 0.0;
Yi[2] := 1.736465;
Writeln(xv[0]:0:3,' ',Yi[1]:0:6,' ',Yi[2]:0:6);
For I := 1 to 20 do
Begin
DRKGIL(N,xv,Yi,Yf,NP,Eps);
Writeln(xv[1]:0:3,' ',Yf[1]:0:6,' ',Yf[2]:0:6);
xv[0] := xv[1];
xv[1] := xv[1] + 0.1;
Yi := Yf;
End;
Readln;
End.
Contoh 10 :
Type
Real = Extended;
Real01 = Array [0..1] of Real;
Real02 = Array [0..2] of Real;
Real50 = Array [1..50] of Real;
{$I DRKMER}
Var
I,MSG,N,NP : Integer;
xv : Real01;
s : Real02;
Yi,Yf : Real50;
Eps : Real;
Begin
Eps := 1.0E-4;
N := 2;
NP := 10;
xv[0] := -1.0;
xv[1] := -0.9;
s[0] := (xv[1] - xv[0])/NP;
s[1] := s[0]/64;
Yi[1] := 0.0;
Yi[2] := 1.736465;
Writeln(xv[0]:0:3,' ',Yi[1]:0:6,' ',Yi[2]:0:6);
For I := 1 to 20 do
Begin
DRKMER(N,xv,Yi,Yf,s,Eps,MSG);
Writeln(xv[1]:0:3,' ',Yf[1]:0:6,' ',Yf[2]:0:6);
xv[0] := xv[1];
xv[1] := xv[1] + 0.1;
Yi := Yf;
End;
Readln;
End.
⎧ dy1 ⎧ y1 (0) = 0
⎪ dx = 1 ⎧ dy1
⎪ ⎪ y1 = x ⇒ dx = 1 ⎪
⎪ dy2 ⎪ ⎪⎪
⎨ = y3 ⎨ y2 = y ⎨ y2 (0) = 0
⎪ dx ⎪ ⎪
dy
⎪ dy3 ⎪ y3 = 2 ⎪
⎪ dx = − sin( y1 ) + cos( y1 ) - y3 ⎩ dx ⎪⎩ y3 (0) = 1
⎩
Tabel 7. Perbandingan solusi numerik sistem PDB order-2 dengan metode RK-
Gill dengan solusi analitis.
Contoh 11 :
Type
Real = Extended;
Real01 = Array [0..1] of Real;
Real50 = Array [1..50] of Real;
{$I DRKGIL}
Var
I,N,NP : Integer;
XV : Real01;
Yi,Yf : Real50;
Eps,Pi : Real;
Begin
Pi := 4*ArcTan(1);
Eps := 1.0E-6;
N := 3;
NP := 20;
xv[0] := 0;
xv[1] := Pi/20;
Yi[1] := 0.0;
Yi[2] := 0.0;
Yi[3] := 1.0;
Writeln(xv[0]:0:3,' ',Yi[1]:0:6,' ',Yi[2]:0:6,
' ',Yi[3]:0:6,' ',Sin(xv[0]):0:6);
For I := 1 to 20 do
Begin
DRKGIL(N,xv,Yi,Yf,NP,Eps);
Writeln(xv[1]:0:3,' ',Yf[1]:0:6,' ',Yf[2]:0:6,
' ',Yf[3]:0:6,' ',Sin(xv[1]):0:6);
xv[0] := xv[1];
xv[1] := xv[1] + Pi/20;
Yi := Yf;
End;
Readln;
End.