
лабораторная работа / лабораторные работы по LAZARUS / отчет по 3лазарус.СПО
.docx
№ |
|
|
S(x) |
n |
Y(x) |
1 |
2 |
3 |
4 |
5 |
6 |
1 |
0.1 |
1 |
|
16 |
|
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
CheckBox1: TCheckBox;
CheckBox2: TCheckBox;
CheckBox3: TCheckBox;
Button1: TButton;
Memo1: TMemo;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var xn,xk,x,h,an,s,y,al,R,del,n: extended;
k: integer;
begin
n:= StrToFloat(Edit1.Text);
xn:=StrToFloat(Edit2.Text);
xk:=StrToFloat(Edit3.Text);
if CheckBox1.Checked then
Memo1.Lines.Add('Исходные данные: n='+FloatToStrF(n,ffFixed,6,1)+
' Xn='+FloatToStrF(xn,ffFixed,6,1)+' Xk='+FloatToStrF(xk,ffFixed,6,1));
h:=(xk-xn)/10; // вычисление шага h
x:=xn;
repeat // öèêë ïî x
an:=x-((x*x*x)/6); // нулевой член ряда
S:=an; // начальное значение суммы ряда
for k:=0 to n do
begin
R:=(-x*x*x)/(2*k+2)*(2*k+3)*(2*k+4);
an:=an*R; // следующий член ряда
S:=S+an; // сумма членов ряда
end;
y:=sin(x);
al:=s-y; // абсолютная погрешность
del:=abs((s-y)/y)*100; // относительная погрешность
if CheckBox2.Checked then
if CheckBox3.Checked then
Memo1.Lines.Add('x='+FloatToStrF(x,ffFixed,6,2)+
' S='+ FloatToStrF(s,ffFixed,6,3)+
' Y='+ FloatToStrF(y,ffFixed,6,3)+
' A='+ FloatToStrF(al,ffFixed,6,3)+
' D='+ FloatToStrF(del,ffFixed,6,0)+'%')
else
Memo1.Lines.Add('x='+FloatToStrF(x,ffFixed,6,2)+
' S='+ FloatToStrF(s,ffFixed,6,3)+
' Y='+ FloatToStrF(y,ffFixed,6,3)+
' A='+ FloatToStrF(al,ffFixed,6,3))
else if CheckBox3.Checked then
Memo1.Lines.Add('x='+FloatToStrF(x,ffFixed,6,2) +
' S='+ FloatToStrF(s,ffFixed,6,3)+
' Y='+ FloatToStrF(y,ffFixed,6,3)+
' D='+ FloatToStrF(del,ffFixed,6,0)+'%')
else
Memo1.Lines.Add('x='+FloatToStrF(x,ffFixed,6,2)+
' S='+ FloatToStrF(s,ffFixed,6,3)+
' Y='+ FloatToStrF(y,ffFixed,6,3));
x:=x+h;
until x>xk;
end;
end.