Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
56
Добавлен:
11.02.2014
Размер:
42.81 Кб
Скачать

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.