
- •А.И. Ходанович Офисное программирование
- •Введение
- •Лабораторная работа № 1 Величины и типы данных vba
- •Лабораторная работа № 2. Макросы и модули vba
- •Лабораторная работа № 3. Линейный алгоритм. Стандартные функции vba
- •Математические функции
- •Функции преобразования данных
- •Функции даты и времени
- •Строковые функции
- •Задачи для самостоятельного решения
- •Лабораторная работа № 4. Циклический алгоритм. Операторы цикла
- •Лабораторная работа № 5. Алгоритм ветвления. Оператор условного перехода
- •Лабораторная работа № 6. Массивы
- •Задачи для самостоятельного решения
- •Лабораторная работа № 7. Подпрограммы. Процедуры и функции
- •Лабораторная работа № 8. Генератор случайных чисел. Метод Монте-Карло
- •Лабораторная работа № 9. Вычислительный эксперимент. Модели случайных блужданий
- •Лабораторная работа № 10. Численные методы решения уравнений вида
- •Приложение Работа с файлами. Инструкция Print #
- •Литература
- •Ходанович Александр Иванович
Лабораторная работа № 8. Генератор случайных чисел. Метод Монте-Карло
Каждый, кто использует арифметические методы генерирования случайных чисел, безусловно, грешит.
Джон фон Нейман
(JOHN VON NEUMANN) (1951)
Теоретические сведения
Существует много способов генерации на компьютере случайных чисел. Наиболее распространенным является генератор равномерно распределенных случайных чисел на единичном интервале (линейный конгруэнтный генератор, Лемер, 1948 г.), входящий в стандартные библиотеки многих систем программирования.
Рис. 1. «Шум» генератора «случайных» чисел
Заметим,
что математическое ожидание и дисперсия
случайной величины равномерно
распределенной на интервале (0,1)
соответственно равны
,
.
Во многих задачах численного моделирования возникает необходимость в генераторах случайных чисел с неравномерной плотностью вероятности (неравномерное распределение). Часто удобным бывает простой одномерный генератор Метрополиса. Предположим, мы хотим сгенерировать случайные переменные с произвольной плотностью вероятности p(x).
В методе Метрополиса
(1953 г.) моделируется «случайное блуждание»
точек {
},
распределение которых после большого
числа шагов асимптотически стремится
к распределению вероятности p(x).
Случайное блуждание определяется
заданием вероятности перехода
от
одного значения
к другому
,
для того, чтобы обеспечить сходимость
к функции распределения. Для этого
достаточно удовлетворить условию
«детального баланса»
.
Простейший вариант вероятности перехода
можно представить в виде:
Для гауссова
(нормального) распределения
,
одним из критериев необходимой статистики
может быть выполнение условий
и
.
Причем, для генерации чисел с заданной
плотностью распределения предполагается
вычисление интегральной вероятности
и численное решение в общем случае
уравнения
,
где
.
В эксперименте нельзя заранее уверенно предвидеть, какое из возможных значений примет случайная величина в итоге испытания; это зависит от многих случайных причин, учесть которые невозможно. Казалось бы, поскольку о каждой случайной величине мы располагаем в этом смысле весьма скромными сведениями, то вряд ли можно установить закономерности поведения и суммы достаточно большого числа случайных величин. Но, оказывается, что при некоторых сравнительно широких условиях суммарное поведение достаточно большого числа случайных величин почти утрачивает случайный характер и становится закономерным.
Для практики очень важно знание условий, при выполнении которых совокупное действие очень многих случайных причин приводит к результату, почти не зависящему от случая, так как позволяет предвидеть ход явлений. Эти условия и указываются в теоремах, носящих общее название закона больших чисел. К ним относятся теоремы Чебышева и Бернулли. Теорема Чебышева является наиболее общим законом больших чисел, теорема Бернулли – простейшим.
Сущность теоремы Чебышева состоит в том, что хотя отдельные независимые случайные величины могут принимать значения, далекие от своих математических ожиданий, среднее арифметическое достаточно большого числа случайных величин с большой вероятностью принимает значения, близкие к определенному постоянному числу, а именно к математическому ожиданию. Иными словами, отдельные случайные величины могут иметь значительный разброс, а их среднее арифметическое рассеянно мало.
Таким образом, нельзя уверенно предсказать, какое возможное значение примет каждая из случайных величин, но можно предвидеть, какое значение примет их среднее арифметическое. Теорема Чебышева справедлива не только для дискретных, но и для непрерывных случайных величин.
Обычно для измерения некоторой физической величины производят несколько измерений и их среднее арифметическое принимают в качестве искомого.
К физическим величинам можно применить теорему Чебышева, если: 1) они попарно независимы, 2) имеют одно и то же математичес-кое ожидание, 3) дисперсии их равномерно ограничены.
Первое требование выполняется, если результат каждого измерения не зависит от результатов остальных. Второе требование выполняется, если измерения произведены без систематических (одного знака) ошибок. В этом случае математические ожидания всех случайных величин одинаковы. Третье требование выполняется, если прибор обеспечивает определенную точность измерений. Хотя при этом результаты отдельных измерений различны, но рассеяние их ограничено.
Если
все указанные требования выполнены, мы
вправе применить к результатам измерений
теорему Чебышева: при достаточно большом
п
вероятность
неравенства
.
Другими
словами, при достаточно большом числе
измерений почти достоверно, что их
среднее арифметическое как угодно мало
отличается от истинного значения
измеряемой величины.
Итак, теорема Чебышева указывает условия, при которых описанный способ измерения может быть применен. Однако ошибочно думать, что, увеличивая число измерений, можно достичь сколь угодно большой точности. Дело в том, что сам прибор (методика эксперимента) дает показания с конечной точностью ограничивающей точность эксперимента.
Пусть
производится п
независимых
испытаний, в каждом из которых вероятность
появления события А
равна
р.
Можно
ли предвидеть, какова примерно будет
относительная частота появлений события?
Положительный ответ на этот вопрос
дает теорема, доказанная Якобом
Бернулли (опубликована в 1713 г.), которая
получила название «закона больших
чисел» и положила начало теории
вероятностей как науке. Доказательство
Бернулли было сложным; простое
доказательство дано П.Л.Чебышевым в
1846 г. Итак, теорема Бернулли утверждает,
что сходится по вероятности
при
.
Другими словами, например, можно
предсказать относительную частоту
падение тела в заданную точку при
случайных порывах ветра обобщая решения
типовых физических задач.
Среди распространенных вероятностных математических методов отметим методы Монте-Карло к изучению которых приводит проблемная задача: каким образом можно с помощью кучи камней измерить площадь пруда? Предположим, что пруд расположен в центре поля известной площади S. Бросайте камни произвольным, случайным образом так, чтобы они падали в случайных точках в пределах поля, и считайте количество всплесков при попадании камней в пруд. Площадь пруда приблизительно равна площади поля, умноженной на долю камней, попавших в пруд. Эта простая процедура является примером статистического метода Монте-Карло, названного в честь известного казино в Монако.
Поясним подробнее суть этого метода. Представим себе прямоугольник высотой H и длиной b-a такой, что функция f(x) лежит внутри него (рис. 2).
Генерируем n пар
случайных чисел
,
удовлетворяющих условиям
и
.
Доля точек
,
которые удовлетворяют условию
представляют собой оценку отношения
интеграла от функции f(x)
к площади прямоугольника. Отсюда оценка
площади криволинейной трапеции Sn
в методе
"проб и ошибок" определяется
выражением
,
где m
- число "всплесков" или точек,
лежащих под кривой, n_
общее количество точек (испытаний), а
S_
площадь прямоугольника.
Другая разновидность
метода Монте-Карло основывается на
теореме "о среднем" (интеграл
функции определяется средним значением
подынтегральной функции на отрезке
.
) Для вычисления этого среднего возьмем
не с постоянным шагом, а случайным
образом и произведем выборку значений
f(x).
Оценка одномерного интеграла методом "выборочного среднего" выражается формулой
,
Рис. 2. Геометрия метода Монте-Карло
где
_
случайные числа, равномерно распределенные
на отрезке интегрирования (a,b)-
;
random-
функция генератора "случайных"
чисел, равномерно распределенных на
единичном отрезке (0,1),
предусмотренном в различных системах
программирования; n_
число испытаний.
В качестве примера расчета интегралов этим методом рассмотрим нахождение центра масс и момента инерции твердых тел. Предположим, что масса распределена непрерывно с известной плотностью.
Если рассматривать
двухмерные фигуры, то масса малого
элемента площади dxdy
равна
,
а полная масса тела равна
.
Пределы интегрирования определяются геометрией тела. Аналогично можно выразить координаты центра масс X, Y:
и
.
Если тело вращается вокруг оси z,
то его момент инерции равен
.
Вычисление приведенных интегралов методом "выборочного среднего" осуществляется просто. Например, обобщение метода выборочного среднего для вычисления момента инерции имеет вид:
,
где
_
оценка для n
испытаний,
_
независимые случайные числа из области
интегрирования S.
Разновидностью метода Монте-Карло является метод «иглы Бюффона» применимый в исторической вероятностной задаче Бюффона: требуется найти длину «иглы» многократным случайным подбрасыванием.
Sub Buffon()
Dim res, m, x As Double
n = 1000
m = 0
P = Range("H3").Value ‘ Ввод числа из ячейки Excel
For i = 1 To n
x = Rnd
fi = P * Rnd
If x <= Sin(fi) Then m = m + 1
Next i
res = P * m / n
MsgBox res
Range("H12").Value = res ' вывод в ячейку Excel
End Sub
В другой формулировке задачи при известной длине «иглы» определяется число .
а) б) в)
Рис. 3. Геометрия задачи «Игла Бюффона»
Будем бросать
«иглу» на параллельные линии ширины
2a>2L,
где L-
длина иглы. Причем, положении «иглы»
определим двумя случайными величинами
;
х-
расстояние от центра «иглы» до ближайшей
линии,
-
угол наклона (рис. 3 а).
Из геометрии задачи
следует условие попадания на линию
.
Заметим, что геометрическая вероятность
определяется отношением площадей
(рис. 3 б).
Учитывая, что
,
находим число
,
где m-
число попаданий на линию (под график
синуса), n-
общее число случайных бросков.
Задачи для самостоятельного решения
1. Определите число с помощью «иглы Бюффона» генерируя случайные числа на плоскости ( ,х) при a=L=1 (рис. 3в). Оцените точность, время счета и оптимальное число бросков (испытаний) для минимальной погрешности.
2. Вычислите площадь единичного круга методом Монте-Карло. Оцените точность, время счета и оптимальную выборку случайных чисел для минимальной погрешности.
3. Вычислите массу,
центр масс и момент инерции стержня с
периодически изменяющейся плотностью
.
Данные введите самостоятельно. Проверьте
правильность решения.
4. Исследуйте статистические свойства стандартного генератора случайных чисел, определите среднее и дисперсию в произвольной выборке чисел. Проверьте закон больших чисел.