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


unit Unit1;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls;

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.Memo1Click(Sender: TObject);
  var
    m, n, k: Integer;
    xn, xk, x, h, y, s, slag, p: Extended;
  begin
    xn := StrToFloat(Edit1.Text);
    xk := StrToFloat(Edit2.Text);
    m := StrToInt(Edit3.Text);
    n := StrToInt(Edit4.Text);
    h := (xk - xn) / m;          // Расчет шага
    Memo1.Clear;
    Memo1.Lines.Add('      X             S(x)             Y(x)');
    Memo1.Lines.Add('---------------------------------------------');

    x := xn;
    repeat
      s := 0;      // s := -Ln(2);
      p := 1;

      for k := 1 to n do
      begin
        p := p * (-2);    // p := p * (-0.5);
        slag := (p * Cos(k * x)) / k;
        s := s + slag;
      end;

      y := -0.5 * Ln(5 + 4 * Cos(x));

      Memo1.Lines.Add(FloatToStrF(x, ffFixed, 6, 2) + '        ' +
                      FloatToStrF(s, ffFixed, 8, 4) + '        ' +
                      FloatToStrF(y, ffFixed, 8, 4));

      x := x + h;
    until x > (xk + h / 2);
  end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Edit1.Text := '0,2';
  Edit2.Text := '1,2';
  Edit3.Text := '20';
  Edit4.Text := '10';
  Memo1.Clear;
end;

end.