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.