Численное интегрирование. Имитационное моделирование. Моделирование частотной характеристики. Моделирование случайных событий
Скачать 91.41 Kb.
|
Лабораторная работа 2 Тема: "Имитационное моделирование. Моделирование частотной характеристики. Моделирование случайных событий" Цели работы: изучение методов частотного анализа дискретных сигналов с помощью дискретного преобразования Фурье (MS Excel| Google sheets и python); изучение методов и алгоритмов моделирования случайных чисел (MS Excel | Google sheets и python). Часть 2. Моделирование случайных чисел СодержаниеЗадача 2. Моделирование случайных чисел 1 Варианты задания 2 Примечания 3 Теоретические данные 4 1.Общие сведения 4 2.Генераторы случайных чисел 5 3.Проверка качества работы генератора случайных чисел (ГСЧ) 8 Подробнее 10 Задача 2. Моделирование случайных чиселСогласно варианту задания необходимо составить и отладить программу (подпрограмму) генерирования случайных чисел: с равновероятным распределением на интервале [0; 1), используя формулу используя готовый пакет Google | Excel надстройку Анализ данных и библиотеку numpy алгоритм из объекта random. Провести статистическое исследование генератора при различных значениях выборки: малых n<25, средних , больших n>500. Вариант задания выбирается из табл. 1, в которой указаны тип генератора случайных чисел, начальные условия. Отчет по заданию должен содержать: Описание метода генерирования псевдослучайных чисел; Программу (подпрограмму) датчика псевдослучайных чисел; Вывод 20 случайных чисел; Результаты статистической обработки при различных значениях выборки; * диаграмма вывода ГСЧ; Выводы по задаче – сравнение и оценка генераторов. Варианты заданияТаблица 1 Тип генератора случайных чисел и начальные условия
К заданию в elearning прикрепляется решение задания: архив с файлами *.xlsx и папкой с *.py или ссылка на открытый GoogleSheets документ и программу на диске в файле *.txt. ПримечанияПредварительно установить надстройку Анализ данных (генератор случайныйх чисел) в MS Excel или расширение XLMiner Analysys ToolPak (Random number generation) в Google Предварительно установить python версии 3.* (3.7.5 или 3.8, например) и библиотеки matplotlib (или plotly), numpy через pip install. Решение может быть сделано в Google Colab, там эти библиотеки есть. Теоретические данныеОбщие сведенияМоделирование на ЭВМ процессов функционирования различных систем связано с выработкой большого количества случайных чисел с заданными законами распределения. Для этой цели используется обычно один из следующих способов: - табличный (файловый) – ввод таблиц равномерно распределённых случайных чисел во внешнюю или оперативную память ЭВМ; - аппаратный (физический) – использование специального приспособления к ЭВМ – "датчика" случайных чисел, формирующего случайные величины путём физического моделирования некоторых случайных процессов (излучения радиоактивных источников, шумов электронных ламп и др.); - алгоритмический (программный) – использование псевдослучайных (квазислучайных) последовательностей, реализуемых программным генератором случайных чисел. Псевдослучайными числами называются числа, вырабатываемые ЭВМ рекуррентным способом по специальным алгоритмам, когда каждое последующее число получается из предыдущих в результате применения некоторых арифметических и логических операций. Такая последовательность чисел удовлетворяет известным критериям случайности, хотя входящие в эту последовательность числа зависимы между собой. Одним из недостатков этого метода является периодичность образованных программным способом псевдослучайных чисел, но для ряда задач, не требующих большого количества случайных чисел, длина периода является достаточной. Достоинства метода псевдослучайных чисел. На получение каждого случайного числа затрачивается несколько простых операций, так что скорость генерирования случайных чисел имеет тот же порядок, что и скорость работы ЭВМ. Малый объем памяти ЭВМ для программирования. Любое из чисел легко воспроизвести. Качество генерируемых случайных чисел достаточно проверить один раз. Генераторы случайных чиселМетод Неймана. Первый алгоритм для получения псевдослучайных чисел был предложен Дж. Нейманом. Его называют методом середины квадратов. Пусть задано четырехзначное число . Возведем его в квадрат. Получим 8-значное число . Выберем 4 средние цифры из этого числа и положим . Затем снова возведем в квадрат и извлечем из него 4 средние цифры. Получим и т.д. а) конгруэнтные методы Самое широкое применение при моделировании на ЭВМ получили конгруэнтные методы генерации псевдослучайных последовательностей, в основе которых лежит фундаментальное понятиеконгруэнтности. Два целых числа А и В конгруэнтны (сравнимы) по модулю m, если их разность делится на m без остатка. То есть В - А = km , где k - целое. Это определение записывается так A = B (mod m). Например: 1984 4 (mod10), 5008 8 (mod 103) и т.д. Величина m берется равной длине машинного слова m = 2b, где b — число бит в машинном слове. Мультипликативный конгруэнтный метод (АлгоритмЛемера). Последовательность случайных чисел получается с помощью следующего итерационного соотношения: , (1) где и - очередное и последующее случайное число; m - модуль, m > 0; a - множитель, 0 ≤ a< m; - начальное значение, . Если m и а являются целыми, то создается последовательность целых чисел в диапазоне . Из рекуррентной природы формулы следует, что при одном и том же значении мы получим при повторной генерации ту же самую последовательность. Последовательность случайных чисел периодически повторяются. Это связано с тем, что числа могут принимать только значения . То есть, самое большее через шагов уже один раз полученное число должно появиться опять, а с ним повторяется и вся последовательность. Таким образом, длина периода при модуле не может превышать . Поэтому выбор значений а и m является критичным для разработки хорошего генератора случайных чисел. Для практических расчетов принимают . Последовательность чисел , равномерно распределенных на интервале от нуля до единицы, рассчитывается по формуле . (2) Линейный конгруэнтный метод. Схема метода предложена Д.Лехмером в 1949 году. Работа этих генераторов основана на использовании формулы: . (3) Число m выбирается аналогично предыдущему пункту. Множитель а предпочтительно выбирать в интервале [0,01m; 0,99m]. Значение с может быть произвольным, но не должно иметь общего множителя с m. При b=0 получаем, рассмотренный выше мультипликативный метод. С вычислительной точки зрения линейный метод генерации последовательности неотрицательных целых чисел сложнее мультипликативного на одну операцию сложения, но при этом возможность выбора дополнительного параметра позволяет уменьшить возможную корреляцию получаемых чисел. Однако экспериментальная проверка качества генерируемой последовательности чисел на основе этой формулы является сложнее. Квадратичный конгруэнтный метод. Последовательность случайных чисел вычисляется с помощью следующего рекуррентного соотношения . (4) Наибольшее значение периода данного датчика достигается при четном a, нечетном с и если нечетное b удовлетворяет условию . Кубический конгруэнтный метод. Последовательность случайных чисел вычисляется с помощью следующего рекуррентного соотношения (5) Для практических расчетов принимают . Генератор Фибоначчи. Последовательность случайных чисел вычисляется с помощью следующего рекуррентного соотношения (6) где и - целые числа, лежащие между нулем и m . BBS – генератор. Данный генератор вычисляется по формуле . (7) Вначале выбираются два больших простых числа p и q. Числа p и q должны удовлетворять условиям , т.е. при делении p и q на 4 должен получиться одинаковый остаток 3. Далее вычисляется число , называемое целым числом Блюма. По формуле вычисляется стартовое число генератора, где - взаимно простое число (т.е. не имеющее общих делителей, кроме 1). Системный генератор MS Fortran. . (8) б) тригонометрические методы Основаны на использовании ошибки вычисления косинуса больших алгоритмов. , (9) где n - целое число, определяемое типом ЭВМ; - начальное значение, . Тригонометрический метод со счетчиком , (10) где - начальное значение, . Проверка качества работы генератора случайных чисел (ГСЧ)Применяемые генераторы случайных чисел перед моделированием должны пройти тщательное предварительное тестирование на равномерность, стохастичность и независимость получаемых последовательностей случайных чисел. Существует множество статистических критериев, которые можно использовать для проверки того, будет ли последовательность случайной. Наиболее точным считается спектральный критерий. Например, очень распространенный критерий, называемый КС-критерием, или критерием Колмогорова - Смирнова. Можно воспользоваться приближенным тестом, который состоит в проверке на равномерность распределения N случайных чисел . а) проверка статистических характеристик. Тест состоит в вычислении математического ожидания и дисперсии полученных случайных чисел. Согласно этому тесту, для равномерного распределения должны выполняться условия: ; ; . б) частотный тест. Позволяет выяснить, сколько чисел попало в интервал , то есть (0.5 – 0.2887; 0.5 + 0.2887) или, в конечном итоге, (0.2113; 0.7887). Так как 0.7887 – 0.2113 = 0.5774, заключаем, что в хорошем ГСЧ в этот интервал должно попадать около 57,7% из всех выпавших случайных чисел (см. рис. 1).
Рис.1. Частотная диаграмма идеального ГСЧ в случае проверки его на частотный тест Также необходимо учитывать, что количество чисел, попавших в интервал (0; 0.5), должно быть примерно равно количеству чисел, попавших в интервал (0.5; 1). Подробнееhttps://habr.com/ru/post/415373/ https://exceltable.com/funkcii-excel/generator-sluchaynyh-chisel https://numpy.org/doc/stable/reference/random/index.html https://blog.sheetgo.com/finance-processes/how-to-use-xlminer-analysis-toolpak-add-on-for-google-sheets/ |