Скачиваний:
25
Добавлен:
15.06.2014
Размер:
33.79 Кб
Скачать

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, Buttons, StdCtrls, ExtCtrls, TeeProcs, TeEngine, Chart,

Gauss_Krist_3,Polinom_Hytona, Series;

type

TForm1 = class(TForm)

Edit1: TEdit;

Edit2: TEdit;

Edit3: TEdit;

Edit4: TEdit;

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

Chart1: TChart;

Button1: TButton;

Button2: TButton;

Label4: TLabel;

Label5: TLabel;

BitBtn1: TBitBtn;

Series1: TLineSeries;

Series2: TLineSeries;

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure Edit1KeyPress(Sender: TObject; var Key: Char);

procedure Edit2KeyPress(Sender: TObject; var Key: Char);

procedure Edit3KeyPress(Sender: TObject; var Key: Char);

procedure Edit4KeyPress(Sender: TObject; var Key: Char);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

{$R *.dfm}

function f(x:extended):extended;

begin

f:=exp(x)/(x*x*x)-(sin(x)*sin(x)*sin(x));

end;

procedure TForm1.Button1Click(Sender: TObject);//Аппроксимация

var a,b,h,t:extended;

n,m,k:integer;

x,y:znach;

label vvod;

begin

if (Length(Edit1.Text)=0) or (Length(Edit2.Text)=0) or

(Length(Edit3.Text)=0) or (Length(Edit4.Text)=0) then

begin

ShowMessage('Ошибка ввода данных!'+#13+'Все поля должны быть заполнены!');

goto vvod;

end

else

a:=StrToFloat(Edit1.Text);

b:=StrToFloat(Edit2.Text);

n:=StrToInt(Edit3.Text);

m:=StrToInt(Edit4.Text);

if (n>50) or (n<2) then

begin

ShowMessage('Количество узловых точек должно быть не менее 2 и не более 50');

goto vvod;

end

else

if (m>2147483647) or (m<2) then

begin

ShowMessage('Количество шагов должно быть не менее 2 и не более 2147483647');

goto vvod;

end

else

h:=(b-a)/(n-1);

for k:=1 to n do

begin

x[k]:=a+(k-1)*h;

y[k]:=f(x[k]);

end;

series1.Clear; series2.Clear;

for k:=0 to m do

begin

t:=a+k*(b-a)/m;

series1.AddXY(t,f(t),'',clred);

series2.AddXY(t,Hyton(t,x,y,n),'',clgreen);

end;

Button2.SetFocus;

vvod:

end;

procedure TForm1.Button2Click(Sender: TObject);//Интегрирование

var a,b:extended;

m:integer;

label vvod;

begin

if (Length(Edit1.Text)=0) or (Length(Edit2.Text)=0) or

(Length(Edit4.Text)=0) then

begin

ShowMessage('Ошибка ввода данных!'+#13+'Поля должны быть заполнены!');

goto vvod;

end

else

a:=StrToFloat(edit1.Text);

b:=StrToFloat(edit2.Text);

m:=StrToInt(edit4.Text);

if (m>2147483647) or (m<2) then

begin

ShowMessage('Количество шагов должно быть не менее 2 и не более 2147483647');

goto vvod;

end

else

label5.Caption:='Интеграл= '+FloatToStrf(gauss_3(a,b,m,f),fffixed,7,7);

vvod:

end;

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);

begin

case key of

'0'..'9':;

#44:;

#8:;

#45:;

#13:Edit2.SetFocus;

else ShowMessage('Вводить можно только цифры,запятую и минус!');

Key:=chr(0);

end;

end;

procedure TForm1.Edit2KeyPress(Sender: TObject; var Key: Char);

begin

case key of

'0'..'9':;

#8:;

#44:;

#45:;

#13:Edit3.SetFocus;

else ShowMessage('Вводить можно только цифры,запятую и минус!');

Key:=chr(0);

end;

end;

procedure TForm1.Edit3KeyPress(Sender: TObject; var Key: Char);

begin

case key of

'0'..'9':;

#8:;

#13:Edit4.SetFocus;

else ShowMessage('Вводить можно только цифры!');

Key:=chr(0);

end;

end;

procedure TForm1.Edit4KeyPress(Sender: TObject; var Key: Char);

begin

case key of

'0'..'9':;

#8:;

#13:Button1.SetFocus;

else ShowMessage('Вводить можно только цифры!');

Key:=chr(0);

end;

end;

end.

Соседние файлы в папке Аппроксимация