Iklan

Monday, 14 December 2015

Pemodelan dan Metode numerik menggunakan borland delphi

METODE BAGI DUA (Bisection Method)

Prinsip :
Ide awal metode ini adalah metode table, dimana area dibagi menjadi N bagian. Hanya saja metode biseksi ini membagi range menjadi 2 bagian, dari dua bagian ini dipilih bagian mana yang mengandung dan bagian yang tidak mengandung akar dibuang. Hal ini dilakukan berulang-ulang hingga diperoleh akar persamaan.
Langkah – langkah dalam menyelesaikan Metode Bagi Dua :

Langkah 1 :
Pilih a sebagai batas bawah dan b sebagai batas atas untuk taksiran akar sehingga terjadi perubahan tanda fungsi dalam selang interval. Atau periksa apakah benar bahwa f(a) . f(b) < 0


Taksiran nilai akar baru, c diperoleh dari :

Langkah 2 :



Menentukan daerah yang berisi akar fungsi:
Langkah 3 :
  • Jika z merupakan akar fungsi, maka f(x < z) dan f(x > z) saling berbeda tanda.
  • f(a)*f(c) negatif, berarti di antara a & c ada akar fungsi.
  • f(b)*f(c) positif, berarti di antara b & c tidak ada akar fungsi


Menentukan kapan proses pencarian akar fungsi berhenti:
Langkah 4 :
Proses pencarian akar fungsi dihentikan setelah keakuratan yang diinginkan dicapai, yang dapat diketahui dari kesalahan relatif semu.

Contoh implementasi dalam bahasa pemrograman delphi :
Listng source code program sebagai berikut :

unit Unit3;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Buttons, Grids;
type
  TForm3 = class(TForm)
    GroupBox1: TGroupBox;
    Label1: TLabel;
    Label2: TLabel;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Label5: TLabel;
    BitBtn1: TBitBtn;
    BitBtn2: TBitBtn;
    BitBtn3: TBitBtn;
    StringGrid1: TStringGrid;
    GroupBox2: TGroupBox;
    Label3: TLabel;
    Edit4: TEdit;
    Label7: TLabel;
    Edit5: TEdit;
    GroupBox3: TGroupBox;
    Label4: TLabel;
    Label6: TLabel;
    procedure BitBtn1Click(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure BitBtn2Click(Sender: TObject);
    procedure BitBtn3Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
var
  Form3: TForm3;
implementation
{$R *.dfm}

procedure TForm3.BitBtn1Click(Sender: TObject);
const g=9.8;v=40;t=10;
var m,a,b,c,fa,fb,fc,fca,err:Real;
    iterasi:byte;
begin
Stringgrid1.RowCount:=1;
Stringgrid1.Cols[0].Add('ITERASI');
Stringgrid1.Cols[1].Add('A');
Stringgrid1.Cols[2].Add('B');
Stringgrid1.Cols[3].Add('C');
Stringgrid1.Cols[4].Add('F(c)');
Stringgrid1.Cols[5].Add('Error');
m:=strtofloat(edit3.Text);
a:=strtofloat(edit1.Text);
b:=strtofloat(edit2.Text);
iterasi:=1;
fa:=0;
fb:=0;
err:=0;
fca:=0;
fc:=0;
repeat
c:=(a+b)/2;
fc:=((g*m)/c)*(1-exp(-((c/m)*t)))-v;
edit4.Text:=floattostr(c);
edit5.Text:=floattostr(fc);
err:=((fc-fca)/fc)*100;
Stringgrid1.RowCount:=Stringgrid1.RowCount+1;
Stringgrid1.Cols[0].Add(floattostr(iterasi));
Stringgrid1.Cols[1].Add(floattostr(a));
Stringgrid1.Cols[2].Add(formatfloat('#0.00',b));
Stringgrid1.Cols[3].Add(formatfloat('#0.00',c));
Stringgrid1.Cols[4].Add(formatfloat('#0.00',fc));
Stringgrid1.Cols[5].Add(formatfloat('#0.00',abs(err))+'%');
if fc>0 then
      b:=c
else
      a:=c;
iterasi:=iterasi+1;
fca:=fc;
until (abs(err)<=0.5) or (abs(err)<=0.1);
end;

procedure TForm3.FormShow(Sender: TObject);
begin
edit1.Text:='';
edit2.Text:='';
edit3.Text:='';
edit4.Text:='';
edit5.Text:='';
edit3.SetFocus;
Stringgrid1.RowCount:=1;
Stringgrid1.Cols[0].Add('ITERASI');
Stringgrid1.Cols[1].Add('A');
Stringgrid1.Cols[2].Add('B');
Stringgrid1.Cols[3].Add('C');
Stringgrid1.Cols[4].Add('F(c)');
Stringgrid1.Cols[5].Add('Error');
edit3.SetFocus;
end;

procedure TForm3.BitBtn2Click(Sender: TObject);
begin
edit1.Text:='';
edit2.Text:='';
edit3.Text:='';
edit4.Text:='';
edit5.Text:='';
Stringgrid1.RowCount:=1;
Stringgrid1.Cols[0].Add('ITERASI');
Stringgrid1.Cols[1].Add('A');
Stringgrid1.Cols[2].Add('B');
Stringgrid1.Cols[3].Add('C');
Stringgrid1.Cols[4].Add('F(c)');
Stringgrid1.Cols[5].Add('Error');
edit3.SetFocus;
end;

procedure TForm3.BitBtn3Click(Sender: TObject);
begin
form3.Close;
end;
end.

Sekian dulu dari saya...semoga bermanfaat !

No comments:

Post a Comment