Очень прошу, помогите найти ошибки в коде!.Ряд Фурье(Pascal) |
Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.
Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.
Очень прошу, помогите найти ошибки в коде!.Ряд Фурье(Pascal) |
iryna |
Сообщение
#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. Сообщение отредактировано: iryna - |
does gabapentin cause weight gai |
Сообщение
#2
|
Гость |
Levitra Neu
|
Текстовая версия | 6.05.2024 10:12 |