ЛАБОРАТОРНАЯ №3
```pascal
unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls, Math;
type
{ TForm1 }
TForm1 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
Memo1: TMemo;
procedure FormCreate(Sender: TObject);
procedure Memo1Click(Sender: TObject);
private
public
end;
var
Form1: TForm1;
implementation
{$R *.lfm}
{ TForm1 }
procedure TForm1.FormCreate(Sender: TObject);
begin
Edit1.Text:= '0,2';
Edit2.Text:= '1,2';
Edit3.Text:= '20';
Edit4.Text:= '20';
Memo1.Clear;
Memo1.Lines.Add('Нажать для расчёта');
end;
procedure TForm1.Memo1Click(Sender: TObject);
var
xn, xk, x, h, s, y, a: Extended;
m, n, k: Integer;
begin
Memo1.Clear;
Memo1.Lines.Add('Лабораторная работа №3. Вариант 18');
xn := StrToFloat(Edit1.Text);
xk := StrToFloat(Edit2.Text);
m := StrToInt(Edit3.Text);
n := StrToInt(Edit4.Text);
h := (xk - xn) / m; // Расчёт шага
Memo1.Lines.Add('Xn = ' + FloatToStrF(xn, ffFixed, 6, 2) +
' Xk = ' + FloatToStrF(xk, ffFixed, 6, 2) +
' h = ' + FloatToStrF(h, ffFixed, 8, 4));
Memo1.Lines.Add('------------------------------------------------');
Memo1.Lines.Add(' x S(x) Y(x)');
Memo1.Lines.Add('------------------------------------------------');
x := xn;
repeat
s := 0;
for k := 1 to n do
begin
a := Power(-2, k) * Cos(k * x) / k;
s := s + a;
end;
y := -0.5 * Ln(5 + 4 * Cos(x));
Memo1.Lines.Add(FloatToStrF(x, ffFixed, 8, 4) + ' ' +
FloatToStrF(s, ffFixed, 8, 4) + ' ' +
FloatToStrF(y, ffFixed, 8, 4));
x := x + h;
until x > xk + h / 2;
end;
end.
```