unit Unit1;

interface

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

type
TForm1 = class(TForm)
Chart2: TChart;
SeriesRq: TLineSeries;
SeriesRq_1: TLineSeries;
Chart3: TChart;
SeriesQ_t: TLineSeries;
Panel2: TPanel;
Label82: TLabel;
Label81: TLabel;
Label80: TLabel;
Label79: TLabel;
Label78: TLabel;
Label77: TLabel;
Label76: TLabel;
Label75: TLabel;
Label74: TLabel;
Label73: TLabel;
Label72: TLabel;
Label70: TLabel;
Label71: TLabel;
Label69: TLabel;
Label68: TLabel;
Label67: TLabel;
Label66: TLabel;
Label65: TLabel;
Label64: TLabel;
Label63: TLabel;
Label62: TLabel;
Label61: TLabel;
Label60: TLabel;
Label59: TLabel;
Label58: TLabel;
Label57: TLabel;
Label56: TLabel;
Label55: TLabel;
Label54: TLabel;
Label53: TLabel;
Label52: TLabel;
Label83: TLabel;
Label84: TLabel;
Label85: TLabel;
Label86: TLabel;
btnCalc2: TButton;
edt_delta_tau: TEdit;
edt_tau_max: TEdit;
edth: TEdit;
edt_T_k: TEdit;
edt_V_a: TEdit;
edt_beta_e: TEdit;
edt_alfa_2e: TEdit;
edt_alfa_1e: TEdit;
edt_A2: TEdit;
edt_A1: TEdit;
edt_sigma_q: TEdit;
edt_mean: TEdit;
edt_stddev: TEdit;
edt_abs: TEdit;
edt_otn: TEdit;
PB1: TProgressBar;
Label1: TLabel;
procedure btnCalc2Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation
uses Runge, Perturb;

{$R *.dfm}

procedure TForm1.btnCalc2Click(Sender: TObject);
var
tau,tt,RRx,RRq: extended;
k,M:integer;
my_abs,my_otn: extended;
begin
try
sigma_q:=StrToFloat(edt_sigma_q.Text);
A1:=StrToFloat(edt_A1.Text);
A2:=1-A1;
edt_A2.Text:=FloatToStr(A2);
alfa_1e:=StrToFloat(edt_alfa_1e.Text);
alfa_2e:=StrToFloat(edt_alfa_2e.Text);
beta_e:=StrToFloat(edt_beta_e.Text);
V_a:=StrToFloat(edt_V_a.Text);
Tk_1:=StrToFloat(edt_T_k.Text);
h_1:=StrToFloat(edth.Text);
tau_max:=StrToFloat(edt_tau_max.Text);
delta_tau:=StrToFloat(edt_delta_tau.Text);

except
on EConvertError do
begin
Application.MessageBox('Значение параметра должно быть числовым','Ошибка');
exit;
end
end;
alfa_1:=alfa_1e*V_a;
alfa_2:=alfa_2e*V_a;
beta:=beta_e*V_a;
Label1.Caption :='Расчет начат';
SeriesRq.Clear();
tau:=0;
while tau<=tau_max do
begin
SeriesRq.AddXY(tau,Rq(tau));
tau:=tau+delta_tau;
end;

Generate();
SeriesQ_t.Clear();
tt:=0;
k:=0;
while k<=Count-1 do
begin
SeriesQ_t.AddXY(tt,QQ[k]);
tt:=tt+h_1;
inc(k);
end;

edt_mean.Text:=FloatToStr(my_mean);
edt_stddev.Text:=FloatToStr(my_stddev);

SeriesRq_1.Clear();
tau:=0;
my_abs:=0;
my_otn:=0;
M:= Trunc(tau_max/h_1)+1;
PB1.Min :=0;
PB1.Max :=M ;
for k:=0 to M do
begin
RRx:=Rx(k,M);
RRq:=Rq(tau);
my_abs:=my_abs+abs(RRq-RRx);
my_otn:=my_otn+abs(RRq-RRx)/RRq;
SeriesRq_1.AddXY(tau, RRx);
tau:=tau+h_1;
PB1.Position:=k;
Application.ProcessMessages;
end;
my_abs:=my_abs/Count;
my_otn:=my_otn/Count;
edt_abs.Text:=FloatToStr(my_abs);
edt_otn.Text:=FloatToStr(my_otn);
Label1.Caption :='Расчет окончен';
Free_vars();
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
Label1.Caption :='Состояние';
end;

end.
Соседние файлы в папке Моделирование_внешней_среды(2)
  • #
    02.05.20142.28 Кб17Runge.dcu
  • #
    02.05.20141.56 Кб17Runge.pas
  • #
    02.05.20149.1 Кб17Unit1.dcu
  • #
    02.05.201451 б17Unit1.ddp
  • #
    02.05.201413.89 Кб17Unit1.dfm
  • #
    02.05.20143.62 Кб17Unit1.pas