Скачиваний:
23
Добавлен:
15.06.2014
Размер:
3.8 Кб
Скачать
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.
Соседние файлы в папке Аппроксимация