Алгоритм интегрирования методом Монте-Карло для определенного интеграла

  • Вид работы:
    Курсовая работа (т)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    104,31 Кб
  • Опубликовано:
    2013-11-08
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Алгоритм интегрирования методом Монте-Карло для определенного интеграла

Содержание

Замечания преподавателя

Введение

. Некоторые сведения теории вероятностей

.1 Математическое ожидание, дисперсия

.2 Точность оценки, доверительная вероятность

.3 Нормальное распределение

. Сущность метода Монте-Карло

.1 Генераторы случайных чисел

. Практическая часть

.1 Задание

.2 Алгоритм интегрирования методом Монте-Карло для определенного интеграла

.3 Вычисление кратных интегралов

.4 Описание пользовательского интерфейса

Заключение

Список литературы

Приложение А

Приложение Б

Введение

Метод Монте-Карло - это численный метод решения математических задач при помощи моделирования случайных величин.

Возникновение идеи использования случайных явлений в области приближённых вычислений принято относить к 1878 году, когда появилась работа Холла об определении числа p с помощью случайных бросаний иглы на разграфлённую параллельными линиями бумагу. Существо дела заключается в том, чтобы экспериментально воспроизвести событие, вероятность которого выражается через число p, и приближённо оценить эту вероятность.

Датой рождения метода Монте-Карло принято считать 1949 г., когда появилась статья под названием «Метод Монте-Карло» (Н. Метрополис, С. Улам). Создателями этого метода считают американских математиков Дж. Неймана и С. Улама. В нашей стране первые статьи были опубликованы в 1955-56 гг. (В.В. Чавчанидзе, Ю.А. Шрейдер, В.С. Владимиров).

С того времени накопилась обширная библиография по методу Монте-Карло. Даже беглый просмотр названий работ позволяет сделать вывод о применимости метода Монте-Карло для решения прикладных задач из большого числа областей науки и техники.

Первоначально метод Монте-Карло использовался главным образом для решения задач нейтронной физики, где традиционные численные методы оказались малопригодными. Далее его влияние распространилось на широкий класс задач статистической физики, очень разных по своему содержанию.

Метод Монте-Карло оказал и продолжает оказывать существенное влияние на развитие методов вычислительной математики (например, развитие методов численного интегрирования) и при решении многих задач успешно сочетается с другими вычислительными методами и дополняет их. Его применение оправдано в первую очередь в тех задачах, которые допускают теоретико-вероятностное описание. Это объясняется как естественностью получения ответа с некоторой заданной вероятностью в задачах с вероятностным содержанием, так и существенным упрощением процедуры решения.

Однако до появления ЭВМ этот метод не мог найти сколько-нибудь широкого применения, так как моделировать случайные величины вручную - очень трудоёмкая работа. Таким образом, возникновение метода Монте-Карло как весьма универсального численного метода стало возможным только благодаря появлению ЭВМ.

Название «Монте-Карло» происходит от города Монте-Карло в княжестве Монако, знаменитого своим игорным домом, а также одним из простейших механических приборов для получения случайных величин - рулеткой.

1.  Некоторые сведения теории вероятностей

.1 Математическое ожидание, дисперсия

Математическое ожидание - понятие среднего значения <#"650718.files/image001.gif"> или иногда  В статистике часто используют обозначение .Пусть задано вероятностное пространство <#"650718.files/image004.gif"> и определённая на нём случайная величина <#"650718.files/image005.gif">. То есть, по определению,  - измеримая функция <#"650718.files/image005.gif"> по пространству , то он называется математическим ожиданием, или средним значением и обозначается .


Если  - функция распределения <#"650718.files/image010.gif">.

Если  - дискретная случайная величина <#"650718.files/image011.gif">,

то прямо из определения интеграла Лебега <#"650718.files/image012.gif">.

Математическое ожидание абсолютно непрерывной случайной величины <#"650718.files/image013.gif">, равно

.

Пусть  - случайный вектор. Тогда по определению

,

то есть математическое ожидание вектора определяется покомпонентно.

Пусть  борелевская функция <#"650718.files/image018.gif"> имеет конечное математическое ожидание. Тогда для него справедлива формула:

,

если  имеет дискретное распределение;

,

если  имеет абсолютно непрерывное распределение.

Если распределение <#"650718.files/image021.gif"> случайной величины  общего вида, то

.

В специальном случае, когда , Математическое ожидание  называется k-тым моментом <#"650718.files/image025.gif">,
где  - случайные величины с конечным математическим ожиданием, а  - произвольные константы;

Математическое ожидание сохраняет неравенства, то есть если если  почти наверное <#"650718.files/image029.gif"> - случайная величина с конечным математическим ожиданием, то математическое ожидание случайной величины  также конечно, и более того

;

Математическое ожидание не зависит от поведения случайной величины на событии вероятности нуль, то есть если  почти наверное <#"650718.files/image032.gif">.

Математическое ожидание произведения двух независимых случайных величин  равно произведению их математических ожиданий

.

1.2    Точность оценки, доверительная вероятность

Точечной называют оценку, которая определяется одним числом. Интервальной называют оценку, которая определяется двумя числами - концами интервала. Интервальные оценки позволяют установить точность и надёжность оценок. Пусть, найденная по данным выборки, статистическая характеристика служит оценкой неизвестного параметра . Ясно, что тем точнее определяет параметр , чем меньше абсолютная величина разности . Другими словами, если d>0 и , то , чем меньше d, тем оценка точнее. Положительное число d характеризует точность оценки. Доверительным называют интервал , который покрывает неизвестный параметр с заданной надёжностью g. Доверительный интервал - термин, используемый в математической статистике <#"650718.files/image034.gif">

где параметр μ - математическое ожидание <#"650718.files/image035.gif">. Это может быть произвольная фигура, заданная графически или аналитически (связная или состоящая из нескольких частей). Пусть это будет фигура, заданная на рис. 1.1.

Рис. 1.1

Предположим, что эта фигура расположена внутри единичного квадрата. Выберем внутри квадрата  случайных точек. Обозначим через число точек, попавших внутрь фигуры . Геометрически видно, что площадь фигуры  приближенно равна отношению . Причем, чем больше число , тем больше точность этой оценки. Для того чтобы выбирать точки случайно, необходимо перейти к понятию случайная величина. Случайная величина непрерывная, если она может принимать любое значение из некоторого интервала .

Непрерывная случайная величина  определяется заданием интервала , содержащего возможные значения этой величины, и функции , которая называется плотностью вероятностей случайной величины (плотностью распределения ). Физический смысл  следующий: пусть - произвольный интервал, такой что , тогда вероятность того, что  окажется в интервале , равна интегралу:

 

Множество значений может быть любым интервалом (возможен случай ). Однако плотность  должна удовлетворять двум условиям:

)        плотность положительна:

;                                                                                          

) интеграл от плотности  по всему интервалу  равен 1

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

 

называется обычно интегралом вероятностей.

Согласно (1.1)

В интеграле сделаем замену переменной , тогда получим

,

Нормальные случайные величины очень часто встречаются при исследовании самых различных по своей природе вопросов.

Выбрав , , найдём . Следовательно,


Вероятность  настолько близка к 1, что иногда последнюю формулу интерпретируют так: при одном испытании практически невозможно получить значение , отличающееся от больше чем на .

Проводя большое количество опытов, и получая большое количество случайных величин можно воспользоваться центральной предельной теоремой теории вероятностей. Эта теорема впервые была сформулирована П. Лапласом. Обобщением этой теоремы занимались многие выдающиеся математики, в том числе П.Л. Чебышёв, А.А. Марков, А.М. Ляпунов. Её доказательство достаточно сложно.

Рассмотрим  одинаковых независимых случайных величин , так что распределения вероятностей этих величин совпадают. Следовательно, их математические ожидания и дисперсии также совпадают. Величины эти могут быть как непрерывными, так и дискретными.

Обозначим


Сумму всех этих величин обозначим через

Используя соотношения


получаем


Рассмотрим теперь нормальную случайную величину  с такими же параметрами: .В центральной предельной теореме утверждается, что для любого интервала  при больших


Смысл этой теоремы в том, что сумма  большого числа одинаковых случайных величин приближенно нормальна. На самом деле эта теорема справедлива при гораздо более широких условиях: все слагаемые не обязаны быть одинаковыми и независимыми; существенно только, чтобы отдельные слагаемые не играли большой роли в сумме. Эта теорема оправдывает часто встречающиеся нормальные случайные величины. В самом деле, когда встречается суммарное воздействие большого числа незначительных случайных факторов, результирующая случайная величина оказывается нормальной.

Используя эти данные из теории вероятностей можно перейти к описанию общей схемы метода Монте-Карло. Допустим, что требуется вычислить какую-то неизвестную величину . Попытаемся придумать такую случайную величину , чтобы . Пусть при этом .

Рассмотрим  независимых случайных величин  распределения которых совпадают с распределением . Если  достаточно велико, то, согласно центральной предельной теореме, распределение суммы  будет приблизительно нормальным с параметрами . Из (1.6) следует, что .

Последнее соотношение перепишем в виде:

                                          (1.7)

Это соотношение даёт и метод расчёта , и оценку погрешности.

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

.

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

Таблицы случайных чисел используют предпочтительно при расчётах вручную. Определяющую роль в этом играют два факта: 1) при использовании ЭВМ легче и удобней воспользоваться генератором случайных чисел, получаемых тут же, чем загружать из памяти значения таблицы, которая к тому же, будет занимать там место. 2) При подсчёте вручную нет необходимости использовать ЭВМ, так как часто необходимо выяснить лишь порядок искомой величины.

.1 Генераторы случайных чисел

Генераторы случайных чисел анализируют какой-либо процесс, доступный для них (шумы в электронных лампах, скачки напряжения) и составляют последовательность из 0 и 1, из которых составляются числа с определёнными разрядами, однако такой метод получения случайных величин имеет свои недостатки. Во-первых, трудно проверить вырабатываемые числа. Проверки приходится делать периодически, так как из-за каких-либо неисправностей может возникнуть так называемый дрейф распределения (нули и единицы в каком-либо из разрядов станут появляться не одинаково часто). Во-вторых, обычно все расчёты на ЭВМ проводятся несколько раз, чтобы исключить возможность сбоя. Но воспроизвести те же самые случайные числа невозможно, если их только не запоминать по ходу счёта. А если запоминать, то снова появляется случай таблиц.

Таким образом, самым эффективным способом получения случайных чисел - это использование псевдослучайных чисел.

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

Первый алгоритм для получения псевдослучайных чисел был предложен Дж. Нейманом. Он называется методом середины квадратов.

Пусть задано 4-значное число . Возведём его квадрат. Получим 8-значное число . Выберем 4 средние цифры этого числа и положим .Далее и т.д.

Но этот алгоритм не оправдал себя, так как получается слишком много малых значений. Поэтому были разработаны другие алгоритмы. Наибольшее распространение получил алгоритм, называемый методом сравнений (Д. Лемер): определяется последовательность целых чисел , в которой начальное число  задано, а все последующие числа  вычисляются по одной и той же формуле

 при                                                   (1.8)

По числам  вычисляются псевдослучайные числа

                                                                                        (1.9)

Формула (1.8) означает, что число  равно остатку, полученному при делении  на , такой остаток называют наименьшим положительным вычетом по модулю  Формулы (1.8), (1.9) легко реализовать на ЭВМ.

Достоинства метода псевдослучайных чисел довольно очевидны. Во-первых, на получение каждого числа затрачивается всего несколько простых операций, так что скорость генерирования случайных чисел имеет тот же порядок, что и скорость работы ЭВМ. Во-вторых, программа занимает не так много места в памяти. В-третьих, любое из чисел может быть легко воспроизведено. В-четвёртых, необходимо лишь один раз проверить «качество» такой последовательности, затем её можно много раз безбоязненно использовать при расчёте однотипных задач.

Единственный недостаток метода - ограниченность количества псевдослучайных чисел, так как если последовательность чисел  вычисляется на ЭВМ по формуле вида


то эта последовательность обязательно периодическая. Впрочем, для наиболее распространённых псевдослучайных чисел период столь велик, что превосходит любые практические потребности. Подавляющее большинство расчётов по методу Монте-Карло осуществляется с использованием псевдослучайных чисел.

Значения любой случайной величины можно получить путём преобразования значений одной какой-либо случайной величины. Обычно роль такой случайной величины играет случайная величина , равномерно распределённая в . Процесс нахождения значения какой-либо случайной величины  путём преобразования одного или нескольких значений  называется разыгрыванием случайной величины .

Допустим, что необходимо получать значения случайной величины , распределённой в интервале , с плотностью . Докажем, что значения можно находить из уравнения


т.е. выбрав очередное значение , надо решить уравнение (1.10) и найти очередное значение .

Для доказательства рассмотрим функцию

.

Из общих свойств плотности (1.2), (1.3) следует, что


Значит, функция  монотонно возрастает от 0 до 1, и любая прямая , где , пересекает график  в одной единственной точке, абсциссу которой мы и принимаем за . Таким образом, уравнение (1.10) всегда имеет одно и только одно решение.

Выберем теперь произвольный интервал , содержащийся внутри . Точкам этого интервала  отвечают ординаты кривой , удовлетворяющие неравенству .

Поэтому, если  принадлежит интервалу , то  принадлежит интервалу , и наоборот. Значит

Так как  равномерно распределена в , то

,

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

. Практическая часть

.1 Задание

Вычисление интегралов методом статистических испытаний.

.2 Алгоритм интегрирования методом Монте-Карло для определенного интеграла

Предположим, требуется вычислить определённый интеграл

Рассмотрим случайную величину , равномерно распределённую на отрезке интегрирования . Тогда  также будет случайной величиной, причём её математическое ожидание <#"650718.files/image119.gif">,

где  - плотность распределения случайной величины , равная  на участке .

Таким образом, искомый интеграл выражается как

.

Но матожидание случайной величины  можно легко оценить, смоделировав эту случайную величину и посчитав выборочное среднее.

Итак, бросаем  точек, равномерно распределённых на , для каждой точки  вычисляем . Затем вычисляем выборочное среднее:

.

В итоге получаем оценку интеграла:


Точность оценки зависит только от количества точек .

3.3 Вычисление кратных интегралов

Первый способ.

Пусть требуется вычислить кратный интеграл


по области G, лежащей в мерном единичном кубе

      

Выберем  равномерно распределённых на отрезке  последовательностей случайных чисел


Тогда точки можно рассматривать как случайные, равномерно распределённые в мерном единичном кубе.

Пусть из общего числа  случайных точек  точек попали в область G, остальные  оказались вне G. Тогда при достаточно большом  имеет место приближенная формула:


где под  понимается мерный объём области интегрирования. Если вычисление объёма  затруднительно, то можно принять , и для приближенного вычисления интеграла получим:


Указанный способ можно применить к вычислению кратных интегралов и для произвольной области , если существует такая замена переменных, при которой новая область интегрирования будет заключена в мерном единичном кубе.

Второй способ.

Если функция , то интеграл можно рассматривать как объём тела в мерном пространстве, т.е.

где область интегрирования  определяется условиями

Если в области  , то введя новую переменную , получим

 где область  лежит в единичном мерном кубе  Возьмём  равномерно распределенных на отрезке  случайных последовательностей


Составим соответствующую последовательность случайных точек  Пусть из общего числа случайных точек  точек принадлежат объёму , тогда имеет место приближенная формула


.4 Описание пользовательского интерфейса

Первая программа вычисляет пять интегралов с подынтегральными функциями x^2+2x+1,ln(x),log10(x),cos(x),sqrt(x).Пользователь задает верхнюю и нижнюю границу интегрирования и вводит количество случайных величин:

Рисунок 1 «Пример вычисления определенных интегралов»

Листинг программы представлен в Приложении А.

Вторая программа вычисляет двойной интеграл. Пользователь задает раницы интегрирования по х в интервале [0,1] и количество испытаний. Границы интегрирования по y заданы в программе: 0<y<2x-1:

Рисунок 2 «Пример вычисления двойного интеграла»

Листинг программы представлен в Приложении Б.

Заключение

Процесс выполнения данной работы представлял большой интерес и послужил хорошей возможностью для приобретения новых знаний и навыков, а также закрепления уже полученных.

Были рассмотрены основные свойства метода Монте-Карло и создана программа, показывающая возможности данного метода при использовании ЭВМ.

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

Список используемой литературы

1.  Бусленко Н.П. Метод статистического моделирования - М.: Статистика, 1970. - 112 с.

2.      Демидович Б.П., Марон И.А. Основы вычислительной математики. - М.: Наука, 1966. - 664 с.

.        Ермаков С.М. Метод Монте-Карло и смежные вопросы - М.: Наука, 1975-472 с.

Приложение А

Листинг программы для определенных интегралов

package monte;java.util.Random;java.lang.Math;java.util.Scanner;class Monte {static void main(String[] args) {sc = new Scanner(System.in);ran = new Random();a, b,N,m;k,j,n,n1,n2,n3,n4,I,I1,I2,I3,I4,X,j1,j2,j3,j4; n=0; n1=0; n2=0; n3=0; n4=0;

System.out.println("нижняя граница интеграла:");= sc.nextInt();.out.println("верхняя граница интеграла:");=sc.nextInt();.out.println("количество случайных величин:");

N=sc.nextInt();=N;(N>0)

{=ran.nextFloat();=a+(b-a)*k;=X*X+2*X+1;=n+j;=Math.log(X);=n1+j1;=Math.log10(X);=n2+j2;=Math.sqrt(X);=n3+j3;=Math.cos(X);=n4+j4;-;

}=(b-a)*(n/m);=(b-a)*(n1/m);=(b-a)*(n2/m);=(b-a)*(n3/m);=(b-a)*(n4/m);.out.println("оценка интеграла c подынтегральной функцией x^2+2x+1: "+I);

System.out.println("оценка интеграла c подынтегральной функцией log(x): "+I1);.out.println("оценка интеграла c подынтегральной функцией log10(x): "+I2);.out.println("оценка интеграла c подынтегральной функцией sqrt(x): "+I3);.out.println("оценка интеграла c подынтегральной функцией cos(x): "+I4);

}

}

Приложение Б

Листинг программы для кратных интеграловmonte.karlo1;

import java.security.SecureRandom;java.util.Random;java.util.Scanner;class MonteKarlo1 {static void main(String[] args) {x,j,y;float j1=0; int m=0;sc = new Scanner(System.in);ran = new Random();ran1 = new SecureRandom();.out.println("двойной интеграл(x^2+y^2)dxdy");

System.out.println("задайте область интегрирования по x от 0 до 1");.out.println("левая граница:");

float a = sc.nextFloat();.out.println("правая граница:");b = sc.nextFloat();.out.println("количество испытаний:");N= sc.nextInt();(N>0) {

x=ran.nextFloat();

y=ran1.nextFloat();( (x>=a) && (x<=b) )

{=m+1;( (y>=0) && (y<=2*x-1))

{=x*x+y*y;=j1+j;

} }-;

}I=j1/m;.out.println("оценка интеграла: "+I);

}}

Похожие работы на - Алгоритм интегрирования методом Монте-Карло для определенного интеграла

 

Не нашел материал для своей работы?
Поможем написать качественную работу
Без плагиата!