Главная / Моделирование систем / Проверка правильности имитации нсв

Проверка правильности имитации нсв

В результате имитации случайной величины по одному из рассмотренных методов формируется набор из N значений этой величины (массив ее реализаций объема N), где N — количество испытаний. Обработав его, можно получить различные сведения об имитируемой величине, в том числе проверить правильность ее имитации. Так как объем массива реализаций случайной величины (N) всегда достаточно велик, для операций по его обработке должны применяться программные средства.

Построение гистограммы распределения

Гистограмма распределения представляет собой график (в виде столбиков), отражающий частоту попаданий НСВ в различные интервалы значений. Гистограмма строится в следующем порядке.

1. Находится диапазон смоделированных значений случайной величины: Xmin, Xmax. В качестве этих величин должны использоваться соответственно минимальное и максимальное из смоделированных значений. Однако в этом случае требуется в ходе моделирования (до его окончания) сохранять все значения случайной величины. Поэтому во многих случаях величины Xmin и Xmax задаются до начала моделирования. Если имитируется случайная величина, принимающая значения в ограниченном диапазоне (например, равномерная), то в качестве Xmin и Xmax используются границы этого диапазона. Если теоретический диапазон значений имитируемой случайной величины неограничен (как, например, для экспоненциальной или гауссовской НСВ), то границы диапазона могут быть приближенно известны из опыта работы с моделируемой системой (или с системами, аналогичными ей).

Шаги 2,3,4 (приведенные ниже) также обычно выполняются до начала моделирования.

2. Определяется размах варьирования: L = Xmax-Xmin.

3. Задается количество интервалов k (от 5 до 25), и определяется длина интервала d = L/k.

4. Находятся границы интервалов: (Xmin; Xmin+d), (Xmin+d; Xmin+ +2d),…, (Xmax-d; Xmax).

5. Фиксируется количество попаданий имитируемой случайной величины в каждый из интервалов: Mi, i=1,…,k (M1+M2+…+Mk = N). Эта операция может выполняться не по окончании, а в ходе имитации.

6. Вычисляются относительные частоты попадания имитируемой случайной величины в каждый из интервалов: Fi= Mi/(N*D), i=1,…,k.

Сама гистограмма строится следующим образом: по оси абсцисс откладываются интервалы значений случайной величины (найденные на шаге 4), и на каждом интервале строится столбик (прямоугольник) высотой Fi.

Пример 1.9. Рассмотрим построение гистограммы для НСВ, приведенной в примере 1.7. НСВ принимает значения в ограниченном диапазоне (от 4 до 10), поэтому можно принять Xmin=4, Xmax=10. Размах варьирования L=6. Выберем количество интервалов: k=6, тогда длина интервала d=1. Границы интервалов: (4;5), (5;6),…,(9;10).

Приведем пример программы, позволяющей подсчитывать и выводить на экран частоты Mi и относительные частоты Fi при моделировании этой НСВ. Количество интервалов задается константой k, длина интервала — константой d. Константа nmax задает количество испытаний. Границы интервалов хранятся в массиве gran. Сами частоты попаданий в интервалы подсчитываются в ходе имитации и сохраняются в массиве mi. Относительные частоты помещаются в массив fi. Переменная t — имитируемая случайная величина (имитация выполняется процедурой kl).

Program model1_9;

Uses crt;

Const k=6; d=1;

nmax=1000;

Var gran: array[1..k+1] of real;

mi: array[1..k] of integer;

fi: array[1..k] of real;

i, j: integer;

t: real; (* переменная для имитации времени решения *)

….. (* объявление других переменных *)

Procedure kl (var x: real);

….. (* текст процедуры приведен в примере 1.7 *)

Begin (* основная программа *)

Clrscr;

For i:=1 to k do mi[i]:=0;

Gran[1]:=4;

For i:=2 to k+1 do gran[i]:=gran[i-1]+d; (* определение границ интервалов *)

For i:=1 to nmax do

begin

………

kl(t); (* вызов процедуры имитации *)

for j:=1 to k do

if (t>=gran[j])and(t<gran[j+1]) then mi[j]:=mi[j]+1;

………

end;

For j:=1 to k do fi[j]:=mi[j]/(nmax*d);

Clrscr; (* вывод частот mi и fi на экран *)

Writeln (‘Частоты попаданий в интервалы’);

For j:=1 to k do

writeln(gran[j]:4:2,’-‘,gran[j+1]:4:2,’: ‘,mi[j]);

Writeln; writeln;

Writeln (‘Относительные частоты’);

For j:=1 to k do

writeln(gran[j]:4:2,’-‘,gran[j+1]:4:2,’: ‘,fi[j]:6:2);

………

По результатам работы программы строится гистограмма распределения.

Если алгоритм имитации случайной величины разработан правильно, то гистограмма распределения должна быть близка к графику плотности распределения имитируемой случайной величины.

Примечание. Основное назначение гистограммы распределения состоит не в проверке правильности имитации НСВ, а в наглядном представлении значений НСВ и частот их появления.