Monday, November 7, 2011

Interpolasi Beda Maju


algoritma untuk button proses adalah :
procedure TForm1.Button1Click(Sender: TObject);
var y0,y1,y2,y3,dy0,dy1,dy2,ddy0,ddy1,dddy0:Real;
begin
  y0:=strtofloat(edit7.text);
  y1:=strtofloat(edit8.text);
  y2:=strtofloat(edit9.text);
  y3:=strtofloat(edit10.text);
  dy0:=y1-y0;
  dy1:=y2-y1;
  dy2:=y3-y2;
  edit11.Text:=format('%8.4f',[dy0]);
  edit12.Text:=format('%8.4f',[dy1]);
  edit13.Text:=format('%8.4f',[dy2]);
  ddy0:=dy1-dy0;
  ddy1:=dy2-dy1;
  edit14.Text:=format('%8.4f',[ddy0]);
  edit15.Text:=format('%8.4f',[ddy1]);
  dddy0:=ddy1-ddy0;
  edit16.Text:=format('%8.4f',[dddy0]);
end;
algoritma untuk button hasil adalah :
procedure TForm1.Button2Click(Sender: TObject);
var
  x,x0,x1,x2,x3,y0,dy0,ddy0,dddy0,m,n,o,r,y:Real;
begin
  x:=strtofloat(edit1.text);
  x0:=strtofloat(edit3.text);
  x1:=strtofloat(edit4.text);
  x2:=strtofloat(edit5.text);
  x3:=strtofloat(edit6.text);
  y0:=strtofloat(edit7.text);
  dy0:=strtofloat(edit11.text);
  ddy0:=strtofloat(edit14.text);
  dddy0:=strtofloat(edit16.text);
  m:=x1-x0;
  n:=x2-x1;
  o:=x3-x2;
  r:=(x-x0)/m;
  y:=y0+(r*dy0)+((r*(r-1)*ddy0)/2)+((r*(r-1)*(r-2)*dddy0)/6);
  edit2.Text:=format('%8.4f',[y]);
end;

namun, metode interpolasi beda maju atau mundur hanya dapat digunakan ketika memiliki beda yang sama pada x0,x1,x2, ... . oleh karena itu, ketika memiliki beda yang berbeda dianjurkan menggunakan metode lagrange.

1 comment: