Для генерации случайных величин, имеющих равномерное распределение, применяется метод Фибоначчи с запаздываниями. Он состоит в использовании следующей рекуррентной формулы: Здесь xi -- действительные числа из диапазона [0; 1], а a и b -- лаги (целые положительные числа), причем a больше b. Лаги специально подбираются так, чтобы в результате получалась равномерно распределенная случайная величина: a=55, b=24. Чем больше a, тем выше качество получающейся последовательности. Для работы этого генератора псевдослучайных чисел необходимо в памяти ЭВМ хранить a предыдущих случайных чисел. Преимущество этого метода в том, что он не требует умножения, а недостатки, -- необходимость большого объема памяти и исходного массива чисел для запуска программы. Программа ПР-1. Рис. 1. Распределение zN в результате 10000 испытаний (150 и 450 шагов). На рис. 1 показаны получающиеся распределения конечной координаты молекулы zN после 150 и 450 шагов (10000 испытаний). Видно, что получается нормальное распределение Гаусса. Можно отключить графический режим и вывести на экран квадрат дисперсии (СКО) zN при заданном N. Если построить график квадрата смещения zN от количества шагов N, то получится прямая пропорциональность (рис. 2). Рис. 2. Квадрат координаты zN пропорционален числу шагов N. Получающиеся результаты можно интерпретировать двояко: 1) с течением времени увеличивается область, в которой может находится хаотически движущаяся молекула; 2) если из небольшого объема выходит 10000 молекул некоторого вещества, то через некоторое время (пропорциональное количеству шагов N) молекулы вследствие диффузии расползутся и займут большую область. Программа моделирует одномерную диффузию молекул газа, которые изначально находились в небольшом объеме.
Рис. 3. Движение альфа-частицы в поле атомов золота. Траектория движения альфа-частицы при заданном прицельном параметре (рис. 3.1) рассчитывается с помощью программы ПР-2, содержащей цикл по времени t, в теле которого закодированы формулы: Угол отклонения альфа-частиц от первоначального направления движения раcсчитывается из формулы: α=arctg(vy/vx). В результате однократной реализации процесса получается значение угла α, соответствующее случайно выбранному ρ. В пучке находится много альфа-частиц, которые имеют всевозможные значения ρ. Поэтому в программе необходимо создать цикл, в котором прицельный параметр ρ изменяется случайным образом, каждый раз рассчитывается траектория движения альфа-частицы и определяется соответствующее отклонение α. На рис. 3.2 представлены результаты многократных испытаний, полученные при имитационном моделировании. Программа ПР-2.
Совокупность занятых ячеек, связанных с ближайшими по стороне, образуют кластер. Две ячейки относятся к одному кластеру, если существует путь из занятых ячеек, соединяющий их друг с другом. На рис. 5.1 ячейки, входящие в один кластер закрашены одним цветом. Красные ячейки образую перколяционный кластер, пронизывающий всю структуру и соединяющий верхний и нижний электроды. Найдем зависимость вероятности образования перколяционного кластера от вероятности p наличия узла. Для этого используется метод статистических испытаний, реализованный в программе ПР-3. Сначала, исходя из заданной вероятности p наличия занятой ячейки, случайным образом формируется ячеистая структура (рис. 4.1), после чего определяется, содержит она перколяционный кластер или нет. Эта процедура многократно повторяется, что позволяет определить вероятность перколяции P при данном значении p. Затем проводится аналогичный вычислительный эксперимент при других p и строится график зависимости P=P(p). Для установления факта наличия или отсутствия перколяции создается список связности, в котором существующим (не вырезанным) узлам сетки, входящим в один кластер, присваивается один и тот же номер. Программа находит существующий узел (i,j) и присваивает ему номер кластера Nкл=1, который записывается в специальный массив g[k]. После этого перебираются все существующие узлы (ячейки), и если они являются смежными, то есть удалены от узла (i,j) на 1, то им тоже присваивается номер Nкл=1. Если узел существует (является смежным), то для него повторяют эту процедуру, находя все узлы смежные с ним. В результате все узлы, относящиеся кластеру с номером Nкл=1, получают номер 1, который хранится в массиве g[k]. После этого программа, перебирая все существующие узлы, находят любой узел, у которого номер Nкл=0, то есть он не отнесен к первому кластеру. Ему присваивается номер Nкл=2, и этот же номер получают все остальные существующие узлы, образующие с ним один кластер. После этого, снова перебирая все существующие узлы сетки, находят любой узел, у которого номер Nкл=0, то есть он не отнесен ни к первому, ни ко второму кластеру. Ему присваивают номер Nкл=3 и т.д. Программа ПР-3. Рис. 4. Изучение перколяции методом статистического моделирования (дискретная модель). После того, как все занятые ячейки отнесены к тому или иному кластеру и имеют номера, записанные в массиве g[k], устанавливается факт существования перколяционного кластера. Перебирая все узлы, ищут такие два, для которых выполняются условия: 1) один узел контактирует с верхней пластиной (j=1), а другой с нижней (j=M); 2) оба узла относятся к одному и тому же кластеру, то есть имеют одинаковые номера Nкл. При перколяции на экран выводится 1, при ее отсутствии -- 0. Для нахождения вероятности P образования пронизывающего кластера процедура формирования новой ячеистой структуры и установления факта существования перколяции многократно повторяется. В программе ПР-7 выполняется S= 20-50 испытаний, получающиеся результаты выводятся на экран. Это позволяет оценить вероятность P перколяции при различных p и построить график (рис. 4.2). Из него видно, что с ростом p от 0,4 до 0,7 резко увеличивается вероятность перколяции P. Для увеличения статистической значимости результатов следует провести большее количество испытаний.
Программа ПР-4. Результаты работы программы приведены на рис. 5. Видно, что при N=100 перколяция отсутствует (рис. 5.1), а при N=200 возникает перколирующий кластер (рис. 5.2). Для того, чтобы изучить зависимость вероятности возникновения перколяционного кластера от числа дисков, используют метод статистических испытаний. Необходимо дополнить программу так, чтобы она моделировала многократное проведение серии опытов, в которых бросаются N1 дисков и определяется вероятность перколяции при N=N1. Такая программа позволит определить вероятность P при других N2, N3, N4 и построить график P=P(N). Рис. 5. Образование перколяционного кластера (непрерывная модель). Рассмотренные дискретная и непрерывная модели перколяции, имеют большое значение для теории перколяции (просачивания или протекания). Эта теория описывает физические процессы, происходящие в неоднородных средах со случайными свойствами. К ней относятся исследования электропроводности композиционных материалов, состоящих из проводящих и непроводящих компонентов, изучения фазовых переходов газа в жидкость, образования магнитных доменов, диффузии в неупорядо-ченных средах и т.д.
Программа ПР-5. В кадре длиной D происходит ошибка с вероятностью pD. Генерируется случайное число x и если оно меньше pD, то происходит ошибка и по каналу связи повторно передается тот же кадр (для этого i уменьшается на 1). При безошибочной передаче кадра на экран просто выводится время t. Скорость передачи определяется так: v= Chislo_k (D-1)/t, где (D-1) -- число информационных бит, t -- число тактов. Она зависит от длины кадров и вероятности ошибки p. В случае, когда длина кадра D=8, и сообщение передается без помех (p=0), cскорость передачи полезной информации в результате моделирования получается равной v=0,875 бит/c. В самом деле, к семи информационным битам прибавляется восьмой проверочный, поэтому скорость передачи можно рассчитать так: v=7/8= 0,875. Проведя серию вычислительных экспериментов можно убедиться, в том что при увеличении вероятности p ошибки скорость v передачи информации уменьшается: 1) при p=0,001, v=0,867 бит/с; 2) при p=0,01, v=0,800 бит/с; 3) при p=0,02, v=0,724 бит/с; 4) при p=0,05, v=0,522 бит/с.
Используется программа ПР-5. При увеличении вероятности ошибки растет частота переспросов, скорость передачи информации уменьшается. Поэтому графиком зависимости v=v(p) является убывающая кривая, которая с увеличением p приближается к 0 (рис. 6). Если длина кадра D=8, то уже при p=1/8=0,125 каждый кадр будет содержать ошибку, поэтому передать информацию не удастся (v=0). Для кадров длиной D=4 такая ситуация наступает при p=1/4=0,25. Рис. 6. Зависимость скорости передачи от вероятности ошибки: 1) длина кадра D=8 (красный); 2) длина кадра D=4 (синий).
Используется программа ПР-5. Если p= 0,1, то при длине кадра 2 или 3 бита скорость передачи невелика за счет большого числа проверочных битов четности. С ростом длины кадра она уменьшается из-за увеличения вероятности ошибки в кадре и затрат времени на повторную его передачу. Существует некоторая оптимальная длина кадра, при которой скорость максимальна. Результаты моделирования -- на рис. 7. Рис. 7. Зависимость скорости передачи от длины кадра D при вероятностях ошибки: 1) p=0,02 (красный); 2) p=0,05 (синий).
Рис. 8. Зависимость емкости канала связи от вероятности ошибки (черный цвет -- теория, красный -- моделирование). Построим график зависимости емкости моделируемого канала связи от вероятности ошибки (рис. 8). Видно, что при увеличении p от 0 до 0,5 она уменьшается от 1 до 0. Эта зависимость похожа на расчетную кривую для двоичного симметричного канала связи, но точного совпадения нет.
Решением этой задачи является программа ПР-6. При ее запуске на экран выводится исходное сообщение, закодированное сообщение после кодера (перед каналом связи), сообщение с ошибками после канала связи и декодированное сообщение после декодера. Программа ПР-6. Тексты программ находятся в zip-архиве, файл gl2-6.pas. ВВЕРХ
Майер, Р. В. Задачи, алгоритмы, программы / Р. В. Майер [Электронный ресурс]. - Глазов: ГГПИ, 2012 // Web-site http://maier-rv.glazov.net . |