ПриложениеБ (1035707)
Текст из файла
Приложение Б
Листинг программы для расчета второго полуволнового участка в режиме холостого хода.
unit UnitSvob2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, TeeProcs, TeEngine, Chart, Series;
type
TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
Chart1: TChart;
Chart2: TChart;
Chart3: TChart;
Chart4: TChart;
Series4: TLineSeries;
Series1: TLineSeries;
Series2: TLineSeries;
Series3: TLineSeries;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
Edit5: TEdit;
Edit6: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Edit7: TEdit;
Edit8: TEdit;
Label7: TLabel;
Label8: TLabel;
Edit9: TEdit;
Label9: TLabel;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
CONST MaxInt = 32767; N = 2;
M = 2;
Frez = 22e3; //Ãö
u0 = 10e-6; //m
K = 2;
//Òðåòèé ó÷àñòîê
E3 = 204*1e9; //Ìîäóëè Þíãà
a3 = 40e-3; //øèðèíû ó÷àñòêîâ
h3 = 3e-3; //òîëùèíû ó÷àñòêîâ
Vc3 = 5046; //ñêîðîñòü çâóêà
l3 = 20e-3;
ro3 = 7810;
//×åòâåðòûé ó÷àñòîê
E4 = 206e9;
a4o = a3; a4k = 20e-3;
Vc4 = 5130;
ro4 = 7850;
TYPE
RealType = double;
ProcType = procedure (T: RealType; var YI; n: integer; var YPI);
RealTypeArray = array[1..(2*MaxInt) div SizeOf(RealType)] of RealType;
TGeom = function(z: real): real;
TA = array[1..M] of TGeom;
Mas = array[0..M] of real;
Vector = array[1..N] of RealType;
Matrix =array[1..N,1..N] of RealType;
TComplex = record
Re: real;
Im: real
end;
VAR
l4,h4: RealType;
ss: integer; hs: RealType;
zin,eps,eta,zout: RealType;
prim : boolean;
yin,yout:Vector;
var
Form1: TForm1;
implementation
{$R *.dfm}
function comp(a,b,c: RealType): RealType;
var ae,be,ce,i,aae: longint; co,com: RealType;
function expon(x: RealType): longint;
begin
if x=0.0 then expon:=-324 else expon:= round(0.4342944819*ln(abs(x))+1)
end; { expon }
begin
ae:=expon(a); be:=expon(b); ce:=expon(c);
if ae < be then ae:=be;
if ae < ce then ae:=ce; co:=1; aae:=abs(ae);
if ae<>0 then
begin
for i:=1 to aae do co:=co*10;
if ae<0 then co:=1.0/co;
end;
comp:=abs(a-b)/co;
end; { comp }
procedure RungeK(Fex: ProcType; x: RealType; var y5; n: integer;
var eps,eta,xfin: RealType; var prim: boolean;
var yfin1);
label 1,11,12,13,100;
const nn=100; { max order of diff.equations }
var
x1,x2,x3,h : RealType;
k,j : integer;
out : boolean;
z,y1,y2,y3 : Array[1..nn] of realType;
y : RealTypeArray absolute y5;
yfin : RealTypeArray absolute yfin1;
procedure rk1step(Fex: ProcType; x: RealType; var y1; h: RealType;
var xh: RealType; var yh1);
var
j,k : integer;
a : array[1..5] of RealType;
w : array[1..nn] of RealType;
y : RealTypeArray absolute y1;
yh: RealTypeArray absolute yh1;
begin
a[1]:=0.5*h;
a[2]:=0.5*h;
a[5]:=0.5*h;
a[3]:=h; a[4]:=h; xh:=x;
for k:=1 to n do
begin
yh[k]:=y[k];w[k]:=y[k];
end;
for j:=1 to 4 do
begin Fex(xh,w,n,z);
xh:=x+a[j];
for k:=1 to n do
begin yh[k]:=yh[k]+a[j+1]*z[k]/3;
w[k]:=y[k]+a[j]*z[k];
end; {k}
end; {j}
end; {rk1step}
begin
1: if prim then
begin
h:=xfin-x; ss:=0;
end
else h:=hs;
out:=false;
11: if((x+2.01*h-xfin)*h>0.0) then
begin hs:=h; out:=true; h:=(xfin-x)/2.0; end;
rk1step(Fex,x,y,2*h,x1,y1);
12: rk1step(Fex,x,y,h,x2,y2);
rk1step(Fex,x2,y2,h,x3,y3);
for k:=1 to n do
if comp(y1[k],y3[k],eta) > eps then goto 13;
x:=x3;
if out then goto 100;
for k:=1 to n do y[k]:=y3[k];
if ss=5 then begin ss:=0; h:=2*h end;
ss:=ss+1; goto 11;
13: h:=0.5*h; out:=false; x1:=x2;
for k:=1 to n do y1[k]:=y2[k];
goto 12;
100:for k:=1 to n do yfin[k]:=y3[k];
end; {RungeK}
procedure Calc(h:RealType);
begin
h4:=h;
end;
function F(z:RealType):RealType;
begin
if (z>=0)and(z<l3) then F:=a3*h3;
if (z>=l3)and(z<=l4) then F:=(a3-(z-l3)*(a3-a4k)/(l4-l3))*h4;
end;
function ro(z:RealType):RealType;
begin
if (z>=0)and(z<l3) then ro:=ro3;
if (z>=l3)and(z<=l4) then ro:=ro4;
end;
function E(z:RealType):RealType;
begin
if (z>=0)and(z<l3) then E:=E3;
if (z>=l3)and(z<=l4) then E:=E4;
end;
procedure FexRunge(z: RealType; var y1; n: integer; var yp1);
var
w : RealTypeArray absolute Y1;
yp : RealTypeArray absolute Yp1;
begin
yp[1]:=w[2]/(E(z)*F(z));
yp[2]:=(-1)*w[1]*ro(z)*F(z)*sqr(2*pi*Frez);
end;
function FindU(l:RealType;Draw:boolean):Vector;
var step,zmax,SigmaMax :RealType;
var i:integer;
begin
zmax:=0;
SigmaMax:=0;
l4 :=l;
step :=l4/1001;
prim:=true;
eps:=1e-6;
eta:=0.00;
yin[1]:=u0;
yin[2]:=0;
for i:=0 to 1000 do
begin
zin:=i*step;
zout:=(i+1)*step;
RungeK(FexRunge,zin,yin,N,eps,eta,zout,prim,yout);
yin:=yout;
if (Draw=true)then
begin
Form1.Chart1.SeriesList[0].AddXY(zout,1e6*F(zout));
Form1.Chart2.SeriesList[0].AddXY(zout,1e6*yout[1]);
Form1.Chart3.SeriesList[0].AddXY(zout,1e-3*yout[2]);
Form1.Chart4.SeriesList[0].AddXY(zout,(1e-6*yout[2]/F(zout)));
if (abs(1e-6*yout[2]/F(zout))>SigmaMax) then
begin
SigmaMax:= abs(1e-6*yout[2]/F(zout));
zmax:=zout;
end;
end;
end;
if (Draw=true)then
begin
Form1.Edit7.Text:=currtostr(zmax);
Form1.Edit8.Text:=currtostr(SigmaMax);
end;
FindU:=yout;
end;
function FindLrez(beg,fin:RealType):RealType;
var xA,xB,x0,accur,temp,temp1:RealType;
i:integer;
begin
accur:=1e-3;
i:=0;
xA := beg;
xB := fin;
x0 := (xA+xB)/2;
temp:=FindU(x0,false)[2];
while (abs(temp)>accur)and(i<5)
do
begin
temp:=FindU(x0,false)[2];
temp1:=FindU(xB,false)[2];
if (temp*temp1<0) then xA := x0
else xB := x0;
x0 := (xA+xB)/2;
i:=i+1;
end;
FindLrez:=x0;
end;
procedure MakeK();
var i:integer;
begin
i:=0;
h4:=0.3e-3;
Calc(h4);
l4:=FindLrez(l3,200e-3);
while (abs(1-abs(K/(FindU(l4,false)[1]/u0)))>0.05)and(i<1000)
do
begin
i:=i+1;
h4 := h4+1e-4;
Calc(h4);
l4:=FindLrez(l3,200e-3);
end;
FindU(l4,true);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
MakeK();
form1.Edit1.Text:=currtostr(l4);
form1.Edit2.Text:=currtostr(l4-l3);
form1.Edit3.Text:=currtostr(h4);
form1.Edit4.Text:=currtostr(1e6*F(0));
form1.Edit5.Text:=currtostr(1e6*F(l3));
form1.Edit6.Text:=currtostr(1e6*F(l4));
form1.Edit9.Text:=currtostr(abs(FindU(l4,false)[1]/u0));
end;
end.
39
Характеристики
Тип файла документ
Документы такого типа открываются такими программами, как Microsoft Office Word на компьютерах Windows, Apple Pages на компьютерах Mac, Open Office - бесплатная альтернатива на различных платформах, в том числе Linux. Наиболее простым и современным решением будут Google документы, так как открываются онлайн без скачивания прямо в браузере на любой платформе. Существуют российские качественные аналоги, например от Яндекса.
Будьте внимательны на мобильных устройствах, так как там используются упрощённый функционал даже в официальном приложении от Microsoft, поэтому для просмотра скачивайте PDF-версию. А если нужно редактировать файл, то используйте оригинальный файл.
Файлы такого типа обычно разбиты на страницы, а текст может быть форматированным (жирный, курсив, выбор шрифта, таблицы и т.п.), а также в него можно добавлять изображения. Формат идеально подходит для рефератов, докладов и РПЗ курсовых проектов, которые необходимо распечатать. Кстати перед печатью также сохраняйте файл в PDF, так как принтер может начудить со шрифтами.















