Моделирование систем с разным распределением времени безотказной работы
Лабораторная работа, 03 Июня 2013, автор: пользователь скрыл имя
Описание работы
Задание. Разработать программу, моделирующую работу систем, описанных экспоненциальным распределением и распределением Релея. Приложение должно обеспечивать следующие функции:
Переключение вида распределения;
Задание параметра распределения;
Задание количества испытаний
Файлы: 1 файл
Отчёт.docx
— 186.43 Кб (Скачать файл)Button1: TButton;
Series1: TBarSeries;
Series2: TFastLineSeries;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
mas1 :array of integer;
mas2 : array of real;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
Edit1.Clear;Edit2.Clear;Edit3.
end;
{Функция вычисления факториала}
function factorial (n : integer) : real;
begin
if (n < 1) then
result := 1
else
if (n = 1) then
result := 1
else
result := n * factorial(n - 1);
end;
procedure TForm1.Button1Click(Sender: TObject);
var
x, t, sum, pSys, counter : real;
m, i, max, j, p, count : integer;
begin
SetLength(mas1, StrToInt(Edit3.Text));
SetLength(mas2, StrToInt(Edit3.Text));
count := StrToInt(Edit3.Text);
for i := 0 to count - 1 do
begin
mas1[i] := 0;
mas2[i] := 0;end;
randomize;
counter := StrToFloat(Edit2.Text);
for i := 0 to count - 1 do
begin
sum := 0;
m := 0;
while (sum < counter) do
begin
x := random;
t := (-ln(1 - x) / StrToFloat(Edit1.Text));
sum := sum + t;
inc(m); //подсчёт числа отказов
end;
mas1[i] := m; //занесение в массив экспериментальных значений
end;
max := mas1[1]; //поиск максимального значения
for i := 0 to count - 1 do
begin
if (mas1[i] > max) then
max := mas1[i];
end;
{Испытания с равным количеством отказов}
for i := 0 to max do
for j := 0 to count - 1 do
if (mas1[j] = i) then
mas2[i] := mas2[i] + 1;
for i := 1 to max do
mas2[i] := mas2[i] / count;
{Построение гистограммы}
Series2.Clear;
p := 1;
while (p < (max + 0.1)) do
begin
Series2.AddXY(p, mas2[p]);
inc(p);
end;
{Построение расчётного графика}
Series1.Clear;
p := 0;
while (p < (max + 0.1)) do
begin
pSys := Math.Power((StrToFloat(Edit1.
Series1.AddXY(p + 1, pSys);
inc(p);end;end;end.
Вывод: В ходе лабораторной работы были проведены исследования в результате которых было выявлено, что с увеличением числа испытаний экспериментальные значения частот количеств отказов приближаются к расчётным.