- •Разработка и исследование нестандартного программного генератора случайных величин для имитационной модели Введение
- •1.Цель работы
- •2.Содержание
- •3.Теоретическая (расчетная) часть
- •1.Метод обратного преобразования (моп).
- •2.Универсальный метод н.П.Бусленко.
- •Проверка качества генератора
- •4.Программная реализация
- •Варианты
- •Отчетность
Проверка качества генератора
Проверка качества построенного генератора происходит после генерации выборки заданного объем и размещения ее в ячейках таблицы Excel. Проверка происходит путем:
1)Оценки допустимости отклонения среднего значения СВ от М(х), которое можно подсчитать для некоторого условного значенияM(x) = 12 поt-критерию Стьюдента:
где
Проверяемые гипотезы:
H0:
Значение tкр(=0.05,=n-1) можно найти в статистических таблицах или вызвать соответствующее значение функцииfx= СТЬЮДРАСПОБР в ячейкуExcel(см. ниже).
Если выполнено условие t<=tкр, то принимается гипотезаHo. В противном случае -H1, что потребует повторить генерацию выборки.
2)Оценки допустимости различия D(x) иSx.
3)Оценки допустимости отклонения экспериментальных от теоретических частот попадания СВ в заданные интервалы по 2– критерию:
Проверяемые гипотезы:
Ho:=Т
H1:Т
Значение 2кр(0.05,=k-1) можно найти в статистических таблицах или вызвать значение соответствующей функцииfx=Х2ОБР в ячейкуExcel.
Если выполнено условие , то принимается гипотезаHo. В противном случаеH1, что потребует повторить генерацию выборки и в случае неудачи проверить расчетные формулы.
4.Программная реализация
В практическую часть работы входит:
1)Создание средствами Excelтаблицы-шаблона по предлагаемому ниже образцу (файлgen) для ввода исходных данных и вывода результатов проверки допустимости отклонения параметров экспериментального распределения от параметров теоретического (Лист1).
2)Разработка по предлагаемому образцу макроса средствами VBAдляExcelдля генерации СВ с использованием предварительно полученных формул по типу вышеизложенного примера поВашему варианту выполнения работы.
3)Размещение генерируемых СВ в отдельной таблице (Лист2 “Генератор”) для возможности использования этих данных при анализе.
4)Представление результатов анализа в виде диаграммы экспериментальных и теоретических частот (Лист3 “Гистограмма”).
Следуя п.1, рассмотрим предлагаемый образец таблицы (рис.1). В левом верхнем углу листа следует поместить исходные данные, сопровождаемые текстовыми пояснениями. В ячейку R3C5 в качестве математического ожидания следует ввести некоторое произвольно выбранное для построения генератора значение, например, 12 (в реальной подпрограмме генератора это будет параметрpsвызова функции). В ячейкеR4C5 следует разместить минимально допустимое по расчету значение числа реализацийn. ЯчейкаR5C5 содержит произвольно выбираемое число разбиений для моделирования СВтолько методом УМ, обычно в пределах 10…25. В ячейкуR6C5 следует поместить число интервалов разбиения для анализа качества генератора, обычно в пределах 10…20, независимо от принятого метода моделирования.
Следующий блок (в рядах с 9 по 12 ) содержит рассчитанные теоретические характеристики моделируемого распределения и соответствующие экспериментальные данные. Так в ячейке R10C5 содержится полученная ранее формула для расчета правой границы распределенияачерез значениеps,справедливая только для данного типа графика функции распределения.Формула записывается через относительный адрес ячейки, откуда берутся данные для расчета. В данном случаеfx= (3/2)*R[-7}C. Это означает, что в качестве второго сомножителя следует взять число, содержащееся в ячейке на 7 рядов выше в той же колонке С по отношению к ячейкеR10C5, т.е. значениеpj. В ячейкуR11C5 значение М(х) передается по ссылке на ячейкуR3C5. ДисперсияD(x) в ячейкеR12C5 вычисляется по формулеp2s/8 со ссылкой на ту же ячейку. Экспериментальные данные в ячейках (10,6), (10,8), (11,6) и (12,6) являются результатом анализа выборки программой макроса, с которой мы познакомимся позже.
Рис.1.Начало таблицы для ввода исходных данных и анализа частот (Лист1).
Рис.2.Окончание таблицы (Лист1) с результатами анализа генератора
В следующем блоке в рядах R14…..R32 на рис.1 размещается таблица экспериментальных и теоретических частот попадания смоделированной СВ в интервалы равной ширины. Экспериментальные границы интервалов пересчитываются каждый раз программой макроса с учетом реальных минимального и максимального значений СВ для данной выборки, которая будет рассмотрена позднее. Теоретические частоты подсчитаны по приведенной в данном описании формуле также программой макроса. В ячейкахR32C5 иR32C7 содержатся формулы для суммы соответствующих столбцов.
На рисунке 2 приведена часть листа1 с анализом результатов реализации программного генератора СВ, которая демонстрирует очевидные удобства использования электронных таблиц для разработки генератора.
Рис.3. Фрагмент таблицы анализа генератора.
Как видно из рис.3, в ячейке R42C3 содержится известная формула для вычисленияt-критерия, записанная в относительных адресах используемых ячеек.
Рис.4.Тот же фрагмент таблицы с другой выделенной ячейкой.
Как видно из рис.4, в ячейке R42C8 содержится значение стандартной обратной функции распределения Стьюдента при уровне значимости= 0.05 и степени свободы=n– 1, предоставляемое по запросу средойExcel, гдеR[-38]C[-3] относительный адрес ячейки, содержащей число реализаций СВn.
Рис.5. Тот же фрагмент с выделенной ячейкой проверки условия t<tкр.
Как видно из рис.5, в ячейке R43C2 содержится логическое отношения, в зависимости от результата выполнения которого формируется различный текст заключения. Ввиду не тривиальности операции, приведем полный текст формулы:
fx=ЕСЛИ(R[-1]C[1]<R[-1]C[6];”t<t-кр.табл, следовательно, принимается гипотеза Но”;”t>tкр.табл., следовательно, принимается гипотеза Н1”)
Рис.6. Результаты проверки допустимости отклонения экспериментальных от теоретических частот попадания моделируемой СВ в заданные интервалы.
На рис.6 в ячейке R50C3 содержится вычисленное макросом значение2-критерия по данным выборки (макрос будет описан позже). В ячейкеR50C8 содержится соответствующее критическое значение того же критерия, полученное путем вызова стандартной функции ХИ2ОБР для уровня значимости=0.05 и степени свободы=k– 1.R[-44]C[-3] - относительный адрес числа интервалов разбиенияk.
В ячейке R51C2 содержится условное выражение:
=ЕСЛИ(R[-1]C[1]<R[-1]C[6];"Х-2 кр < Х-2 кр.табл, следовательно, принимается гипотеза Н0";"Х-2 кр >R[-16]C[11] Х-2 кр.табл, следовательно, принимается гипотеза Н1")
В зависимости от выполнения условии печатается тот или иной текст заключения о сходимости частот.
Окончательный вывод формируется с помощью текстового шаблона (см. рис.6), в который вставляются либо слова “соответствует ” и “может”, либо слова “не соответствует” и “не может”, в зависимости от результатов сравнения 2и2кртабл по выражениям:
=ЕСЛИ(R[-4]C[-7]<R[-4]C[-2];"соответствует";"не соответствует"
=ЕСЛИ(R[-5]C[-5]<R[-5]C;"может";"не может")
2)Согласно п.2 раздела “Программная реализация” следующей задачей является создание макроса на VBA, запускаемого от элемента управленияActiveX.
Вначале встроим элемент управления в виде кнопки на Лист1 и разместим на ней надпись ”Генерировать” вместо надписи по умолчанию CommandButton. Для этого в главном меню выберем Вид\Панели инструментов\Элементы управления. Появится панель элементов управления, на которой следует установить “Режим конструктора”. Кликнуть на пиктограмме с изображением кнопки и затем на свободном месте Листа1. Появится изображение кнопки с надписьюCommandButton. Далее следует нажать кнопку “Свойства” на панели элементов управления. Появится панель установки значений свойств, на которой следует установить курсор на свойствеCaption(Название элемента управления) и в соседнем справа поле заменить предлагаемое название на слово “Генерировать”, которое и должно появиться на кнопке.
Шрифт и размер надписи можно поменять свойством Font.
Далее следует отжать кнопку режима конструктора на панели элементов управления и дважды щелкнуть на внедренной кнопке “Генерировать”. Откроется редактор VBAсо следующим текстом – заготовкой макроса:
Private Sub CommandButton1_Click()
…………
End Sub
После заголовка следует поместить текст макроса, в данном случае для генерации линейно-возрастающего графика функции распределения универсальным методом:
Dim Psi(15) As Integer
n = Worksheets("Лист1").Cells(4, 5).Value
p = Worksheets("Лист1").Cells(3, 5).Value
k = Worksheets("Лист1").Cells(6, 5).Value
q = Worksheets("Лист1").Cells(5, 5).Value
a = (3 / 2) * p
For r = 1 To n
n = r
Randomize
gamma = Rnd(1)
j = Int(1 + q * gamma)
gamma = Rnd(1)
x = (a * (Sqr((j - 1) / q))) + (((a * (Sqr(j / q))) - (a * (Sqr((j - 1) / q)))) * gamma)
Worksheets("ГЕНЕРАТОР").Cells(2 + r, 1).Value = n
Worksheets("ГЕНЕРАТОР").Cells(2 + r, 2).Value = j
Worksheets("ГЕНЕРАТОР").Cells(2 + r, 3).Value = x
Next r
В начале вышеприведенного фрагмента устанавливается, из каких ячеек брать значения исходных данных для присвоения их переменным n,p,k,q,a. Затем в цикле заполняются 3 столбца на листе “Генератор”: 1-й столбец – значением порядкового номера реализации, 2-й - случайным номером интервала попаданияj, 3-й – значением х СВ с заданным законом распределения. Сдвиг на 2 строки вниз объясняется предварительно созданными на листе “Генератор” заголовками столбцов (рис.7)..
Рис.7. Фрагмент листа “Генератор”
Ниже приведен следующий фрагмент макроса, в котором вычисляются математическое ожидание и дисперсия моделируемой СВ.
Sum = 0
For i = 1 To n
Sum = Sum + (Worksheets("ГЕНЕРАТОР").Cells(2 + i, 3).Value)
Next i
Mat = Sum / n
Worksheets("Лист1").Cells(11, 6).Value = Mat
Sum1 = 0
For i = 1 To n
Sum1 = Sum1 + ((Worksheets(“ГЕНЕРАТОР").Cells(2 + i, 3).Value) - Mat) ^ 2
Next i
Disp = Sum1 / (n - 1)
Worksheets("Лист1").Cells(12, 6).Value = Disp
Далее определяются минимальное и максимальное значения в выборке СВ (MinиMax), ширина интервалаDeltaдля анализа экспериментальных частот, и заполняется таблица интервалов на листе 1.
Min = Worksheets("ГЕНЕРАТОР").Cells(3, 3).Value
For i = 1 To n
If (Worksheets("ГЕНЕРАТОР").Cells(2 + i, 3).Value) <= Min Then
Min = Worksheets("ГЕНЕРАТОР").Cells(2 + i, 3).Value
End If
Next i
Worksheets("Лист1").Cells(10, 6).Value = Min
Max = Worksheets("ГЕНЕРАТОР").Cells(3, 3).Value
For i = 1 To n
If (Worksheets("ГЕНЕРАТОР").Cells(2 + i, 3).Value) >= Max Then
Max = Worksheets("ГЕНЕРАТОР").Cells(2 + i, 3).Value
End If
Next i
Worksheets("Лист1").Cells(10, 8).Value = Max
Delta = (Max - Min) / k
For w = 1 To k
Worksheets("Лист1").Cells(16 + w, 1).Value = w
Worksheets("Лист1").Cells(16 + w, 2).Value = Min + ((w - 1) * Delta)
Worksheets("Лист1").Cells(16 + w, 3).Value = Delta + Min + ((w - 1) * Delta)
Next w
Заполненную таблицу интервалов можно видеть на рис.1.
Теоретические частоты PsiTподсчитываются в цикле по выведенной ранее формуле:
k = Worksheets("Лист1").Cells(6, 5).Value
For i = 1 To k
PsiT = (n / (k * k)) * ((2 * i) - 1)
Worksheets("Лист1").Cells(16 + i, 5).Value = PsiT
Next i
Ниже дан фрагмент программы для определения экспериментальных частот попадания СВ в интервалы равной ширины с ранее вычисленными границами:
For i = 1 To k
For h = 1 To n
If((Worksheets("ГЕНЕРАТОР").Cells(2 + h, 3).Value) >= (Worksheets("Лист1").Cells(16 + i, 2).Value)) And ((Worksheets("ГЕНЕРАТОР").Cells(2 + h, 3).Value) <= (Worksheets("Лист1").Cells(16 + i, 3).Value)) Then
Psi(i) = Psi(i) + 1
End If
Next h
Worksheets("Ëèñò1").Cells(16 + i, 7).Value = Psi(i)
Next i
Заключительный фрагмент касается расчета критерия 2 Пирсона, помещаемого в ячейкуR50C3 на листе 1:
Pearson = 0
For b = 1 To k
Pearson = Pearson + (((Worksheets("Лист1").Cells(16 + b, 7).Value) - (Worksheets("Лист1").Cells(16 + b, 5).Value)) ^ 2) / (Worksheets("Лист1").Cells(16 + b, 5).Value)
Next b
Worksheets("Лист1").Cells(50, 3).Value = Pearson
End Sub
Заключительной 4-й стадией программной реализации является построение для наглядности гистограммы экспериментальных и теоретических частот попадания СВ в заданные интервалы равной ширины.
Диаграмма строится на отдельном листе, поэтому, в случае нехватки 3-х стандартных листов, сначала нужно добавить новый лист к книге. Для этого следует кликнуть правой кнопкой на названии одного из “старых” листов, например, на Лист1, и в меню выбрать “Добавить”. Появится Лист4, название которого следует изменить на “Гистограмма”. Перейти на лист1 и на панели инструментов нажать кнопку “Мастер диаграмм”, и далее следовать его советам (4 шага). 1)Указать тип диаграммы “Гистограмма”; 2)На появившейся панели установить переключатель на “столбцах”, щелкнуть мышкой в окне “Диапазон” и выделить при нажатой кнопке Ctrlдва столбца экспериментальных и теоретических частот на Листе1. Появится гистограмма без надписей вдоль осей и названия. Лишний 3-й ряд следует удалить 3)На этом этапе появится панель, где будет предложено сделать подписи по осям и дать название гистограмме; 4)На этом заключительном шаге будет предложено указать место размещения гистограммы, нажать “Готово”.Вид полученной гистограммы показан на рис. 8.
Рис.8. Гистограмма распределения теоретических (ряд1) и экспериментальных (ряд 2)
частот попадания СВ в заданные интервалы для одной из выборок объемом 500 значений.