Программа  Ф-КОЛЬЦО


ПРОГРАММА 
Ф-КОЛЬЦО

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

http://forumupload.ru/uploads/000d/c4/47/3/t676074.jpg

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)