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.20145 Кб21Support.dcu
  • #
    02.05.20145 Кб21Support.pas
  • #
    02.05.20149 Кб21Unit1.dcu
  • #
    02.05.201451 б21Unit1.ddp
  • #
    02.05.201412 Кб21Unit1.dfm
  • #
    02.05.20144 Кб21Unit1.pas
  • #
    02.05.20143 Кб21Unit2.dcu
  • #
    02.05.201451 б22Unit2.ddp
  • #
    02.05.2014687 б21Unit2.dfm
  • #
    02.05.2014350 б21Unit2.pas