Алгоритмы расчетов.
Р
асчёт
зависимости Z=Z(A):
Р
асчёт
зависимости Z=Z(B):
Р
асчёт
зависимости Z=Z(R):
Р
асчет
зависимости R=R(T)
для двух различных значений
:
Программный код
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
label l1,l2;
const B=0.01;
detT=0.01;
detA=9/400;
A1=9/40;
A2=1.5;
R=0.7;
var A,Vr1,Vr2,Vz1,Vz2,R1,R2,z1,z2:real;
Tx:TextFile;
begin
AssignFile(Tx,'Z(a).txt');
Rewrite(Tx);
A:=A1;
l1:
Vr1:=0;
Vz1:=1;
z1:=0;
R1:=1;
l2:
Vr2:=detT*(-B*R1+A*Vr1)+Vr1;
Vz2:=detT*(1-A*Vz1)+Vz1;
z2:=detT*Vz1+z1;
R2:=detT*Vr1+R1;
if R2<R then begin
Writeln(Tx,z2,A);
A:=A+detA;
if A<A2 then goto l1;
end
else begin
Vr1:=Vr2;
Vz1:=Vz2;
R1:=R2;
z1:=z2;
goto l2;
end;
CloseFile(Tx);
end;
procedure TForm1.Button2Click(Sender: TObject);
label l1,l2;
const A=9/40;
detT=0.01;
detB=0.01;
B1=0.01;
B2=0.5;
R=0.7;
var B,Vr1,Vr2,Vz1,Vz2,R1,R2,z1,z2:real;
Tx:TextFile;
begin
AssignFile(Tx,'Z(b).txt');
Rewrite(Tx);
B:=B1;
l1:
Vr1:=0;
Vz1:=1;
z1:=0;
R1:=1;
l2:
Vr2:=detT*(-B*R1+A*Vr1)+Vr1;
Vz2:=detT*(1-A*Vz1)+Vz1;
z2:=detT*Vz1+z1;
R2:=detT*Vr1+R1;
if R2<R then begin
Writeln(Tx,z2,B);
B:=B+detB;
if B<B2 then goto l1;
end
else begin
Vr1:=Vr2;
Vz1:=Vz2;
R1:=R2;
z1:=z2;
goto l2;
end;
CloseFile(Tx);
end;
procedure TForm1.Button3Click(Sender: TObject);
label l1;
var Vr1,Vr2,Vz1,Vz2,R1,R2,z1,z2,A,B,delT:real;
Tx:TextFile;
begin
AssignFile(Tx,'Z(r).txt');
Rewrite(Tx);
A:=1;
B:=0.25;
delT:=0.01;
R1:=1;
z1:=0;
Vr1:=0;
Vz1:=1;
l1:
Vr2:=delT*(-B*R1+A*Vr1)+Vr1;
Vz2:=delT*(1-A*Vz1)+Vz1;
z2:=delT*Vz1+z1;
R2:=delT*Vr1+R1;
Writeln(Tx,z2,R2);
if R2>sqrt(0.3) then begin
Vr1:=Vr2;
Vz1:=Vz2;
z1:=z2;
R1:=R2;
goto l1;
end;
CloseFile(Tx);
end;
procedure TForm1.Button4Click(Sender: TObject);
var
Tx:TextFile;
z0,Vr0,Vz0,R0,z1,Vr1,Vz1,R1,z2,Vr2,Vz2,R2,A,B,delT,T:real;
begin
z0:=0;
Vr0:=0;
Vz0:=1;
R0:=1;
A:=0;
B:=0.01;
delT:=0.01;
T:=0;
AssignFile(Tx,'R(T).txt');
rewrite(Tx);
Vr1:=Vr0+(A*Vr0-B*R0)*delT;
Vz1:=Vz0+(1-A*Vz0)*delT;
R1:=R0+Vr0*delT;
z1:=z0 + Vz0*delT;
T:=T+delT;
while R1>=sqrt(0.3) do
begin
Vr2:=Vr1;
Vz2:=Vz1;
R2:=R1;
z2:=Z1;
Writeln(Tx,T:8:3,' ',R1:8:5);
Vr1:=Vr2+(A*Vr2-B*R2)*delT;
Vz1:=Vz2+(1-A*Vz2)*delT;
R1:=R2+Vr2*delT;
z1:=Z2+Vz2*delT;
T:=T+delT;
end;
Writeln(Tx,' ');
T:=0;
delT:=delT*10;
Vr1:=Vr0+(A*Vr0-B*R0)*delT;
Vz1:=Vz0+(1-A*Vz0)*delT;
R1:=R0+Vr0*delT;
z1:=Z0+Vz0*delT;
T:=T+delT;
while R1 >=sqrt(0.3) do
begin
Vr2:=Vr1;
Vz2:=Vz1;
R2:=R1;
z2:=z1;
Writeln(Tx,T:8:3,' ',R1:8:5);
Vr1:=Vr2+(A*Vr2-B*R2)*delT;
Vz1:=Vz2+(1-A*Vz2)*delT;
R1:=R2+Vr2*delT;
z1:=Z2+Vz2*delT;
T:=T+delT;
end;
CloseFile(Tx);
end;
end.
