k, i: Integer;
begin
a1: = sqrt (sqr (Minf) -1);
x [0]: = 0;
for i : = 1 to n do
x [i]: = x [i-1] + Xk/n;
for i: = 0 to n do
if x [i] <= Xmid then r [i]: = (Rmid/Xmid) * (2-x [i]/Xmid) * x [i]
else r [i]: = Rmid;
for i: = 1 to n do
begin
e [i]: = x [i]-a1 * r [i];
end;
pr: = x [1]/(a1 * r [1]);
m [1]: = 1/(pr * sqrt (pr * pr-1) + ln (pr + sqrt (pr-1)));
for i: = 1 to n-1 do
begin
sm: = 0;
pr: = 0;
for k: = 1 to i do
begin
pr: = (x [i +1]-e [k-1])/(a1 * r [i +1]);
sm: = sm + m [k] * (pr * sqrt (pr * pr - 1) + ln (pr + sqrt (pr-1)))
end;
pr: = (x [i +1]-e [i])/(a1 * r [i +1]);
m [i +1]: = (1-sm)/(pr * sqrt (pr * pr-1) + ln (pr + sqrt (pr-1)));
end;
for i: = 1 to n-1 do
begin
sm: = 0;
for k: = 1 to i do
begin
pr: = (x [i]-e [k-1])/(a1 * r [i]);
sm: = sm + m [i] * sqrt (pr * pr-1)
end;
p [i]: = (-4/a1) * sm;
end;
pr: = (x [1])/(a1 * r [1]);
m1 [1]: = ((x [1]-Xm)/Xk)/(pr * sqrt (pr * pr-1) + arccosh (pr));
for i: = 1 to n-1 do
begin
sm: = 0;
for k: = 1 to i do
begin
pr: = (x [i +1]-e [k-1])/(a1 * r [i +1]);
sm: = sm + m1 [k] * (pr * sqrt (pr * pr-1) + arccosh (pr))
end;
pr: = (x [i +1]-e [i])/(a1 * r [i +1]);
m1 [i +1]: = (((x [i +1]-Xm)/Xk)-sm)/
(Pr * sqrt (pr * pr-1) + arccosh (pr));
end;
for i: = 1 to n-1 do
begin
sm: = 0;
for k: = 1 to i do
begin
pr: = (x [i]-e [k-1])/(a1 * r [i]);
sm: = sm + m1 [k] * sqrt (pr * pr-1)
end;
p1 [i]: = (-4/a1) * sm;
end;
end;
procedure TForm1.FormCreate (Sender: TObject);
begin
n: = StrToInt (LabeledEdit6.Text);
DecimalSeparator: = '.'; p> StringGrid1.Cells [0,0]: = '№';
StringGrid1.Cells [1,0]: = 'X';
StringGrid1.Cells [2,0]: = 'R';
StringGrid1.Cells [3,0]: = 'm';
StringGrid1.Cells [4,0]: = 'p';
StringGrid1.Cells [5,0]: = 'm1';
StringGrid1.Cells [6,0]: = 'p1';
end;
procedure TForm1.Button1Click (Sender: TObject);
var i: integer;
begin
n: = StrToInt (LabeledEdit6.Text);
StringGrid1.RowCount: = n +1;
for i: = 1 to n +1 do
with StringGrid1 do
begin
Cells [0, i]: = IntToStr (i-1);
end;
try
DoCount (StrToFloat (LabeledEdit1.Text),
StrToFloat (LabeledEdit2.Text),
StrToFloat (LabeledEdit3.Text),
StrToFloat (LabeledEdit4.Text),
StrToFloat (LabeledEdit5.Text));
except
ShowMessage ('Перевірте введені параметри!'); p> end;
Series1.Clear;
Series2.Clear;
Series3.Clear;
Series4.Clear;
Series5.Clear;
for i: = 0 to n do
begin
try
// Малюю графіки
Series1.Add (r [i]);
Series2.Add (m [i]);
Series3.Add (p [i]);
Series4.Add (m1 [i]);
Series5.Add (p1 [i]);
// Заповнюю таблицю
StringGrid1.Cells [1, i +1]: = FloatToStrF (x [i], ffFixed, 3,3);
StringGrid1.Cells [2, i +1]: = FloatToStrF (r [i], ffFixed, 3,3);
StringGrid1.Cells [3, i +1]: = FloatToStrF (m [i], ffFixed, 3,3);
StringGrid1.Cells [4, i +1]: = FloatToStrF (p [i], ffFixed, 3,3);
StringGrid1.Cells [5, i +1]: = FloatToStrF (m1 [i], ffFixed, 3,3);
StringGrid1.Cells [6, i +1]: = FloatToStrF (p1 [i], ffFixed, 3,3);
except
end;
end;
end;
end.
скрішоти роботи програми у порівнянні з графіками MathCad:
В
В
В В
В В
В В
В В
В В
Висновок
Проведений у програмі розрахунок на перших трьох ділянках збігається з даними, отриманими при моделюванні в MathCAD (з точністю до 10 3 ), тому приймається, що програма розрахунку дає справедливі результати для решти ділянок обтічного тіла.
Список літератури
1. Кузнєцов В.І., Макаров В.В. Надзвукове обтікання загострених тіл обертання: Навчальний посібник. - Омськ: Вид-во ОмГТУ, 1999р. - 80с. p> 2. Кузнєцов В.І., Макаров В.В. Аерогазодинаміки в питаннях і завданнях: практикум. - Омськ: Изд-во ОмГТУ, 2002р. - 80с. br/>