Загрузка данных


ЛАБОРАТОРНАЯ №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.

```