p> stringgrid1.rowcount: = (2);
stringgrid1.Height: = (52);
stringgrid1.Cells [0,1]: = (' '); p> stringgrid1.Cells [1,1]: = (' '); p> end
else
begin
if i = false then
begin
n: = 0;
while dwl (n, (arcsin (nn1/nn2) +0.00005), nn1, nn2, nn3) <(dd/wll) do
begin
a: = (arcsin (nn1/nn2) +0.001);
b: = (pi/2-0.001);
c: = (a + b)/2;
while (Abs (dwl (n, a, nn1, nn2, nn3)-dwl (n, b, nn1, nn2, nn3))> 0.001) or (Abs (a-b)> 0.001) do
begin
end;
stringgrid1.Cells [0, n +1]: = floattostr (n);
stringgrid1.Cells [1, n +1]: = floattostr (a);
stringgrid1.RowCount: = (stringgrid1.RowCount +1);
if n <14 then stringgrid1.Height: = (stringgrid1.Height +26);
n: = n +1;
end;
stringgrid1.RowCount: = (stringgrid1.RowCount-1);
stringgrid1.Height: = (stringgrid1.Height-26);
for n: = 0 to (Stringgrid1.RowCount-2) do
begin
Chart1.AddSeries ( TlineSeries.Create (Self));
chart1.Serieslist [n]. SeriesColor: = chart1.getfreeseriescolor (false);
for k: = 0 to 269 ​​do
begin
f: = (arcsin (nn1/nn2) + k * (((pi/2)-0.001-arcsin (nn1/nn2))/300));
chart1.Series [n]. AddXY (k, dwl (n, f, nn1, nn2, nn3),'', clteecolor);
end;
end;
Chart1.AddSeries ( TlineSeries.Create (Self));
for k: = 1 to 269 do
begin
chart1.Series [chart1.SeriesCount-1]. AddXY (k, (dd/wll),'', clteecolor);
end;
for n: = 0 to (Stringgrid1.RowCount-2) do
begin
Chart2.AddSeries (TlineSeries.Create (Self));
chart2.Serieslist [n]. SeriesColor: = chart2.getfreeseriescolor (false);
for k: = (-99) to 0 do
begin
end;
for k: = 0 to 99 do
begin
end;
for k: = 100 to 199 do
begin
end;
end;
label7.Caption: = floattostrf (arcsin (nn1/nn2), ffgeneral, 3,3);
label8.caption: = floattostrf ((pi/2-0.001- (pi/2-arcsin (nn1/nn2))/300), ffgeneral, 3,3);
label10.Caption: = floattostr (-dd * 1000000);
label11.Caption: = floattostr (2 * dd * 1000000);
i: = true;
end;
end;
end;
procedure TForm1.FormActivate (Sender: TObject);
begin
i: = false;
stringgrid1.Cells [0,0]: = ('Порядок');
stringgrid1.Cells [1,0]: = ('Кут (рад)');
end;
procedure TForm1.Exit1Click (Sender: TObject);
begin
close;
end;
procedure TForm1.About1Click (Sender: TObject);
begin
messagedlg ('Курсова робота з інформатики, ТУСУР, '
+ # 13 + ' 1 курс, спеціальність 210405. 'p> + # 13 + ' Виконав студент групи 164 '
+ # 13 + ' Філатов Олександр. ', mtinformation, [mbOK], 0);
end;
end.
Допоміжний модуль, що містить математичні процедури і функції.
unit Unit4;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, jpeg, ComCtrls, TeEngine, Series, TeeProcs,
Chart, math;
function tschng (n1, n2, n3, d, wl: real): boolean;
function dwl (m: byte; tetta, n1, n2, n3: real): real;
function q (wl, tetta, n2, n1: real): real;
function h (wl, tetta, n2: real): real;
function p (wl, tetta, n2, n3: real): real;
function e1 (wl1, d1, n11, n21, n31, tetta1, x1: real): real;
function e2 (wl2, d2, n12, n22, n32, tetta2, x2: real): real;
function e3 (wl3, d3, n13, n23, n33, tetta3, x3: real): real;
procedure dix (x1, x2, xm, y1, y2, ym: r eal; var xx1, xx2, xxm: real);
implementation
function tschng (n1, n2, n3, d, wl: real): boolean;
// здійснює перевірку вихідних даних на повноту
begin
if (n1 = 0) or (n2 = 0) or (n3 = 0) or (d = 0) or (wl = 0) then
begin
messagedlg ('Ви повинні ввести значення всіх параметрів! ', mtinformation, [mbOK], 0);
tschng: = (False);
end
else
tschng: = (True);
end;
function dwl (m: byte; tetta, n1, n2, n3: real): real;
// функція дисперсійної характеристики хвилеводу
var
aa, bb, cc, dd: real;
begin
aa: = sqrt (1-sqr (sin (tetta)));
aa: = 1/(2 * pi * n2 * aa);
bb: = sqrt (sqr (n2 * sin (tetta))-sqr (n3));
cc: = sqrt (sqr (n2 * sin (tetta))-sqr (n1));
dd: = n2 * sqrt (1-sqr (sin (tetta)));
dwl: = aa *...