Материал: Разработка программного продукта для расчета тепловых коэффициентов для тел с распределенными и сосредоточенными источниками энергии

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

((2*n-1)*(2*m-1)*

((2*n-1)*(2*n-1)*(3.14/(2*l1))*(3.14/(2*l1))+

(2*m-1)*(2*m-1)*(3.14/(2*l2))*(3.14/(2*l2)))*

(2*l3/3.14)*(2*l3/3.14)))*

(1-(exp(sqrt(((2*n-1)*(2*n-1)*(3.14/(2*l1))*(3.14/(2*l1))+(2*m-1)*(2*m-1)*(3.14/(2*l2))*(3.14/(2*l2))))*(l3-z))+(-sqrt(((2*n-1)*(2*n-1)*(3.14/(2*l1))*(3.14/(2*l1))+(2*m-1)*(2*m-1)*(3.14/(2*l2))*(3.14/(2*l2))))*(l3-z)))/

(exp(sqrt(((2*n-1)*(2*n-1)*(3.14/(2*l1))*(3.14/(2*l1))+(2*m-1)*(2*m-1)*(3.14/(2*l2))*(3.14/(2*l2))))*l3)+(-sqrt(((2*n-1)*(2*n-1)*(3.14/(2*l1))*(3.14/(2*l1))+(2*m-1)*(2*m-1)*(3.14/(2*l2))*(3.14/(2*l2))))*l3)));;;:=t1*t2+ts;:=trunc(t*1000)/1000;.Caption:=floattostr(t);.Caption:=floattostr(trunc(ts*1000)/1000);;;;TForm1.FormShow(Sender: TObject);

begin('Для вызова помощи в программе, нажмите F1 или правую кнопку мыши');

// Переключение на русскую раскладку клавиатуры

LoadKeyboardLayout('00000419',KLF_ACTIVATE);

end;TForm1.N1Click(Sender: TObject);

// вызов справки.Show;;TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);

// разрешение ввода только цифрnot (key in ['0'..'9', ',', #8]) then:=#0;;;TForm1.Edit10KeyPress(Sender: TObject; var Key: Char);

// разрешение ввода только цифр и знака «-»

if not (key in ['0'..'9', ',','-', #8]) then:=#0;;;.

Приложение 2

unit Unit1;, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,, Buttons, TeEngine, Series, ExtCtrls, TeeProcs, Chart,, ImgList, ActnList, Menus, ComCtrls, ToolWin, jpeg;= class(TForm)

….BitBtn1Click(Sender: TObject);Edit4Change(Sender: TObject);BitBtn2Click(Sender: TObject);BitBtn3Click(Sender: TObject);BitBtn4Click(Sender: TObject);N1Click(Sender: TObject);FormShow(Sender: TObject);Edit1KeyPress(Sender: TObject; var Key: Char);Edit10KeyPress(Sender: TObject; var Key: Char);

{ Private declarations }

{ Public declarations };: TForm1;,W,lz,ly,lx,LAx,LAy,LAz,x,y,z,h,maximal,ALx,ALy,ALz,tc,P,m: real;,Ez,px,py,Bx,By,Bz,KSIy,KSIz: real;: integer;UPlot, UCoord, Unit2;

begin

// проверка првильности ввода координат точек

if (strtofloat(Edit7.text)<(-1/2)*strtofloat(Edit2.text)) or (strtofloat(Edit7.text)>(1/2)*strtofloat(Edit2.text)) or

(strtofloat(Edit8.text)<(-1/2)*strtofloat(Edit3.text)) or (strtofloat(Edit8.text)>(1/2)*strtofloat(Edit3.text)) then

ShowMessage('Координаты исследуемой точки выходят за рамки параллепипеда')

else:=strtofloat(Edit1.text)/2;:=strtofloat(Edit2.text)/2;:=strtofloat(Edit3.text)/2;:=strtofloat(Edit4.text);:=(strtofloat(Edit4.text))/(8*lx*ly*lz);:=strtofloat(Edit5.text);:=strtofloat(Edit11.text);:=strtofloat(Edit12.text);:=strtofloat(Edit9.text);:=strtofloat(Edit13.text);:=strtofloat(Edit14.text);:=strtofloat(Edit10.text);:=strtofloat(Edit7.text);:=strtofloat(Edit8.text);:=-lx;:=(lx/lz)*sqrt(LAz/LAx);:=(lx/ly)*sqrt(LAy/LAx);:=ALx*lx/LAx;:=ALy*ly/LAy;:=ALz*lz/LAz;:=sqrt((Ez*Ez/(Ey*Ey))*Bz/(1+0.5*Bz));:=(py*py*(exp(py)-exp(-py))/(exp(py)+exp(-py)))/(py-(exp(py)-exp(-py))/(exp(py)+exp(-py)));:=1/(1+By/m);:=1/(1+Bz/3);:=sqrt(Ey*Ey*By*KSIy+Ez*Ez*Bz*KSIz);.BeginPlot;:=2*lx/1000;i:=1 to 1000 do:=0;:=W*lx*lx/(2*Ez*Ez*LAx)*

(1-(exp(px*x/lx)+exp(-px*x/lx))/

(exp(px)+exp(-px)+(px/Bx)*(exp(px)-exp(-px))))*

(1-(exp(py*y/ly)+exp(-py*y/ly))/

(exp(py)+exp(-py)+(py/By)*(exp(py)-exp(-py))))*

(1+2/Bz-z*z/(lz*lz))+tc;.AddPoint(x,t,clRed);:=x+h;;.Chart1.Title.Text.Clear;

FPlot.Chart1.Title.Text.Add('График зависимости температуры от координаты X');

FPlot.Show;.LX.Caption:='X';;;;TForm1.Edit4Change(Sender: TObject);(Edit1.text<>'') and (Edit2.text<>'') and (Edit3.text<>'') and (Edit4.text<>'') then.Caption:=floattostr(round(strtofloat(Edit4.Text)/(strtofloat(Edit1.Text)*strtofloat(Edit2.Text)*strtofloat(Edit3.Text))*1000)/1000);;TForm1.BitBtn2Click(Sender: TObject);(Edit1.text='') or (Edit2.text='') or (Edit3.text='') or (Edit4.text='')(Edit5.text='') or (Edit6.text='') or (Edit8.text='') or (Edit9.text='')(Edit10.text='') or (Edit11.text='') or (Edit12.text='') or (Edit13.text='')(Edit14.text='') then('Заполните все поля формы')(strtofloat(Edit6.text)<(-1/2)*strtofloat(Edit1.text)) or (strtofloat(Edit6.text)>(1/2)*strtofloat(Edit1.text)) or

(strtofloat(Edit8.text)<(-1/2)*strtofloat(Edit3.text)) or (strtofloat(Edit8.text)>(1/2)*strtofloat(Edit3.text)) then

ShowMessage('Координаты исследуемой точки выходят за рамки параллепипеда')

else:=strtofloat(Edit1.text)/2;:=strtofloat(Edit2.text)/2;:=strtofloat(Edit3.text)/2;:=strtofloat(Edit4.text);:=(strtofloat(Edit4.text))/(8*lx*ly*lz);:=strtofloat(Edit5.text);:=strtofloat(Edit11.text);:=strtofloat(Edit12.text);:=strtofloat(Edit9.text);:=strtofloat(Edit13.text);:=strtofloat(Edit14.text);:=strtofloat(Edit10.text);:=strtofloat(Edit6.text);:=strtofloat(Edit8.text);:=-ly;:=(lx/lz)*sqrt(LAz/LAx);:=(lx/ly)*sqrt(LAy/LAx);:=ALx*lx/LAx;:=ALy*ly/LAy;:=ALz*lz/LAz;:=sqrt((Ez*Ez/(Ey*Ey))*Bz/(1+0.5*Bz));:=(py*py*(exp(py)-exp(-py))/(exp(py)+exp(-py)))/(py-(exp(py)-exp(-py))/(exp(py)+exp(-py)));:=1/(1+By/m);:=1/(1+Bz/3);:=sqrt(Ey*Ey*By*KSIy+Ez*Ez*Bz*KSIz);.BeginPlot;:=2*ly/1000;i:=1 to 1000 do:=0;:=W*lx*lx/(2*Ez*Ez*LAx)*

(1-(exp(px*x/lx)+exp(-px*x/lx))/

(exp(px)+exp(-px)+(px/Bx)*(exp(px)-exp(-px))))*

(1-(exp(py*y/ly)+exp(-py*y/ly))/

(exp(py)+exp(-py)+(py/By)*(exp(py)-exp(-py))))*

(1+2/Bz-z*z/(lz*lz))+tc;.AddPoint(y,t,clRed);:=y+h;;.Chart1.Title.Text.Clear;

FPlot.Chart1.Title.Text.Add('График зависимости температуры от координаты Y');

FPlot.Show;.LX.Caption:='Y';;;;TForm1.BitBtn3Click(Sender: TObject);(Edit1.text='') or (Edit2.text='') or (Edit3.text='') or (Edit4.text='')(Edit5.text='') or (Edit7.text='') or (Edit6.text='') or (Edit9.text='')(Edit10.text='') or (Edit11.text='') or (Edit12.text='') or (Edit13.text='')(Edit14.text='') then('Заполните все поля формы')(strtofloat(Edit7.text)<(-1/2)*strtofloat(Edit2.text)) or (strtofloat(Edit7.text)>(1/2)*strtofloat(Edit2.text)) or

(strtofloat(Edit6.text)<(-1/2)*strtofloat(Edit2.text)) or (strtofloat(Edit6.text)>(1/2)*strtofloat(Edit1.text)) then

ShowMessage('Координаты исследуемой точки выходят за рамки параллепипеда')

else:=strtofloat(Edit1.text)/2;:=strtofloat(Edit2.text)/2;:=strtofloat(Edit3.text)/2;:=strtofloat(Edit4.text);:=(strtofloat(Edit4.text))/(8*lx*ly*lz);:=strtofloat(Edit5.text);:=strtofloat(Edit11.text);:=strtofloat(Edit12.text);:=strtofloat(Edit9.text);:=strtofloat(Edit13.text);:=strtofloat(Edit14.text);:=strtofloat(Edit10.text);:=strtofloat(Edit7.text);:=strtofloat(Edit6.text);:=-lz;:=(lx/lz)*sqrt(LAz/LAx);:=(lx/ly)*sqrt(LAy/LAx);:=ALx*lx/LAx;:=ALy*ly/LAy;:=ALz*lz/LAz;:=sqrt((Ez*Ez/(Ey*Ey))*Bz/(1+0.5*Bz));:=(py*py*(exp(py)-exp(-py))/(exp(py)+exp(-py)))/(py-(exp(py)-exp(-py))/(exp(py)+exp(-py)));:=1/(1+By/m);:=1/(1+Bz/3);:=sqrt(Ey*Ey*By*KSIy+Ez*Ez*Bz*KSIz);.BeginPlot;:=2*lz/1000;i:=1 to 1000 do:=0;:=W*lx*lx/(2*Ez*Ez*LAx)*

(1-(exp(px*x/lx)+exp(-px*x/lx))/

(exp(px)+exp(-px)+(px/Bx)*(exp(px)-exp(-px))))*

(1-(exp(py*y/ly)+exp(-py*y/ly))/

(exp(py)+exp(-py)+(py/By)*(exp(py)-exp(-py))))*

(1+2/Bz-z*z/(lz*lz))+tc;.AddPoint(z,t,clRed);:=z+h;;.Chart1.Title.Text.Clear;

FPlot.Chart1.Title.Text.Add('График зависимости температуры от координаты Z');

FPlot.Show;.LX.Caption:='Z';;;;TForm1.BitBtn4Click(Sender: TObject);(Edit1.text='') or (Edit2.text='') or (Edit3.text='') or (Edit4.text='')(Edit5.text='') or (Edit7.text='') or (Edit8.text='') or (Edit9.text='')(Edit10.text='') or (Edit6.text='') or (Edit11.text='') or (Edit12.text='') or (Edit13.text='')(Edit14.text='') then('Заполните все поля формы')(strtofloat(Edit6.text)<(-1/2)*strtofloat(Edit1.text)) or (strtofloat(Edit6.text)>(1/2)*strtofloat(Edit1.text)) or

(strtofloat(Edit8.text)<(-1/2)*strtofloat(Edit3.text)) or (strtofloat(Edit8.text)>(1/2)*strtofloat(Edit3.text)) or

(strtofloat(Edit7.text)<(-1/2)*strtofloat(Edit2.text)) or (strtofloat(Edit7.text)>(1/2)*strtofloat(Edit2.text)) then

ShowMessage('Координаты исследуемой точки выходят за рамки параллепипеда')

else:=strtofloat(Edit1.text)/2;:=strtofloat(Edit2.text)/2;:=strtofloat(Edit3.text)/2;:=strtofloat(Edit4.text);:=(strtofloat(Edit4.text))/(8*lx*ly*lz);:=strtofloat(Edit5.text);:=strtofloat(Edit11.text);:=strtofloat(Edit12.text);:=strtofloat(Edit9.text);:=strtofloat(Edit13.text);:=strtofloat(Edit14.text);:=strtofloat(Edit10.text);:=strtofloat(Edit6.text);:=strtofloat(Edit7.text);:=strtofloat(Edit8.text);:=(lx/lz)*sqrt(LAz/LAx);:=(lx/ly)*sqrt(LAy/LAx);:=ALx*lx/LAx;:=ALy*ly/LAy;:=ALz*lz/LAz;:=sqrt((Ez*Ez/(Ey*Ey))*Bz/(1+0.5*Bz));:=(py*py*(exp(py)-exp(-py))/(exp(py)+exp(-py)))/(py-(exp(py)-exp(-py))/(exp(py)+exp(-py)));:=1/(1+By/m);:=1/(1+Bz/3);:=sqrt(Ey*Ey*By*KSIy+Ez*Ez*Bz*KSIz);:=0;:=W*lx*lx/(2*Ez*Ez*LAx)*

(1-(exp(px*x/lx)+exp(-px*x/lx))/

(exp(px)+exp(-px)+(px/Bx)*(exp(px)-exp(-px))))*

(1-(exp(py*y/ly)+exp(-py*y/ly))/

(exp(py)+exp(-py)+(py/By)*(exp(py)-exp(-py))))*

(1+2/Bz-z*z/(lz*lz))+tc;:=trunc(t*1000)/1000;.Caption:=floattostr(t);;;;TForm1.N1Click(Sender: TObject);.Show;;TForm1.FormShow(Sender: TObject);

begin('Для вызова помощи в программе нажмите F1 или правую клавишу мыши.');

LoadKeyboardLayout('00000419',KLF_ACTIVATE);;TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);not (key in ['0'..'9', ',', #8]) then:=#0;;;TForm1.Edit10KeyPress(Sender: TObject; var Key: Char);not (key in ['0'..'9', ',','-', #8]) then:=#0;;;.

Приложение 3

unit Unit1;, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,, Buttons, TeEngine, Series, ExtCtrls, TeeProcs, Chart,, ImgList, ActnList, Menus, ComCtrls, ToolWin, jpeg;= class(TForm)

….BitBtn1Click(Sender: TObject);BitBtn2Click(Sender: TObject);BitBtn3Click(Sender: TObject);BitBtn4Click(Sender: TObject);N1Click(Sender: TObject);FormShow(Sender: TObject);Edit1KeyPress(Sender: TObject; var Key: Char);Edit10KeyPress(Sender: TObject; var Key: Char);

{ Private declarations }

{ Public declarations };: TForm1;,W,lz,ly,lx,LAx,LAy,LAz,x,y,z,h,ALx,ALy,ALz,tc,P,k: real;,Ez,g1,g2,Bx,By,Bz,KSIx,KSIz: real;: integer;UPlot, UCoord, Unit2;

{$R *.DFM}TForm1.BitBtn1Click(Sender: TObject);(Edit1.text='') or (Edit2.text='') or (Edit3.text='') or (Edit4.text='')(Edit5.text='') or (Edit7.text='') or (Edit8.text='') or (Edit9.text='')(Edit10.text='') or (Edit11.text='') or (Edit12.text='') or (Edit13.text='')(Edit14.text='') then('Заполните все поля формы')(strtofloat(Edit7.text)<(-1/2)*strtofloat(Edit2.text)) or (strtofloat(Edit7.text)>(1/2)*strtofloat(Edit2.text)) or

(strtofloat(Edit8.text)<(-1/2)*strtofloat(Edit3.text)) or (strtofloat(Edit8.text)>(1/2)*strtofloat(Edit3.text)) then

ShowMessage('Координаты исследуемой точки выходят за рамки параллепипеда')

else:=strtofloat(Edit1.text)/2;:=strtofloat(Edit2.text)/2;:=strtofloat(Edit3.text)/2;:=strtofloat(Edit4.text);:=strtofloat(Edit4.text)/(4*lx*lz);:=strtofloat(Edit5.text);:=strtofloat(Edit11.text);:=strtofloat(Edit12.text);:=strtofloat(Edit9.text);:=strtofloat(Edit13.text);:=strtofloat(Edit14.text);:=strtofloat(Edit10.text);:=strtofloat(Edit7.text);:=strtofloat(Edit8.text);:=-lx;:=(lx/lz)*sqrt(LAz/LAx);:=(lx/ly)*sqrt(LAy/LAx);:=ALx*lx/LAx;:=ALy*ly/LAy;:=ALz*lz/LAz;:=1/(1+Bz/3);:=Bz*Ez*Ez*KSIz;:=(g2*g2*(exp(g2)-exp(-g2))/(exp(g2)+exp(-g2)))/(g2-(exp(g2)-exp(-g2))/(exp(g2)+exp(-g2)));:=1/(1+By/k);:=sqrt((Bx*KSIx+g2*g2)/(Ey*Ey));.BeginPlot;:=2*lx/1000;i:=1 to 1000 do:=0;:=W*lx*lx*0.5*g1*g1/(Ez*Ez*LAx*ly*By)*

(exp(g1*y/ly)+exp(-g1*y/ly))/

(exp(g1)+exp(-g1)+(g1/By)*(exp(g1)-exp(-g1)))*

(1-(exp(g2*x/lx)+exp(-g2*x/lx))/

(exp(g2)+exp(-g2)+(g2/Bx)*(exp(g2)-exp(-g2))))*

(1+2/Bz-z*z/(lz*lz))+tc;.AddPoint(x,t,clRed);:=x+h;;.Chart1.Title.Text.Clear;

FPlot.Chart1.Title.Text.Add('График зависимости температуры от координаты X');

FPlot.Show;.LX.Caption:='X';;;;TForm1.BitBtn2Click(Sender: TObject);(Edit1.text='') or (Edit2.text='') or (Edit3.text='') or (Edit4.text='')(Edit5.text='') or (Edit6.text='') or (Edit8.text='') or (Edit9.text='')(Edit10.text='') or (Edit11.text='') or (Edit12.text='') or (Edit13.text='')(Edit14.text='') then('Заполните все поля формы')(strtofloat(Edit6.text)<(-1/2)*strtofloat(Edit1.text)) or (strtofloat(Edit6.text)>(1/2)*strtofloat(Edit1.text)) or

(strtofloat(Edit8.text)<(-1/2)*strtofloat(Edit3.text)) or (strtofloat(Edit8.text)>(1/2)*strtofloat(Edit3.text)) then

ShowMessage('Координаты исследуемой точки выходят за рамки параллепипеда')

else:=strtofloat(Edit1.text)/2;:=strtofloat(Edit2.text)/2;:=strtofloat(Edit3.text)/2;:=strtofloat(Edit4.text);:=strtofloat(Edit4.text)/(4*lx*lz);:=strtofloat(Edit5.text);:=strtofloat(Edit11.text);:=strtofloat(Edit12.text);:=strtofloat(Edit9.text);:=strtofloat(Edit13.text);:=strtofloat(Edit14.text);:=strtofloat(Edit10.text);:=strtofloat(Edit6.text);:=strtofloat(Edit8.text);:=-ly;:=(lx/lz)*sqrt(LAz/LAx);:=(lx/ly)*sqrt(LAy/LAx);:=ALx*lx/LAx;:=ALy*ly/LAy;:=ALz*lz/LAz;:=1/(1+Bz/3);:=Bz*Ez*Ez*KSIz;:=(g2*g2*(exp(g2)-exp(-g2))/(exp(g2)+exp(-g2)))/(g2-(exp(g2)-exp(-g2))/(exp(g2)+exp(-g2)));:=1/(1+By/k);:=sqrt((Bx*KSIx+g2*g2)/(Ey*Ey));.BeginPlot;:=2*ly/1000;i:=1 to 1000 do:=0;:=W*lx*lx*0.5*g1*g1/(Ez*Ez*LAx*ly*By)*

(exp(g1*y/ly)+exp(-g1*y/ly))/

(exp(g1)+exp(-g1)+(g1/By)*(exp(g1)-exp(-g1)))*

(1-(exp(g2*x/lx)+exp(-g2*x/lx))/

(exp(g2)+exp(-g2)+(g2/Bx)*(exp(g2)-exp(-g2))))*

(1+2/Bz-z*z/(lz*lz))+tc;.AddPoint(y,t,clRed);:=y+h;;.Chart1.Title.Text.Clear;

FPlot.Chart1.Title.Text.Add('График зависимости температуры от координаты Y');

FPlot.Show;.LX.Caption:='Y';;;;TForm1.BitBtn3Click(Sender: TObject);(Edit1.text='') or (Edit2.text='') or (Edit3.text='') or (Edit4.text='')(Edit5.text='') or (Edit7.text='') or (Edit6.text='') or (Edit9.text='')(Edit10.text='') or (Edit11.text='') or (Edit12.text='') or (Edit13.text='')(Edit14.text='') then('Заполните все поля формы')(strtofloat(Edit7.text)<(-1/2)*strtofloat(Edit2.text)) or (strtofloat(Edit7.text)>(1/2)*strtofloat(Edit2.text)) or

ShowMessage('Координаты исследуемой точки выходят за рамки параллепипеда')

else:=strtofloat(Edit1.text)/2;:=strtofloat(Edit2.text)/2;:=strtofloat(Edit3.text)/2;:=strtofloat(Edit4.text);:=strtofloat(Edit4.text)/(4*lx*lz);:=strtofloat(Edit5.text);:=strtofloat(Edit11.text);:=strtofloat(Edit12.text);:=strtofloat(Edit9.text);:=strtofloat(Edit13.text);:=strtofloat(Edit14.text);:=strtofloat(Edit10.text);:=strtofloat(Edit7.text);:=strtofloat(Edit6.text);:=-lz;:=(lx/lz)*sqrt(LAz/LAx);:=(lx/ly)*sqrt(LAy/LAx);:=ALx*lx/LAx;:=ALy*ly/LAy;:=ALz*lz/LAz;:=1/(1+Bz/3);:=Bz*Ez*Ez*KSIz;:=(g2*g2*(exp(g2)-exp(-g2))/(exp(g2)+exp(-g2)))/(g2-(exp(g2)-exp(-g2))/(exp(g2)+exp(-g2)));:=1/(1+By/k);:=sqrt((Bx*KSIx+g2*g2)/(Ey*Ey));.BeginPlot;:=2*lz/1000;i:=1 to 1000 do:=0;:=W*lx*lx*0.5*g1*g1/(Ez*Ez*LAx*ly*By)*

(exp(g1*y/ly)+exp(-g1*y/ly))/

(exp(g1)+exp(-g1)+(g1/By)*(exp(g1)-exp(-g1)))*

(1-(exp(g2*x/lx)+exp(-g2*x/lx))/

(exp(g2)+exp(-g2)+(g2/Bx)*(exp(g2)-exp(-g2))))*

(1+2/Bz-z*z/(lz*lz))+tc;.AddPoint(z,t,clRed);:=z+h;;.Chart1.Title.Text.Clear;

FPlot.Chart1.Title.Text.Add('График зависимости температуры от координаты Z');

FPlot.Show;.LX.Caption:='Z';;;;TForm1.BitBtn4Click(Sender: TObject);(Edit1.text='') or (Edit2.text='') or (Edit3.text='') or (Edit4.text='')(Edit5.text='') or (Edit7.text='') or (Edit8.text='') or (Edit9.text='')(Edit10.text='') or (Edit6.text='') or (Edit11.text='') or (Edit12.text='') or (Edit13.text='')(Edit14.text='') then('Заполните все поля формы')(strtofloat(Edit6.text)<(-1/2)*strtofloat(Edit1.text)) or (strtofloat(Edit6.text)>(1/2)*strtofloat(Edit1.text)) or

(strtofloat(Edit8.text)<(-1/2)*strtofloat(Edit3.text)) or (strtofloat(Edit8.text)>(1/2)*strtofloat(Edit3.text)) or

(strtofloat(Edit7.text)<(-1/2)*strtofloat(Edit2.text)) or (strtofloat(Edit7.text)>(1/2)*strtofloat(Edit2.text)) then

ShowMessage('Координаты исследуемой точки выходят за рамки параллепипеда')

else:=strtofloat(Edit1.text)/2;:=strtofloat(Edit2.text)/2;:=strtofloat(Edit3.text)/2;:=strtofloat(Edit4.text);:=strtofloat(Edit4.text)/(4*lx*lz); :=strtofloat(Edit5.text);:=strtofloat(Edit11.text);:=strtofloat(Edit12.text);:=strtofloat(Edit9.text);:=strtofloat(Edit13.text);:=strtofloat(Edit14.text);:=strtofloat(Edit10.text);:=strtofloat(Edit6.text);:=strtofloat(Edit7.text);:=strtofloat(Edit8.text);:=(lx/lz)*sqrt(LAz/LAx);:=(lx/ly)*sqrt(LAy/LAx);:=ALx*lx/LAx;:=ALy*ly/LAy;:=ALz*lz/LAz;:=1/(1+Bz/3);:=Bz*Ez*Ez*KSIz;:=(g2*g2*(exp(g2)-exp(-g2))/(exp(g2)+exp(-g2)))/(g2-(exp(g2)-exp(-g2))/(exp(g2)+exp(-g2)));:=1/(1+By/k);:=sqrt((Bx*KSIx+g2*g2)/(Ey*Ey));:=0;:=W*lx*lx*0.5*g1*g1/(Ez*Ez*LAx*ly*By)*

(exp(g1*y/ly)+exp(-g1*y/ly))/

(exp(g1)+exp(-g1)+(g1/By)*(exp(g1)-exp(-g1)))*

(1-(exp(g2*x/lx)+exp(-g2*x/lx))/

(exp(g2)+exp(-g2)+(g2/Bx)*(exp(g2)-exp(-g2))))*

(1+2/Bz-z*z/(lz*lz))+tc;:=trunc(t*1000)/1000;.Caption:=floattostr(t);;;;TForm1.N1Click(Sender: TObject);.Show;;TForm1.FormShow(Sender: TObject);

begin('Для вызова помощи в программе нажмите F1 или правую клавишу мыши.');

LoadKeyboardLayout('00000419',KLF_ACTIVATE);;TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);not (key in ['0'..'9',',', #8]) then:=#0;;;TForm1.Edit10KeyPress(Sender: TObject; var Key: Char);not (key in ['0'..'9',',','-', #8]) then:=#0;;;.

Приложение 4

unit UPlot;, Messages, SysUtils, Classes, Graphics, Controls, Forms,, ImgList, ActnList, Menus, ComCtrls, ToolWin, TeEngine, Series,, TeeProcs, Chart;= class(TForm)ACursMouseExecute(Sender: TObject);Chart1MouseMove(Sender: TObject; Shift: TShiftState; X,: Integer);Chart1DblClick(Sender: TObject);FormKeyDown(Sender: TObject; var Key: Word;: TShiftState);Chart1AfterDraw(Sender: TObject);ARepaintExecute(Sender: TObject);AMaxExecute(Sender: TObject);AMinExecute(Sender: TObject);FormKeyUp(Sender: TObject; var Key: Word;: TShiftState);ACalcExecute(Sender: TObject);ASaveBMPExecute(Sender: TObject);ASaveWMFExecute(Sender: TObject);ASaveEMFExecute(Sender: TObject);ACopyBMPExecute(Sender: TObject);ACopyWMFExecute(Sender: TObject);ACopyEMFExecute(Sender: TObject);APrintPExecute(Sender: TObject);AExitExecute(Sender: TObject);ACursorsExecute(Sender: TObject);AHelpExecute(Sender: TObject);FCoordClose;FormClose(Sender: TObject; var Action: TCloseAction);FormCreate(Sender: TObject);

{ Private declarations }

// Прорисовка изображений курсоров графикаSetCursor;

// Запись координат курсоров в окно FCoord

procedure WriteValue;

{ Public declarations }BeginPlot;AddPoint(X,Y:real;Color:TColor);NullPoint(X:real);;: TFPlot;UCoord, Math, ShellAPI;

{$R *.DFM}

// IndCurs1 - индекс первого курсора

// IndCurs2 - индекс второго курсора

// HCursor - шаг перемещения курсора

var IndCurs1, IndCurs2, HCursor: LongInt;

ABad: array of real; // Массив областей недопустимых значений

Bad: boolean;TFPlot.BeginPlot;

begin

// Очистка серии прежнего графика.Clear;

// Обнуление массива недопустимых значений аргумента(ABad,0);

// Сброс флага, сообщающего о том,

// что предыдущее значение аргумента недопустимое:= false;

// Чтобы восстановить масштаб, если он перед этим изменялся

FPlot.Chart1.UndoZoom;;TFPlot.AddPoint(X,Y:real;Color:TColor);

begin

// Занесение очередной точки в график

if(FloatToStr(Y) = 'NAN')or

(FloatToStr(Y) = '-NAN')or

(FloatToStr(Y) = 'INF')or

(FloatToStr(Y) = '-INF')NullPoint(X)begin.AddXY(X,Y,'',Color);

// Сброс флага, сообщающего о том,

// что предыдущее значение аргумента недопустимое:= false;

end; ;TFPlot.NullPoint(X:real);

begin

// Если вычисление точки дало ошибкуBad

// Если прошлая точка тоже была недопустимой

then ABad[High(ABad)] := Xbegin

// Если прошлая точка была допустимой,

// то значение аргумента заносится как начальная и

// конечная точка очередного диапазона(ABad,Length(ABad)+2);

ABad[High(ABad)-1] := X;[High(ABad)] := X;

// Установка флага, сообщающего о том,

// что предыдущее значение аргумента недопустимое:= true;

end;;TFPlot.ACursMouseExecute(Sender: TObject);

// Включение/выключение курсора мыши.Checked:= not ACursMouse.Checked;ACursMouse.Checkedbegin.Cursor := crCross;.Visible := true;begin.Cursor := crDefault;(not ACursors.Checked)FCoord.Visible := falsebegin.XLabel.Caption := '';.YLabel.Caption := '';;;TFPlot.ACursorsExecute(Sender: TObject);

// Включение/выключение курсоров графика.Checked:= not ACursors.Checked;ACursors.Checkedbegin.ImageIndex:=4;:=0;:=0;;;.Visible := true;

SetFocus; // Переключение фокуса на данную форму

endbegin.ImageIndex:=3;;(not ACursMouse.Checked)FCoord.Visible := falsebeginFCoord do begin.Caption := '';.Caption := '';.Caption := '';.Caption := '';.Caption := '';.Caption := '';;;;;TFPlot.Chart1MouseMove(Sender: TObject; Shift: TShiftState; X,

Y: Integer);

// Отображение координат курсора мыши

var XData, YData: double;(Series1.Cursor = crCross) then begin.GetCursorValues(XData, YData);FCoord do begin.Caption := FloatToStrF(XData,ffGeneral,7,0);.Caption := FloatToStrF(YData,ffGeneral,7,0);;;;TFPlot.SetCursor;

// Поиск координат и прорисовка курсоров графика

var XPos, YPos, Pos: LongInt;: TPenMode;Chart1 do begin:= Canvas.Pen.Mode;.Pen.Color:=clBlack;.Pen.Mode := pmNotXor;:=Series1.CalcXPos(IndCurs1);:=Series1.CalcYPos(IndCurs1);.MoveTo(XPos,ChartRect.Bottom);.LineTo(XPos, ChartRect.Top);.MoveTo(ChartRect.Left, YPos);.LineTo(ChartRect.Right, YPos);:=Series1.CalcXPos(IndCurs2);(Pos <> XPos) then begin.MoveTo(Pos,ChartRect.Bottom);.LineTo(Pos, ChartRect.Top);;:=Series1.CalcYPos(IndCurs2);(Pos <> YPos) then begin.MoveTo(ChartRect.Left, Pos);.LineTo(ChartRect.Right, Pos);;.Pen.Mode := PenMode;;;TFPlot.WriteValue;

begin:=Series1.XValue[IndCurs1];:=Series1.XValue[IndCurs2];:=Series1.YValue[IndCurs1];:=Series1.YValue[IndCurs2];FCoord do begin.Caption := FloatToStrF(X1,ffGeneral,7,0);.Caption := FloatToStrF(Y1,ffGeneral,7,0);.Caption := FloatToStrF(X2,ffGeneral,7,0);.Caption := FloatToStrF(Y2,ffGeneral,7,0);.Caption := FloatToStrF(X1-X2,ffGeneral,7,0);.Caption := FloatToStrF(Y1-Y2,ffGeneral,7,0);;;TFPlot.FormKeyDown(Sender: TObject; var Key: Word;

Shift: TShiftState);

// В режиме отображения курсоров графика перемещает курсоры

var IndNew:LongInt;(ACursors.Checked) then begin(ssShift in Shift)IndNew:=IndCurs2IndNew:=IndCurs1;Key of_Left: Dec(IndNew, HCursor);_Right: Inc(IndNew, HCursor);_Home: IndNew:=0;_End: IndNew:= Series1.Count-1;

else exit;;

// Ограничение перемещения курсора

if (IndNew < 0) then IndNew := 0;(IndNew > Series1.Count-1) then IndNew := Series1.Count-1;

// Ускорение перемещения курсора(HCursor);

SetCursor; // Стирание прежнего курсора(ssShift in Shift)IndCurs2:=IndNewIndCurs1:=IndNew;; // Рисование нового курсора;;;TFPlot.Chart1AfterDraw(Sender: TObject);

// При перерисовке изображения прорисовывает курсоры

// отображает области недопустимых значений

var i: integer;, X2 :longint;(ACursors.Checked) then SetCursor;(Length(ABad) > 0)begin.Chart1.Canvas.Brush.Color := clSilver;.Chart1.Canvas.Pen.Color := clBlack;.Chart1.Canvas.Brush.Style := bsSolid;:=0;:= FPlot.Series1.CalcXPosValue(Max(ABad[i],FPlot.Series1.MinXValue));:= FPlot.Series1.CalcXPosValue(Min(ABad[i+1],FPlot.Series1.MaxXValue));

if(X1 = X2) then begin

// Раздвигаются границы области, если они совпадают

Dec(X1,2);(X2,2);;.Chart1.Canvas.Rectangle(X1,.Chart1.ChartRect.Top,,.Chart1.ChartRect.Bottom);(i,2);(i >= Length(ABad));;;TFPlot.FCoordClose;

// Выключение курсоров.Checked := false;(ACursors.Checked) then begin;.Checked := false;.ImageIndex:=3;;;TFPlot.ARepaintExecute(Sender: TObject);

// Перерисовка изображения.Repaint;;TFPlot.AMaxExecute(Sender: TObject);

// Установка курсора на максимумi: integer;: double;

// Стирание прежнего курсора

if ACursors.Checked then SetCursor;:= -1.7E308;i:=0 to Series1.LastValueIndex do(Series1.YValues[i] > YMax)begin:= Series1.YValues[i];:= i;;:= 0;;;.Visible := true;.Checked := true;.ImageIndex:=4;;;TFPlot.AMinExecute(Sender: TObject);

// Установка курсора на минимумi: integer;: double;