Теоретические сведения. Существует много способов генерации на компьютере случайных чисел
Существует много способов генерации на компьютере случайных чисел. Наиболее распространенным является генератор равномерно распределенных случайных чисел на единичном интервале (линейный конгруэнтный генератор, Лемер, 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: и . Вычисление приведенных интегралов методом " выборочного среднего" осуществляется просто. Например, обобщение метода выборочного среднего для вычисления момента инерции имеет вид: , где _ оценка для 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
|