unit
Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, ExtCtrls,StdCtrls,Math,Series,
ValEdit, jpeg, TeEngine, TeeProcs, Chart;
type
TForm1 =
class
(TForm)
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
Edit5: TEdit;
Edit6: TEdit;
Edit7: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
Button1: TButton;
Chart1: TChart;
Series1: TLineSeries;
Label8: TLabel;
Label9: TLabel;
Edit8: TEdit;
Edit9: TEdit;
Edit10: TEdit;
Label10: TLabel;
Label11: TLabel;
Label12: TLabel;
Edit11: TEdit;
Edit12: TEdit;
Button2: TButton;
Edit13: TEdit;
Edit14: TEdit;
Label13: TLabel;
procedure
Button1Click(Sender: TObject);
procedure
FormCreate(Sender: TObject);
procedure
Button2Click(Sender: TObject);
private
aY,pY,cY,aX,aP,aC:
array
of
real
;
function
funY(x:
Real
):
Real
;
public
end
;
var
Form1: TForm1;
Hx,Hy,y,H,a0,a1,a2,a3,a4,Ymax,Ymin,Xmax,Xmin,x,Int:
real
;
implementation
{$R *.dfm}
function
TForm1
.
funY(x:
Real
):
Real
;
begin
Result:=a0+a1*x+a2*power(x,
2
)+a3*power(x,
3
)+ a4*power(x,
4
)
end
;
procedure
TForm1
.
FormCreate(Sender: TObject);
begin
try
Xmax:=StrToFloat(Edit7
.
Text);
Xmin:=StrToFloat(Edit6
.
Text);
Ymax:=StrToFloat(Edit11
.
Text);
Ymin:=StrToFloat(Edit12
.
Text);
Hx:=StrToFloat(Edit8
.
Text);
Hy:=StrToFloat(Edit9
.
Text);
H:=StrToFloat(Edit10
.
Text);
except
MessageBeep(Error);
MessageDlg(
'Неверно заданы параметры'
, mtError, [mbOk],
0
);
end
;
Chart1
.
BottomAxis
.
Minimum:=Xmin;
Chart1
.
BottomAxis
.
Maximum:=Xmax;
Chart1
.
LeftAxis
.
Minimum:=Ymin;
Chart1
.
LeftAxis
.
Maximum:=Ymax;
Chart1
.
BottomAxis
.
Increment:=Hx;
Chart1
.
LeftAxis
.
Increment:=Hy;
Form1
.
Button1Click(Sender);
end
;
procedure
TForm1
.
Button1Click(Sender: TObject);
begin
Series1
.
Clear;
x:=Xmin;
a0:=StrToFloat(Edit1
.
Text);
a1:=StrToFloat(Edit2
.
Text);
a2:=StrToFloat(Edit3
.
Text);
a3:=StrToFloat(Edit4
.
Text);
a4:=StrToFloat(Edit5
.
Text);
While
x<=Xmax
do
begin
y:=(a0+a1*x+a2*power(x,
2
)+a3*power(x,
3
)+ a4*power(x,
4
));
Series1
.
AddXY(x, y,
''
, clTeeColor);
x:=x+h;
end
;
end
;
procedure
TForm1
.
Button2Click(Sender: TObject);
function
SUM(
const
Data:
array
of
Real
):
real
;
function
SUMpY(
const
Data:
array
of
Real
):
real
;
function
SUMcY(
const
Data:
array
of
Real
):
real
;
Var
n,i:
integer
;
h,S,T,U:
real
;
begin
ShowMessage (
'введите пожалуйста в поле ввода n(n=(Xmax-Xmin)/h)'
);
x:=Xmin;
n:=StrToInt(Edit14
.
Text);
For
i:=
1
to
n
do
begin
aX[i]:= x + (i-
1
)*h;
aY[i]:= funY(aX[i]);
end
;
x:=Xmin;
For
i:=
1
to
n
do
begin
aP[i]:= x + i*h;
pY[i]:= funY(aP[i]);
end
;
x:=Xmin;
For
i:=
1
to
n
do
begin
aC[i]:= x + (i-
1
)*h + h/
2
;
cY[i]:= funY(aC[i]) ;
end
;
S:=
0
;
For
i:=
1
to
n
do
begin
S:=S+aY[i];
SUM:=S;
end
;
T:=
0
;
For
i:=
1
to
n
do
begin
T:=T+pY[i];
SUMpY:=T;
end
;
U:=
0
;
For
i:=
1
to
n
do
begin
U:=U+cY[i];
SUMcY:=U;
end
;
Int:=
1
/
6
*(SUM + SUMpY +
4
*SUMcY)*h; \\ <font color="MediumTurquoise">вот тут ругается
Not
enough actual parameters</font>
Edit13
.
Text:=FloatToStr(Int);
end
;
end
.