Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
unit uncicl;
{$mode objfpc}{$H+}
Interface
Uses
Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs, Spin,
StdCtrls, Buttons;
Type
{ TForm1 }
TForm1 = class (TForm)
Button1: TButton;
CheckBox1: TCheckBox;
CheckBox2: TCheckBox;
CheckBox3: TCheckBox;
Edit1: TEdit;
Edit2: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Memo1: TMemo;
SpinEdit1: TSpinEdit;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
Private
{ private declarations }
Public
{ public declarations }
end;
Var
Form1: TForm1;
Implementation
{ TForm1 }
procedure TForm1.FormCreate(Sender: TObject);
Begin
SpinEdit1.Value:=3; // количество членов ряда N
Edit1.text:='0,1'; // начальное значение Xn
Edit2.text:='2,0'; // конечное значение Xk
Memo1.Clear;
Memo1.Lines.Add('Лабораторная работа №3 – Циклический алгоритм');
end;
procedure TForm1.Button1Click(Sender: TObject);
var xn,xk,x,h,an,s,y,al,R,del: extended;
n,k: integer;
Begin
n:= SpinEdit1.Value;
xn:=StrToFloat(Edit1.Text);
xk:=StrToFloat(Edit2.Text);
if CheckBox1.Checked then
Memo1.Lines.Add('Исходные данные: n='+IntToStr(n)+
' Xn='+FloatToStrF(xn,ffFixed,6,1)+' Xk='+FloatToStrF(xk,ffFixed,6,1));
h:=(xk-xn)/10; // вычисление шага h
x:=xn;
repeat // цикл по x
an:=1; // нулевой член ряда
S:=an; // начальное значение суммы ряда
for k:=0 to n do
Begin
R:=-x*x*(2*sqr(k)+4*k+3)/((2*k+1)*(2*k+2)*(2*sqr(k)+1));
an:=an*R; // следующий член ряда
S:=S+an; // сумма членов ряда
end;
y:=(1-x*x*0.5)*cos(x)-0.5*x*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;
Дата публикования: 2015-02-18; Прочитано: 166 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!