ПриложениеВ (1035709), страница 2
Текст из файла (страница 2)
y2:=yout;
ee1e[1]:=-V1o/(hh);
ee2e[1]:=-V2o/(hh);
yin[1]:=0; yin[2]:=0; yin[3]:=0; yin[4]:=0;
for j:=0 to M-1 do
begin
num:=j+1;
zin:=l[j]/l0;
eps:=1e-6;
eta:=0.0;
prim:=true;
zout:=l[j+1]/l0;
RungeK(FexRunge[j+1],zin,yin,N,eps,eta,zout,prim,yout);
yin:=yout
end;
y0:=yout;
b[1]:=(-y0[3]*y2[4]+y0[4]*y2[3])/(y1[3]*y2[4]-y1[4]*y2[3]);
b[2]:=(-y1[3]*y0[4]+y1[4]*y0[3])/(y1[3]*y2[4]-y1[4]*y2[3]);
b[3]:=0; b[4]:=0;
uk.Re:=(b[1]*y1[1]+b[2]*y2[1]+y0[1])*u00/u0;
uk.Im:=(b[1]*y1[2]+b[2]*y2[2]+y0[2])*u00/u0;
MA[1,1]:=y1[1]*u0; MA[1,2]:=y2[1]*u0; MA[1,3]:=-1; MA[1,4]:=0;
MA[2,1]:=y1[2]*u0; MA[2,2]:=y2[2]*u0; MA[2,3]:=0; MA[2,4]:=-1;
MA[3,1]:=y1[3]*E0*AA0; MA[3,2]:=y2[3]*E0*AA0; MA[3,3]:=2*pi*F*Yn; MA[3,4]:=2*pi*F*Xn;
MA[4,1]:=y1[4]*E0*AA0; MA[4,2]:=y2[4]*E0*AA0; MA[4,3]:=-2*pi*F*Xn; MA[4,4]:=2*pi*F*Yn;
MA_B[1]:=-y0[1]*u0;
MA_B[2]:=-y0[2]*u0;
MA_B[3]:=-y0[3]*E0*AA0;
MA_B[4]:=-y0[4]*E0*AA0;
invert(MA,MA_1,N,j);
MultyMV(N,MA_1,MA_B,MA_C);
bN[1]:=MA_C[1]; bN[2]:=MA_C[2]; bN[3]:=0; bN[4]:=0;
ukN.Re:=MA_C[3]/u0*u00/u0; ukN.Im:=MA_C[4]/u0*u00/u0;
if F = F0 then begin b0:=b; b0N:=bN end;
V1.Re:=V1o; V1.Im:=V2o;
findY(l1,b,yx); u1.Re:=yx[1]*u00; u1.Im:=yx[2]*u00;
I1.Re:=AA1*2*pi*F*(e33/hh*(u1.Re-u00)+epsilon*epsilon0*ee1e[1]);
I1.Im:=AA1*2*pi*F*(e33/hh*(u1.Im-0)+epsilon*epsilon0*ee2e[1]);
findY(l1,bN,yx); u1.Re:=yx[1]*u00; u1.Im:=yx[2]*u00;
I1N.Re:=AA1*2*pi*F*(e33/hh*(u1.Re-u00)+epsilon*epsilon0*ee1e[1]);
I1N.Im:=AA1*2*pi*F*(e33/hh*(u1.Im-0)+epsilon*epsilon0*ee2e[1]);
Ze:=XdivY(V1,I1);
{Form1.Chart1.SeriesList[0].AddXY(F1+i*deltaF,Ze.Re);
Form1.Chart1.SeriesList[1].AddXY(F1+i*deltaF,Ze.Im);}
Pe:=XandY(Ze,XandY(I1,I1));
Ipe:=XdivY(V1,Ze);
arg:=arctan(Ze.Im/Ze.Re);
ZeN:=XdivY(V1,I1N);
PeN:=XandY(ZeN,XandY(I1N,I1N));
IpeN:=XdivY(V1,ZeN);
argN:=arctan(ZeN.Im/ZeN.Re);
if F = F0 then begin str(1e3*2*absZ(Ipe):3:3,Stext); Form1.Edit1.Text:='I = '+Stext+' mA'; end;
findY(l1,b,yx);
up.Re:=yx[1]; up.Im:=yx[2]; Ku:=XdivY(uk,up);
findY(l1,bN,yx);
upN.Re:=yx[1]; upN.Im:=yx[2]; KuN:=XdivY(ukN,upN);
No.Re:=1e3; No.Im:=1e3;
b[1]:=((No.Re-y0[3])*y2[4]-(No.Im-y0[4])*y2[3])/(y1[3]*y2[4]-y1[4]*y2[3]);
b[2]:=((No.Im-y0[4])*y1[3]-(No.Re-y0[3])*y1[4])/(y1[3]*y2[4]-y1[4]*y2[3]);
b[3]:=0; b[4]:=0;
uz.Re:=(b[1]*y1[1]+b[2]*y2[1]+y0[1]); vk.Re:=-uz.Im*2*pi*F;
uz.Im:=(b[1]*y1[2]+b[2]*y2[2]+y0[2]); vk.Im:=uz.Re*2*pi*F;
Zm:=XdivY(No,vk); Zm.Re:=E0*AA0/u0*Zm.Re/1e3; Zm.Im:=E0*AA0/u0*Zm.Im/1e3;
bN[1]:=((No.Re-y0[3])*y2[4]-(No.Im-y0[4])*y2[3])/(y1[3]*y2[4]-y1[4]*y2[3]);
bN[2]:=((No.Im-y0[4])*y1[3]-(No.Re-y0[3])*y1[4])/(y1[3]*y2[4]-y1[4]*y2[3]);
bN[3]:=0; bN[4]:=0;
uzN.Re:=(bN[1]*y1[1]+bN[2]*y2[1]+y0[1]); vkN.Re:=-uzN.Im*2*pi*F;
uzN.Im:=(bN[1]*y1[2]+bN[2]*y2[2]+y0[2]); vkN.Im:=uzN.Re*2*pi*F;
ZmN:=XdivY(No,vkN); ZmN.Re:=E0*AA0/u0*ZmN.Re/1e3; ZmN.Im:=E0*AA0/u0*ZmN.Im/1e3;
M_uk[i]:=absZ(uk);
M_Ku[i]:=absZ(Ku);
M_Zm[i]:=absZ(Zm);
M_Pe[i]:=absZ(Pe);
M_Ze[i]:=absZ(Ze);
M_arg[i]:=arg;
M_ukN[i]:=absZ(ukN);
M_KuN[i]:=absZ(KuN);
M_ZmN[i]:=absZ(ZmN);
M_PeN[i]:=absZ(PeN);
M_ZeN[i]:=absZ(ZeN);
M_argN[i]:=argN;
end;
end;
procedure FNDun();
var i:integer;
begin
F:=F0;
ee1e[1]:=-V1o/(hh); ee2e[1]:=-V2o/(hh);
if b0[2]>0 then uu[0]:=sqrt(sqr(b0[1])+sqr(b0[2]))*u00
else uu[0]:=-sqrt(sqr(b0[1])+sqr(b0[2]))*u00;
if b0[3]>0 then
begin
NN[0]:=sqrt(sqr(b0[3])+sqr(b0[4]))*E0*AA0*u00/u0;
Sigma[0]:=sqrt(sqr(b0[3])+sqr(b0[4]))*E0*AA0/AA1*u00/u0
end
else
begin
NN[0]:=-sqrt(sqr(b0[3])+sqr(b0[4]))*E0*AA0*u00/u0;
Sigma[0]:=-sqrt(sqr(b0[3])+sqr(b0[4]))*E0*AA0/AA1*u00/u0
end;
if b0N[2]>0 then uuN[0]:=sqrt(sqr(b0N[1])+sqr(b0N[2]))*u00
else uuN[0]:=-sqrt(sqr(b0N[1])+sqr(b0N[2]))*u00;
if b0N[4]>0 then
begin
NNN[0]:=sqrt(sqr(b0N[3])+sqr(b0N[4]))*E0*AA0*u00/u0;
SigmaN[0]:=sqrt(sqr(b0N[3])+sqr(b0N[4]))*E0*AA0/AA1*u00/u0
end
else
begin
NNN[0]:=-sqrt(sqr(b0N[3])+sqr(b0N[4]))*E0*AA0*u00/u0;
SigmaN[0]:=-sqrt(sqr(b0N[3])+sqr(b0N[4]))*E0*AA0/AA1*u00/u0
end;
for i:=1 to (round(Np*l4)-1) do
begin
z:=i/Np;
if (z>=0) and (z<l1) then num:=1;
if (z>=l1) and (z<l2) then num:=2;
if (z>=l2) and (z<l3) then num:=3;
if (z>=l3) and (z<=l4) then num:=4;
if (b0[1]<>0)and(b0[2]<>0) then
begin
findY(i/Np,b0,yx);
if yx[1]>0 then uu[i]:=-sqrt(sqr(yx[1])+sqr(yx[2]))*u00
else uu[i]:=sqrt(sqr(yx[1])+sqr(yx[2]))*u00;
if yx[3]>0 then
begin
NN[i]:=-sqrt(sqr(yx[3])+sqr(yx[4]))*E0*AA0*u00/u0;
Sigma[i]:=-sqrt(sqr(yx[3])+sqr(yx[4]))*E0*AA0/A[num](z/l0)*u00/u0;
end
else
begin
NN[i]:=sqrt(sqr(yx[3])+sqr(yx[4]))*E0*AA0*u00/u0;
Sigma[i]:=sqrt(sqr(yx[3])+sqr(yx[4]))*E0*AA0/A[num](z/l0)*u00/u0;
end
end
end;
for i:=1 to (round(Np*l0)-1) do
begin
if (b0N[1]<>0)and(b0N[2]<>0) then
begin
findY(i/Np,b0N,yx); z:=i/Np;
if (yx[1]>0) then uuN[i]:=sqrt(abs(sqr(yx[1])+sqr(yx[2])))*u00
else uuN[i]:=-sqrt(sqr(yx[1])+sqr(yx[2]))*u00;
if yx[3]>0 then
begin
NNN[i]:=sqrt(sqr(yx[3])+sqr(yx[4]))*E0*AA0*u00/u0;
SigmaN[i]:=sqrt(sqr(yx[3])+sqr(yx[4]))*E0*AA0/A[num](z/l0)*u00/u0;
end
else
begin
NNN[i]:=-sqrt(sqr(yx[3])+sqr(yx[4]))*E0*AA0*u00/u0;
SigmaN[i]:=-sqrt(sqr(yx[3])+sqr(yx[4]))*E0*AA0/A[num](z/l0)*u00/u0;
end
end
end;
end;
procedure plot();
var i:integer;
begin
Form1.Chart1.SeriesList[0].Clear;
Form1.Chart2.SeriesList[0].Clear;
Form1.Chart3.SeriesList[0].Clear;
Form1.Chart4.SeriesList[0].Clear;
Form1.Chart5.SeriesList[0].Clear;
Form1.Chart6.SeriesList[0].Clear;
for i:=1 to (round(Np*l0)-1) do
begin
Form1.Chart1.SeriesList[0].AddXY(i/Np,1e6*uu[i]);
Form1.Chart2.SeriesList[0].AddXY(i/Np,1e6*uuN[i]);
Form1.Chart3.SeriesList[0].AddXY(i/Np,1e-3*NN[i]);
Form1.Chart4.SeriesList[0].AddXY(i/Np,1e-3*NNN[i]);
Form1.Chart5.SeriesList[0].AddXY(i/Np,1e-6*Sigma[i]);
Form1.Chart6.SeriesList[0].AddXY(i/Np,1e-6*SigmaN[i]);
end;
end;
procedure plot1();
var i,j:integer;
begin
Form1.Chart1.SeriesList[0].Clear;
Form1.Chart2.SeriesList[0].Clear;
Form1.Chart3.SeriesList[0].Clear;
Form1.Chart4.SeriesList[0].Clear;
Form1.Chart5.SeriesList[0].Clear;
Form1.Chart6.SeriesList[0].Clear;
for i:=0 to Npoints do
begin
Form1.Chart1.SeriesList[0].AddXY(F1+i*deltaF,M_uk[i]);
Form1.Chart2.SeriesList[0].AddXY(F1+i*deltaF,M_ukN[i]);
Form1.Chart3.SeriesList[0].AddXY(F1+i*deltaF,M_Ku[i]);
Form1.Chart4.SeriesList[0].AddXY(F1+i*deltaF,M_KuN[i]);
Form1.Chart5.SeriesList[0].AddXY(F1+i*deltaF,M_Pe[i]);
Form1.Chart6.SeriesList[0].AddXY(F1+i*deltaF,M_PeN[i]);
end;
end;
procedure plot2();
var i:integer;
begin
Form1.Chart1.SeriesList[0].Clear;
Form1.Chart2.SeriesList[0].Clear;
Form1.Chart3.SeriesList[0].Clear;
Form1.Chart4.SeriesList[0].Clear;
Form1.Chart5.SeriesList[0].Clear;
Form1.Chart6.SeriesList[0].Clear;
for i:=0 to Npoints do
begin
Form1.Chart1.SeriesList[0].AddXY(F1+i*deltaF,M_Zm[i]);
Form1.Chart2.SeriesList[0].AddXY(F1+i*deltaF,M_ZmN[i]);
Form1.Chart3.SeriesList[0].AddXY(F1+i*deltaF,M_Ze[i]);
Form1.Chart4.SeriesList[0].AddXY(F1+i*deltaF,M_ZeN[i]);
Form1.Chart5.SeriesList[0].AddXY(F1+i*deltaF,M_arg[i]);
Form1.Chart6.SeriesList[0].AddXY(F1+i*deltaF,M_argN[i]);
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Calc();
FindVin();
FNDun();
plot();
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
Calc();
FindVin();
plot1();
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
Calc();
FindVin();
plot2();
end;
end.
53















