Помощь - Поиск - Пользователи - Календарь
Полная версия: Очень прошу, помогите найти ошибки в коде!.Ряд Фурье(Pascal)
Форум «Всё о Паскале» > Современный Паскаль и другие языки > Делфи
iryna

Это код оконного режима Ряду Фурье. Этот код дал преподаватель и намеренно сделал в нем небольшие глупые ошибки. Программа не работает((
Это очень важно, прошу помогите !!!

unit Unit2;

interface

uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.Samples.Spin, Vcl.StdCtrls,
Vcl.ExtCtrls;

type
Vector = array [0..1000] of Real; // для створення масивів із координатами графіків
Vec = array [0..50] of Real; // для створення масивів із коефіцієнтами ряду Фур’є
TForm2 = class(TForm)
Image1: TImage;
GroupBox1: TGroupBox;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
Label9: TLabel;
Label10: TLabel;
Label11: TLabel;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
SpinEdit1: TSpinEdit;
SpinEdit2: TSpinEdit;
SpinEdit3: TSpinEdit;
SpinEdit4: TSpinEdit;
Button2: TButton;
Button3: TButton;
procedure Button2Click(Sender: TObject);

private
{ Private declarations }
public
{ Public declarations }
end;

var
Form2: TForm2;
Xe, Ye : Vector; // Масиви для зберігання координат нашої періодичної функції
Xg, Yg : Vector; // Масиви для зберігання координат протабульованого ряду Фур'є
a, b, c : Vec; // Масиви для зберігання коефіцієнтів ряду Фур'є
Ne, Ngr, Ng : Integer; // Ne = Ngr кількість точок обох графіків
al, bl, Tp : Real; // Область визначення функції та її період : Tp = bl – al

implementation

{$R *.dfm}


Function f(x : Real) : Real; // Опис нашої періодичної функції
Begin
Tp := bl - al;
if x < TP / 2 then
f:= 2 else
if(x >= TP / 2) and (x < 3 * TP / 4) then
f := 4 * (TP - 2 * x) / TP
else
f := 8 * (x - TP) / TP;
end;
Procedure TabF(var Xe: Vector; var Ye: Vector);// Процедура табулювання періодичної функції
Var h : Real;
i : Integer;
Begin
h := (bl - al) / Ne;
Xe[0]:= al;
For i := 0 to Ne - 1 do
Begin
Ye[i] := f(Xe[i]) ;
Xe[i+1] := Xe[i] + h;
End;
End;
procedure TForm2.Button2Click(Sender: TObject);
begin

begin
Self.Close;
end;
end;

end.
// Процедура побудови і табулювання ряду Фур’є згідно з алгоритмом, що є на рис. 4.
Procedure Furje(Xe, Ye : Vector; Ne : Integer; var Yg : Vector);
Var i, k : Integer;
w, KOM, S, G, D : Real;
Begin
Ng := StrToInt(Form1.Edit2.text); // Вводимо кількість гармонік
TP := bl - al; // TP – період нашої функції
// Обчислення коефіцієнтів ряду Фур'є
w := 2 * Pi / TP;
For k := 1 to Ng do
Begin
KOM := k * w;
G := 0.0;
D := 0.0;
For i :=1 to Ne do
Begin
S := KOM * Xe[i];
G := G + Ye[i] * Cos(S);
D := D + Ye[i] * Sin(S);
End;
a[k] := 2 * G / Ne;
b[k] := 2 * D / Ne;
c[k] := Sqrt(Sqr(a[k]) + Sqr(b[k]));
End;
a[0] := 0.0;
For i := 1 to Ne do
a[0] := a[0] + Ye[i];
a[0] := a[0] / Ne;
For i := 0 to Ne - 1 do // Побудова і табулювання суми ряду Фур’є
Begin
S := 0;
D := Xe[i] * w;
For k:=1 to Ng do
Begin
KOM := k * D;
S := S + b[k] * Sin(KOM) + a[k] * Cos(KOM);
End;
Yg[i] := a[0] + S;
End;
End;
end;
procedure TForm2.Button3Click(Sender: TObject);
begin
Procedure TForm1.Button1Click(Sender : TObject);
Var p,zx,zy,ay,bx,krx,kry,xx,yy,Gx,Gy : Real;
i,j,krokx,kroky,drv,drm,visx,visy : Integer;
l:integer;
minYg,maxYg,maxx,maxy,minx,miny,kx,ky:real;
// Процедура візуалізації гармонік
Procedure Garm(Ng : Integer; c:Vec);
Var i , Krokx, x : Integer;
MaxC, Ky, W : Real;
Begin
Krokx := (Image1.ClientWidth - 2 * L) div Ng;
MaxC := c[1];
For I := 2 to Ng do
If c[i] > MaxC then MaxC := c[i];
Ky := (Image1.ClientHeight div 2) / MaxC;
With Image1.Canvas do
Begin
Pen.Color := clHighlight;
Pen.Width := 2;
MoveTo(L, L + 20 );
LineTo(L + 10, L + 10);
LineTo(L + 20, L + 20);
MoveTo(L + 10, L + 10);
LineTo(L + 10, Image1.ClientHeight - 50);
LineTo(Image1.ClientWidth-20, Image1.ClientHeight-50);
MoveTo(Image1.ClientWidth-40, Image1.ClientHeight-60);
LineTo(Image1.ClientWidth-20, Image1.ClientHeight-50);
LineTo(Image1.ClientWidth-40, Image1.ClientHeight-40);
TextOut(L - 2, L ,'C');
TextOut(ClientWidth - 50, ClientHeight - 25 ,'W');
Pen.Color := clFuchsia;
Pen.Width := 2;
x := KrokX + 20;
w := 2 * Pi /(bl - al);
For i:= 1 to Ng do
Begin
MoveTo(Round(x)+3,Image1.ClientHeight-50);
LineTo(Round(x)+3,Image1.ClientHeight-50-Round(ky*c[i]));
TextOut(round(x),Image1.ClientHeight - Round(ky*c[i])-65, FloatToStrF(x,ffGeneral,0,0));
Ellipse(round(x),Image1.ClientHeight-53,round(x)+5,Image1.ClientHeight-48);
end;

end. wub.gif
lower price on finasteride cambe
Buy Tamoxifen For Men
does gabapentin cause weight gai
Levitra Neu
nishaknapp
Why not settling on games that is fun and at the same time your earning. Well it'll make suspense because the game is well but dude just try it and it gave me hope while pandemic is real rn. 5 Practical Ways to Become a Smart Casino Player

Добавлено через 1 мин.
Why not settling on games that is fun and at the same time your earning. Well it'll make suspense because the game is well but dude just try it and it gave me hope while pandemic is real rn. Why Are Online Casinos Popular to Newbie Players?
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.