Pages

Komputasi Numerik Penyelesaian Fungsi Exp(-x)-x dengan Metode McLaurin Bolzano dan Regulafalsi Menggunakan Delphi7

Kamis, 03 April 2014













Keterangan:
.yang membedakan isi Bolzano dengan Regulafalsi adalah dimana untuk hasil tombol Bolzano (Akarnya) dan Regulafalsi (akarnya)., Liat gambar diatas ini sobat.!
.sangat nampak kan hasil perbedaannya... siiiiph (y)...

.ini kodingnya....

procedure TMudawwir12012769.btBolzanoClick(Sender: TObject);
begin
xb:=StrToFloat(eBatasBawah.Text);
xb:=StrToFloat(eBatasAtas.Text);
eiBatas:=StrToFloat(eBatasIterasi.Text);
//menetapkan akar duga awal = xb
AkarDugaAwal := xb;
//mencari nilai fungsi
NilaiFungsiXa := exp (-xa)-xa;
NilaiFungsiXb := exp (-xb)-xb;

//mengecek nilai fungsi akar Duga
if NilaiFungsiXa =0 then          //jika xa akar
begin
 LbHasil.Items.Add('akarnya='+' '+FloatToStr(xa));
 exit;
 end
 else
 if NilaiFungsiXb =0 then //jika xa akar
 begin
 LbHasil.Items.Add('akarnya='+' '+FloatToStr(xb));
  exit;
 end
 else
if NilaiFungsiXa*NilaiFungsiXb> 0 then //jika xa akar
 begin
 eBatasBawah.Clear;
 eBatasAtas.Clear;
 ShowMessage('batas-batasnya salah...segera ganti !');
 exit;
 end
 else
     repeat               //proses iterasi.....
    AkarDuga := (xb+xa)/2;
    NilaiFungsiAkar := exp (-AkarDuga)-AkarDuga;  //cek nilai fungsi
    if NilaiFungsiAkar = 0 then
    begin
    LbHasil.Items.Add('akarnya='+' '+FloatToStr(AkarDuga));
    exit
   end

     else if NilaiFungsiAkar * NilaiFungsiXb > 0 then xb := AkarDuga
     else xa := AkarDuga;
//mencari kesalahan ei....
if akarDuga =0 then        //menghindari pembagian dgn nol..
begin
  akarDuga := 0.000000001;    //ubah menjadi tidak nol....
  ei := abs((AkarDuga-AkarDugaAwal)/AkarDuga)*100;
  akarDuga := 0;      //mengembalikan nilai akarDuga ke nilai semula..
  end
  else
    ei :=abs ((AkarDuga-AkarDugaAwal)/AkarDuga) * 100;
//menampilkan hasil...
  LbHasil.Items.Add('Akarnya = '+ '  '+
    FormatFloat('#.000000',AkarDuga)+' '+
    'kesalahan = '+FormatFloat('#000000',ei));
AkarDugaAwal:=AkarDuga;
Until ei <= eiBatas;
end;

procedure TMudawwir12012769.btexitClick(Sender: TObject);
begin
  Application.Terminate;
end;

procedure TMudawwir12012769.btRegulafalsiClick(Sender: TObject);
begin
//mengambil inputan
xb:= StrToFloat(eBatasBawah.Text);
xa:= StrToFloat(eBatasAtas .Text);
eibatas:= StrToFloat(eBatasIterasi.Text);

//menetapkan akar duga awal =xb
akardugaawal:=xb;

//mencari nilai fungsi
NilaiFungsiXa:=exp(-xa)-xa;
NilaiFungsiXb:=exp(-xb)-xb;

//mengecek nilai fungsi akar duga
if NilaiFungsiXa=0 then   //jika xa akar
begin
   LBHasil.Items.Add('akarnya='+ '   ' + FloatToStr(xa));
   exit;
end
  else
  if NilaiFungsiXb=0 then //jika xb akar
  begin
  LBHasil.Items.Add('akarnya='+ '   ' + FloatToStr(xb));
  exit;
  end
  else       //jika nilai batas bawah dan atas salah
  if NilaiFungsiXa*NilaiFungsiXb>0 then
  begin
     eBatasBawah.Clear;
     eBatasAtas.Clear;
     ShowMessage('batas-batasnya salah...ganti yang baru!!');
     exit;
  end
  else
  repeat          //proses iterasi
       akarduga:=(xb*NilaiFungsiXa-xa*NilaiFungsiXb)/(NilaiFungsiXa-NilaiFungsiXb);
       NilaiFungsiAkar:=exp(-AkarDuga)-AkarDuga; //cek nilai fungsi
       if NilaiFungsiAkar=0 then
       begin
          LBHasil.Items.Add('akarnya = '+'   '+FloatToStr(akarduga));
          exit;
       end
       else if NilaiFungsiAkar*NilaiFungsiXb>0 then xb:=AkarDuga
        else xa:=AkarDuga;

       //mencari kesalahan ei...
       if AkarDuga=0 then           //menghindari pembagian dgn nol
       begin
          akarduga:=0.000000001;      //ubah menjadi tidak nol...
          ei:=abs ((AkarDuga-AkarDugaAwal)/AkarDuga)*100;
          AkarDuga:=0;        //mengembalikan akarduga ke nilai semula....
       end
       else
          ei:=abs((akarduga-akardugaawal)/akarduga)*100;

          //menampilkan hasil...
          LBHasil.Items.Add('akarnya='+'   '+FormatFloat('#.000000',akarduga)+'  '+'kesalahan= '+FormatFloat('#.000000',ei));
          akardugaawal:=akarduga;NilaiFungsiXa:=exp(-xa)-xa;NilaiFungsiXb:=exp(-xb)-xb;
  until ei<= eibatas;

end;

procedure TMudawwir12012769.btulangClick(Sender: TObject);
begin
  Refresh;
  eBatasBawah.Clear;
  eBatasAtas.Clear;
  eBatasIterasi.Clear;
  LbHasil.Clear;
end;

end.

1 komentar:

perhatian!
tolong komentarnya berhubungan dengan artikel yang ada.
komentar yang mengarah ke tindakan spam
akan dihapus atau terjaring secara otomatis oleh spam filter

  1. mkasih yah bantu bnget ... tapi untuk bentuk java nya gmna ya ?masih bingung dn blm pkai delphi masih diminta pakai java.

    BalasHapus