Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Программная реализация метода




Математическое описание метода.

Метод Монте-Карло состоит в том, что рассматривается некоторая случайная величина ξ, математическое ожидание которой равно искомой величине z, т.е.

Осуществляется серия n независимых испытаний, в результате которых получается (генерируется) последовательность n случайных величин : , , …, и по совокупности этих значений приближенно определяется искомая величина, т.е.

.

Интеграл же может быть вычислен как математическое ожидание некоторой случайной величины ξ, которая определяется независимыми реализациями η i случайной величины ηс равномерным законом распределения. Двукратные интегралы вычисляются следующим образом:

, (1)

где , – независимые реализации равномерно распределенных на величин.

Для использования метода Монте-Карло при вычислении определенных интегралов, как и в других его приложениях, необходимо вырабатывать последовательности случайных чисел с заданным законом распределения. Существуют различные способы генерирования таких чисел. В настоящее время наиболее распространенный способ выработки случайных чисел на ЭВМ состоит в том, что в памяти хранится некоторый алгоритм выработки таких чисел по мере потребности в них. Поскольку эти числа генерируются по наперед заданному алгоритму, то они не совсем случайны (псевдослучайны), хотя и обладают свойственными случайным числам статистическими характеристиками. То есть случайные величины, равномерно распределенные на отрезке , в ЭВМ задаются с помощью специальных программ – генераторов псевдослучайных чисел.

Алгоритм метода в программе:

 

1. Ввод количества испытаний n.

2. Запустить генератор случайных чисел.

3. Определение общих пределов интегрирования.

4. Случайным образом (с учетом общих пределов интегрирования) генерировать значения x и y.

5. Если значения x и y лежат в текущих пределах интегрирования, то к значению интеграла прибавить значение функции при этих значениях.

6. Пункты 4 и 5 повторить n раз.

7. Окончательно полученную сумму (из формулы 1) перемножить на оставшиеся части формулы (1) для получения значения интеграла.

 

Описание основных значений в программе.

 

n Количество испытаний
DInt Основная подпрограмма
F Функция для вычисления значений точек подынтегральной функции
x, y Аргументы функции
S Текущее значение суммы (интеграла)
Ax, Ay, Bx, By Пределы интегрирования
i Счетчик

 

В программе MonteKarlo используются стандартные модули WinCrt, Strings. В программе MonteKarlo описан метод Монте-Карло, который осуществляется с помощью функций: function F(x,y: real): real; - расчет значения функции и function DInt(A: real; n: longint): real; - вычисление двойного интеграла.

 

Инструкция по работе с программой.

 

Для начала работы программы запустить файл MonteKarlo.pas. Код программы.

 

program MonteKarlo;

uses WinCrt,Strings;

 

{Расчет значения функции}

function F(x,y: real): real;

begin

F:= exp(x+y)+exp(x-y)*sin(x);

end;

 

{Подпрограма вычисления двойного интеграла}

function DInt(n: longint): real;

var

S, x, y, Ax, Ay, Bx, By: real;

i: longint;

begin

randomize;

Ax:= 0; Bx:= 4; Ay:= 1; By:=5;

S:=0;

for i:= 1 to n do begin

x:= Ax+random*(Bx-Ax);

y:= Ay+random*(By-Ay);

if ((x>=0) and (x<=4))and((y>=1) and (y<=5)) then S:= F(x,y)+S;

end;

DInt:= (Bx-Ax)*(By-Ay)*S/n;

end;

 

var

a: real;

n: longint;

 

BEGIN

StrCopy(WindowTitle, 'Программа вычисления двукратного интеграла методом Монте-Карло');

ClrScr;

WriteLn;

WriteLn(' 5 4');

WriteLn(' / / ');

WriteLn(' Интеграл | | (exp(x+y)+exp(x-y)*sin(x)dxdy');

WriteLn(' / / ');

WriteLn(' 1 0');

WriteLn;

WriteLn;

WriteLn;

Write(' Введите количество вычисляемых значений подынтегральной функции n = ');

ReadLn(n);

WriteLn;

WriteLn;

WriteLn(' Подожтите пожалуйста некоторое время, пока программа произведет расчеты...');

WriteLn;

WriteLn;

WriteLn(' Результаты расчета:');

WriteLn;

WriteLn(' Значение интеграла I = ',DInt(n):10:4);

ReadKey;

DoneWinCrt;

END.

 

Запустите программу меню Run Run или Ctrl+F9, перед вами появится окно:

 

 

 

Необходимо ввести количество испытаний n. После этого будет получен результат.

Результат программы.





Поделиться с друзьями:


Дата добавления: 2016-07-29; Мы поможем в написании ваших работ!; просмотров: 440 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Самообман может довести до саморазрушения. © Неизвестно
==> читать все изречения...

2513 - | 2360 -


© 2015-2024 lektsii.org - Контакты - Последнее добавление

Ген: 0.009 с.