Программа Ф-КОЛЬЦО
ПРОГРАММА
Ф-КОЛЬЦО
1. ОБЩЕЕ
2. АЛГОРИТМ
3. ВЫВОД
4. СКАЧИВАНИЕ
1. ОБЩЕЕ
В статье «Исследование кольцевой сети» - Сборник трудов ЦНИИС, № 3, 1975 г.
Исследована кольцевая сеть.
Скачать статью.
https://disk.yandex.ru/d/Gwy_lP4zFUupzA
Имеется n – станций. Одна центральная станция и n-1 оконечных станций.
Каждая станция связана с двумя другими станциями.
Выход из строя двух и более линий связи приводит к потере связи части оконечных станций с центральной станцией.
То есть.
Задан единичный цикл графа:
n – вершин, n – рёбер.
Вершина № 1 называется центром.
Исследовано.
С заданной вероятностью ребра исключаются. При исключении двух и более ребер часть вершин теряет путь к центру.
В статье дано без доказательств выражение для расчёта.
Приложение 1
В программе 1C-КОЛЬЦО вычисляется моделированием математическое ожидание числа вершин, не имеющих пути к центру.
2. АЛГОРИТМ
Вычисляются отдельные сомножители вышеупомянутой формулы, а затем перемножаются
3. ВЫВОД
Результат - массив S1[1..3,1..w].
S1 [1, t] – математическое ожидание числа вершин, отрезанных от центра.
S1 [3, t] – вероятность исключения ребра
Кроме того, вывод информации с контрольных точек для понимания работы программы.
По программе Ф-КОЛЬЦО проведены точные расчёты математического ожидания число отрезанных вершин.
Результаты моделирования программе Программа 1С-КОЛЬЦО совпадают с расчётом по программе Ф—КОЛЬЦО.
Погрешность менее одного процента.
Также.
Проведен ручной расчёт для сети из трех вершин с вероятностью удаления с вероятностью 0,8.
Величина z.
Проведен ручной расчёт по формуле при тех же данных. В
Величина z1.*
4. СКАЧИВАНИЕ
Программа ФКОЛЬЦО на Дельфи 7.
Распечатка программы – Дельфи 7.
Приложение 1.
Скачать программу
https://disk.yandex.ru/d/enCZSHs7uJzMGA
Приложение 1
M - математическое ожидание числа отрезанных вершин
n - число вершин
a - вероятность удаления ребра
Приложение 2
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, StdCtrls;
type
TForm1 = class(TForm)
StringGrid1: TStringGrid;
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button5: TButton;
Label1: TLabel;
StringGrid2: TStringGrid;
StringGrid3: TStringGrid;
StringGrid4: TStringGrid;
Button4: TButton;
Edit1: TEdit;
Edit2: TEdit;
Label4: TLabel;
Edit3: TEdit;
Label2: TLabel;
Label3: TLabel;
Label7: TLabel;
Label6: TLabel;
Edit4: TEdit;
procedure Button1Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
const
n=10;// ÷число вершин
w=50;//задание вероятностей
var
Tick: Cardinal;
s:array [1..7,1..w] of real;//
k, h, i, j, q, x : integer;//
v, b , i0 : integer;//
c,z,z1,z2,z3,z4,z5,a : real;//
w1, w2,w3,w4,w5, w6,w7, w8: real;//
procedure TForm1.Button1Click(Sender: TObject);
// îêàíòîâêà
begin
for q:=1 to w //íóìåðàöèÿ ïî ãîðèçîíòàëè â òàáë ¹4,
do StringGrid3.Cells[q,0]:=IntToStr(q);
for q:=1 to 5 // íóìåðàöèÿ ïî âåðòèêàëè â òàáë ¹4 ,
do StringGrid3.Cells[0,q]:=IntToStr(q);
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
z:= 0.8*0.8*0.2*2 + 0.8*0.8*0.2*2 +0.8*0.8*0.8*2; //
z1 := 0.8*0.8*0.2*1*4 + 0.8*0.8*0.8*2*1 ; //
z2 := 0.8*0.8*0.2*1*4; //
z3 := 0.8*0.8*0.8*2*1; //
z4 := z2+z3; //
for x:= 1 to w do
begin
a:= 2*x/100 ;
w7:=0;
s[3,x] :=a;
For k:=2 to n do
begin
w1:=1; w2:=1; w4:=1; w5:=1; w6:=1;
for i:=1 to k do
w1 := w1*a;
for i:=1 to n-k do
w2 := w2*(1-a);
W3 := (k-1);
For i:= 1 to n+1 do
w4 := w4*i ;
for i:=1 to k+1 do
w5 := w5*i;
for i:=1 to n-k do
w6 := w6*i;
w7 := w7 +w1*w2*w3*w4/(w5*w6) ;
end;
s[1,x] := w7 ;
end;
for i0:=1 to w do begin
StringGrid3.Cells[i0,1]:= FormatFloat('0.000',s[1,i0]) ;
// StringGrid3.Cells[i0,2]:= FormatFloat('0.000',s[2,i0]) ;
StringGrid3.Cells[i0,3]:= FormatFloat('0.000',s[3,i0]) ;
// StringGrid3.Cells[i0,4]:= FormatFloat('0.000',s[4,i0]) ;
// StringGrid3.Cells[i0,5]:= FormatFloat('0.000',s[5,i0]) ;
end;
Edit1.Text := 'w1='+'---' +FormatFloat('0.000',w1) +' ' +
'w2='+'---' +FormatFloat('0.000',w2) +' ' +
'w3='+'---' +FormatFloat('0.000',w3) +' ' +
'w4='+'--- ' +FormatFloat('0.000',w4) +' ' +
'w5='+'--- ' +FormatFloat('0.000',w5) +' ' +
'w6='+'--- ' +FormatFloat('0.000',w6) +' ' +
'w7='+'--- ' +FormatFloat('0.000',w7) +' ' +
'w8='+'--- ' +FormatFloat('0.000',w8);
Edit2.Text :=
'z1='+'---' + FormatFloat('0.000',z1)
+' ' +
'z2='+'---' + FormatFloat('0.000',z2)
+' ' +
'z3='+'---' + FormatFloat('0.000',z3)
+' ' +
'z4='+'---' + FormatFloat('0.000',z4)
+' ' +
'z5='+'---' + FormatFloat('0.000',z5)
+' ' +
's1[2,40]='+'---' + FormatFloat('0.000',s[2,40]) ;
end;
procedure TForm1.Button4Click(Sender: TObject);
begin
end;
///////// ///////////////////////////////////////////////////////
procedure TForm1.Button5Click(Sender: TObject);
begin
close
end;
initialization
randomize;
end.
Отредактировано ABC (2021-03-10 00:55:07)