IPB
ЛогинПароль:

> ВНИМАНИЕ!

Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

 
 Ответить  Открыть новую тему 
> Очень прошу, помогите найти ошибки в коде!.Ряд Фурье(Pascal)
сообщение
Сообщение #1





Группа: Пользователи
Сообщений: 1
Пол: Женский

Репутация: -  0  +



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

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

Сообщение отредактировано: iryna -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






Buy Tamoxifen For Men
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Гость






Levitra Neu
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Бывалый
***

Группа: Пользователи
Сообщений: 155
Пол: Мужской

Репутация: -  0  +


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?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 29.03.2024 21:47
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name