Моделирование случайности
Из сказанного выше следует, что математическая модель, являющаяся объектом компьютерного эксперимента, должна уметь учитывать случайный характер каких-то параметров изучаемого объекта. Француз Пьер Лаплас (1747-1827) является автором труда "Аналитическая теория вероятностей". Однако он - и автор принципа классического детерминизма (determino - определяю). Согласно этому принципу весь мир от молекулы до планет и живой природы устроен как гигантский часовой механизм. Только в силу того, что не до конца известны все связи между причинами и следствиями, приходится иногда пользоваться теорией вероятностей. Как только эти причины будут установлены, движение и молекул, и планет, и жизнь человека можно будет описать детерминистически, т. е. вполне определенно, без уступок случаю, например, с помощью большой системы дифференциальных уравнений. Однако мир оказался намного сложнее, чем представлял Лаплас. Действительно, некоторые явления позволяют описать их основные черты с помощью дифференциальных уравнений, связывающих скорости изменения изучаемых величин с самими величинами, построить, как говорят, их детерминистическую модель. Такие модели достаточно распространены в астрономии, физике, химии, биологии (движение крупных тел, химические реакции, развитие больших популяций и т. д.). Имеются также объекты, которые в равной степени проявляют и вероятностные, и детерминистические черты. В целом же для многих изучаемых явлений микропричин и следствий настолько много, что заранее выделить что-то главное и пренебречь чем-то второстепенным невозможно. Отдельные причинные проявления носят случайный, непредсказуемый характер. Нельзя предсказать, в какую минуту выйдет из строя эта деталь, что в этот день заболеет этот человек, что в этот момент произойдет распад данного атома. Здесь-то и используется теория вероятностей, которая на основе изучения всей массы отдельных проявлений позволяет находить закономерности там, где детерминистический подход бессилен. Теорию вероятностей иногда называют "знаменем математики ХХ века", говорят о "стохастической революции" (Stochasticos в пер. с греч. - "умеющий угадывать"). Итак, можно сделать вывод, что параметры изучаемого физического объекта носят непредсказуемый характер, являются случайными величинами в силу своей природы. Дополнительные погрешности вносят ошибки измерений параметров объекта, обусловленные несовершенством приборов измерения, а также сам компьютер, поскольку под хранение каждого числа отводится ограниченное количество ячеек памяти. Случайная величина - величина, принимающая в зависимости от случайного исхода испытаний то или иное значение с определенной вероятностью. Случайная величина может принимать конечную или бесконечную последовательность различных значений. В первом случае она называется дискретной, во втором - непрерывной. Случайное событие - событие, которое может при осуществлении данных условий как произойти, так и не произойти, и для которого имеется определенная вероятность наступления. Случайный процесс - процесс изменения во времени состояния тех или иных характеристик системы под влиянием различных случайных факторов. Отметим следующие свойства ряда случайных чисел, равномерно распределенных в интервале (0,1): 1) их среднее значение М стремится к значению 0,5; 2) дисперсия такого ряда D стремится к 1/12 = 0,083(3). В настоящее время основным средством исследования многих сложных природных, технологических и экономических систем является имитационное моделирование. Одной из важных составляющих имитационных моделей, придающими им сходство с реальными явлениями, является моделирование случайности путем генерации последовательностей псевдослучайные числа. Такие последовательности находят широкое применение также в численном анализе, тестировании алгоритмов, играх, сетевых протоколах и криптографии. Современные средства разработки программного обеспечения, как правило, содержат встроенный генератор случайных чисел (ГСЧ), формирующий псевдослучайные целые числа, равномерно распределѐнные в интервале от нуля до некоторого большого значения. В качестве метода получения случайной последовательности традиционно использовался линейный конгруэнтный метод либо его частный случай – мультипликативный метод [1]. Обращение к стандартному генератору в языке С/С++ может иметь вид int rand(), в результате чего получаем число от нуля до предопределенного большого числа RAND_MAX, которое для двухбайтового представления типа int.имеет величину 32767. В ряде языков программирования (Турбо- Паскаль, C/C++) имеется функция random(N), которая позволяет генерировать псевдослучайные целые числа в диапазоне от 0 до N-1. Если требуется получить такие числа в диапазоне от M до
N 1) .
Для генерации псевдослучайных вещественных чисел в диапазоне от 0 до 1 в языке С/С++ рекомендуется использовать выражение
RAND _ MAX .
A) float (rand ()) RAND _ MAX .
для этого можно использовать функцию randomize(), вызываемую перед циклом генерации псевдослучайной последовательности. Обычно для задания начального значения компилятор использует значение счѐтчика реального времени.
M * Rn int( M * Rn ) .
Качество получаемого ряда в значительной мере зависит от выбора коэффициента M (обычно достаточно большое целое число, например, 32767) и начального значения ряда R0.
Метод Монте-Карло (М-К)
X i
и принимают это значение в качестве оценки искомой величины, т. е. a X . Теория метода указывает, как наиболее целесообразно выбрать случайную величину X, как находить еѐ возможные значения.
Итак, пусть требуется вычислить S f ( x)dx a sin( x)dx . Мы знаем, что такой определѐнный 0 интеграл численно равен площади фигуры, образованной подынтегральной функцией f(x), участком оси абсцисс между пределами интегрирования a, b и вертикалями, восстановленными в точках a и b (рис. 2.3). Нахождение такой площади методом М-К производится следующим способом. Помещаем фигуру с искомой площадью внутрь фигуры, площадь которой S~ определяется заведомо просто, например, в прямоугольник. Далее генерируем случайным образом координаты достаточно большого количества N~ точек таким образом, чтобы эти точки попадали внутрь фигуры с площадью S~. В процессе генерации подсчитываем отдельно количество N точек, попадающих в искомую площадь (в данном случае – ниже функции f(x)). Теперь величину интеграла можно приближѐнно определить по формуле I S S~ N / N~ .
ввод числа испытаний N~
N= 0
повторить N~ раз
x = random y = random
y < sin(x)
Да Нет
N = N + 1
“Величина интеграла равна” N / N~
функция генерации псевдослучайной последовательности в диапазоне от 0 до 1) |