//bukan buat contekan ya... buat belajar. Belum tentu benar..
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Grids;
type
TForm1 = class(TForm)
StringGrid1: TStringGrid;
Edit1: TEdit;
Edit2: TEdit;
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
xl,xu,xr,xrnew,fxl,fxu,fxr,E:real;
i:integer;
begin
xl:=strtofloat(edit1.text);
xu:=strtofloat(edit2.text);
fxl:=exp(-xl)-xl;;
fxu:=exp(-xu)-xu;;
xr:=xu-(fxu*((xl-xu)/(fxl-fxu)));
fxr:=exp(-xr)-xr;
e:=0;
i:=1;
stringgrid1.cells[0,i]:=inttostr(i);
stringgrid1.cells[1,i]:=floattostr(xl);
stringgrid1.cells[2,i]:=floattostr(xu);
stringgrid1.cells[3,i]:=floattostr(xr);
stringgrid1.cells[4,i]:=floattostr(fxl);
stringgrid1.cells[5,i]:=floattostr(fxu);
stringgrid1.cells[6,i]:=floattostr(fxr);
stringgrid1.cells[7,i]:=floattostr(e);
if fxl*fxu<0 then
begin
repeat
fxr:=exp(-xr)-xr;
fxl:=exp(-xl)-xl;;
fxu:=exp(-xu)-xu;;
if fxl*fxr<0 then xu:=xr else xl:=xr;
xrnew:=xu-(fxu*((xl-xu)/(fxl-fxu)));
e:=abs((xrnew-xr)/xrnew);
xr:=xrnew;
i:=i+1;
stringgrid1.cells[0,i]:=inttostr(i);
stringgrid1.cells[1,i]:=floattostr(xl);
stringgrid1.cells[2,i]:=floattostr(xu);
stringgrid1.cells[3,i]:=floattostr(xr);
stringgrid1.cells[4,i]:=floattostr(fxl);
stringgrid1.cells[5,i]:=floattostr(fxu);
stringgrid1.cells[6,i]:=floattostr(fxr);
stringgrid1.cells[7,i]:=floattostr(e);
stringgrid1.RowCount:=i+1;
until e<0.0001;
end
else showmessage('Akar di luar interval');
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
stringgrid1.cells[0,0]:='No.';
stringgrid1.cells[1,0]:='xl';
stringgrid1.cells[2,0]:='xu';
stringgrid1.cells[3,0]:='xr';
stringgrid1.cells[4,0]:='fxl';
stringgrid1.cells[5,0]:='fxu';
stringgrid1.cells[6,0]:='fxr';
stringgrid1.cells[7,0]:='e';
end;
end.
0 komentar:
Posting Komentar