414 Metode Numerik
8.10.4 Prosedur Pendahuluan
PDB hanya mempunyai satu nilai awal, yaitu y0 = y(x0). Dengan demikian, metode
banyak-langkah tidak swa-mulai (self-start), sehingga tidak dapat diterapkan langsung,
sebab metode tersebut memerlukan beberapa buah nilai awal. Inilah kelemahan
metode banyak-langkah.
Misalkan predictor mempunyai persamaan
y*r+1 = yr +
h
/12 (23fr - 16fr-1 + 5fr-2)
Untuk menghitung y*
3, kita harus mempunyai nilai y
0, y
1, dan y
2 agar nilai
f
0 = f(x
0, y
0) , f
1 = f(x
1, y
1) , f
2 = f(x
2, y
2)
dapat ditentukan. Untuk mendapatkan beberapa nilai awal yang lain, kita harus
melakukan prosedur pendahuluan (starting procedure) dengan metode PDB yang
bebas. Metode PDB yang sering dijadikan sebagai prosedur pendahuluan adalah:
- metode Euler
- metode Runge-Kutta
- metode deret Taylor
Jadi, untuk contoh predictor di atas, y
1 dan y
2 dihitung terlebih dahulu dengan salah
satu prosedur pendahuluan. Selanjutnya, metode P -C dapat dipakai untuk
menghitung y
3, y
4, ..., y
n.
Program 8.7 Metode Adams-Bashforth-Moulton
function y_Adams_Bashforth_Moulton(x0, y0, b, h: real):real;
{menghitung y(b) dengan metode Adams_Bashforth_moulton pada PDB
y'=f(x,y); y(x0)=y0 }
var
r, n: integer;
x, y, y0, y1, y2, y3 : real;
begin
n:=(b-x0)/h; {jumlah langkah}
y0:=y0; {nilai awal dari PDB }
{Prosedur pendahuluan untuk menghitung nilai awal lain, y1, y2, y 3}
y1:=y_RK3(x0, y0, x0+h, h); {y(x1)}
y2:=y_RK3(x0, y0, x0+2*h, h); {y(x2)}
y3:=y_RK3(x0, y0, x0+3*h, h); {y(x3)}
x:=x0 + 3*h; { x3 }
for r:=4 to n do
begin
y:=y3 + h/24*(-9*f(x-3*h, y0) + 37*f(x-2*h, y1) - 59*f(x-h, y2)
+ 55f(x, y3);
y:=y3 + h/24*(f(x-2*h, y1)-5*f(x-h, y2) + 19*f(x,y3)
+ 9*f(x+h,y);
y0:=y1;
y1:=y2;