Главная > Математика > Численные методы для ПЭВМ на языках Бейсик, Фортран и Паскаль
<< Предыдущий параграф
Следующий параграф >>
<< Предыдущий параграф Следующий параграф >>
Макеты страниц

5.10. Методы Монте-Карло

Вычисление кратных интегралов можно осуществить повторным применением алгоритмов и программ, рассмотренных в предыдущих разделах. Однако с повышением кратности интегралов резко возрастает объем вычислительной работы. Методы статистических испытаний (методы Монте-Карло) свободны от этого недостатка, хотя и обеспечивают сравнительно невысокую точность. С различными вариантами методов Монте-Карло, их теоретическим обоснованием можно ознакомиться по книге [54].

Рис. 5.9. Метод Монте-Карло (вариант 1)

Здесь мы рассмотрим два варианта метода Монте-Карло для вычисления интегралов. Первый способ можно интерпретировать как статистический вариант метода прямоугольников (рис. 5.9), когда в качестве узла берется случайное число, равномерно распределенное на интервале интегрирования Вследствие случайности узла погрешность интеграла также будет носить случайный характер. Проведя вычислений со случайными узлами усредним результат, который и принимаем за приближенное значение интеграла,

Погрешность интеграла будет уменьшаться с ростом числа испытаний по закону [54].

Формула (5.56) обобщается на кратные интегралы

где -мерный объем области интегрирования. Число узлов, в которых придется вычислить подынтегральную функцию, будет пропорционально независимо от кратности интеграла.

Во втором варианте метода Монте-Карло интеграл приводится к виду

где на интервале [0, 1]. Тогда две случайные величины можно рассматривать как координаты точек в единичном квадрате (рис. 5.10). При равномерном распределении точек в квадрате за приближенное значение интеграла принимается отношение количества точек попавших под кривую к общему числу испытаний

Этот алгоритм также обобщается на кратные интегралы.

Рис. 5.10. Метод Монте-Карло (вариант 2)

В программах 5.9 реализованы два варианта метода Монте-Карло для вычисления интеграла Бесселя (5.11).

В основном блоке каждой из программ в диалоговом режиме вводится номер варианта (переменная 1), число испытаний порядок и аргумент функции Бесселя (переменные . Подынтегральная функция лежит на интервале поэтому, когда функция отрицательна, во втором варианте накопленной суммы точек вычитается очередная точка, попавшая под функцию. Использование для этого знаковой функции позволило сократить количество условных операторов.

В качестве датчика псевдослучайных чисел в программе используется стандартная функция Бейсика генерирующая равномерно распределенные числа на интервале [0, 1]. Для перехода к интервалу интегрирования используется линейное преобразование Так как результат, выдаваемый датчиком, не зависит от аргумента X, то в программе он взят постоянным, равным единице.

В программе для генерации случайных чисел использована стандартная функция аргументы которой выбираются нулевыми при первом обращении к программе. Выбор начальных значений позволяет получить повторяемость результатов при разных запусках программы. Для счетчика числа испытаний выбрана вещественная переменная вследствие малого диапазона целых чисел.

В языке Паскаль отсутствует стандартный датчик случайных чисел, поэтому в программе используется функция из системной библиотеки Фортрана. В программе датчик введен в виде функции со служебным словом FORTRAN. Подобным же способом используется стандартная функция Фортрана В таких конструкциях необходимо выполнять условие,

чтобы параметры функции были типа

В заключение приведем контрольные результаты для программ 5.9. При по программе получены значения интеграла для первого варианта метода для второго варианта - Программы при тех же параметрах дают значения Различия результатов обусловлены разной реализацией датчиков случайных чисел в системах Бейсик и Фортран. Заметим, что ширина доверительного интервала погрешности сравнима с величиной Точное значение интеграла

(см. скан)

(см. скан)

<< Предыдущий параграф Следующий параграф >>
Оглавление