unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, StdCtrls, Support, Buttons, ComCtrls, TeEngine, Series,
ExtCtrls, TeeProcs, Chart;

type
TForm1 = class(TForm)
PageControl1: TPageControl;
TabSheet1: TTabSheet;
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;
Edit5: TEdit;
Edit6: TEdit;
Edit7: TEdit;
Edit8: TEdit;
Edit9: TEdit;
Edit10: TEdit;
Edit11: TEdit;
BitBtn1: TBitBtn;
ProgressBar1: TProgressBar;
CheckBox1: TCheckBox;
Memo1: TMemo;
Button1: TButton;
Panel1: TPanel;
Chart1: TChart;
Series1: TLineSeries;
Series2: TLineSeries;
Series3: TLineSeries;
Series4: TLineSeries;
procedure BitBtn1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure CheckBox1Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}
Uses Unit2;
procedure TForm1.BitBtn1Click(Sender: TObject);
Var
m1, m2, c1, c2, k1, k2, x1, x2, dx1, dx2, t0, tk, h, q0, wq: Double;
w1,w2,y1,y2:Double;
i,j:integer;
Runge: TRunge;
begin
Memo1.Clear;
Series1.Clear;
Series2.Clear;
Series3.Clear;
x1:= 0.1;
dx1:= 0;
x2:= 0;
dx2:= 0;
m1:=StrToFloat(Edit1.Text);
c1:=StrToFloat(Edit2.Text);
k1:=StrToFloat(Edit3.Text);
m2:=StrToFloat(Edit4.Text);
c2:=StrToFloat(Edit5.Text);
k2:=StrToFloat(Edit6.Text);
t0:=StrToFloat(Edit7.Text);
tk:=StrToFloat(Edit8.Text);
h:=StrToFloat(Edit9.Text);
q0:=StrToFloat(Edit10.Text);
wq:=StrToFloat(Edit11.Text);
Runge:=TRunge.Create(m1,m2,c1,c2,k1,k2,x1,dx1,x2,dx2,h,tk,q0,wq);
w1:=sqrt(c1/m1);
y1:=k1/(2*sqrt(c1*m1));
w2:=sqrt(c2/m2);
y2:=k2/(2*sqrt(c2*m2));
Runge.Raschet(CheckBox1.Checked,ProgressBar1);
Memo1.Lines.Add('w1='+FloatToStrF(w1,ffFixed, 5, 3));
Memo1.Lines.Add('w2='+FloatToStrF(w2,ffFixed, 5, 3));
Memo1.Lines.Add('y1='+FloatToStrF(y1,ffFixed, 5, 3));
Memo1.Lines.Add('y2='+FloatToStrF(y2,ffFixed, 5, 3));
With Form2 do
begin
StringGrid1.RowCount := Trunc(Length(Runge.values) / 10);
StringGrid1.Cells[0,0] := 't';
StringGrid1.Cells[1,0] := 'x1(t)';
StringGrid1.Cells[2,0] := 'x2(t)';
end;
i := 0;
j := 1;
// Chart1.
While i<Length(Runge.values) Do
Begin
with form2 do
begin
StringGrid1.Cells[0,j] := FloatToStrF(Runge.values[i].t,ffFixed, 3, 3);
StringGrid1.Cells[1,j] := FloatToStrF(Runge.values[i].x1,ffFixed, 5, 3);
StringGrid1.Cells[2,j] := FloatToStrF(Runge.values[i].x3,ffFixed, 5, 3);
end;
j := j + 1;
i := i + 1;
Series4.AddXY(0,-0.01) ;
Series1.AddXY(Runge.values[i].t,Runge.values[i].x1);
Series2.AddXY(Runge.values[i].t,Runge.values[i].x3);
// Series3.AddXY(Runge.values[i].t,Runge.q*wq*cos(wq*Runge.values[i].t));
if CheckBox1.Checked=true then
Series3.AddXY(Runge.values[i].t,Runge.q*sin(Runge.wq*Runge.values[i].t));
End;
Runge.Destroy;
ProgressBar1.Position:=0;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
Memo1.Clear;
if not Assigned(Form2) then
Form2:=TForm2.Create(Self);
with Form2 do
begin
StringGrid1.Cells[0,0] := 't';
StringGrid1.Cells[1,0] := 'x1(t)';
StringGrid1.Cells[2,0] := 'x2(t)';
end;
end;

procedure TForm1.CheckBox1Click(Sender: TObject);
begin
if CheckBox1.Checked then
begin
edit10.Enabled:=true;
edit11.Enabled:=true;
end
else
begin
edit10.Enabled:=false;
edit11.Enabled:=false;
end;

end;

procedure TForm1.Button1Click(Sender: TObject);
begin
Form2.ShowModal ;
end;

end.
Соседние файлы в папке Колебательная_Система(1)
  • #
    02.05.20144.89 Кб17Support.dcu
  • #
    02.05.20145.33 Кб17Support.pas
  • #
    02.05.20149.31 Кб17Unit1.dcu
  • #
    02.05.201451 б17Unit1.ddp
  • #
    02.05.201411.5 Кб17Unit1.dfm
  • #
    02.05.20144.23 Кб17Unit1.pas
  • #
    02.05.20143.48 Кб17Unit2.dcu
  • #
    02.05.201451 б17Unit2.ddp
  • #
    02.05.2014687 б17Unit2.dfm
  • #
    02.05.2014350 б17Unit2.pas